Fixes unnecessary VM restart.
VM userdata is currently not returned by the API listVirtualMachine and task will always be marked as changed in has_changed(), which will result in an unnecessary VM restart if force=true.
Reported by @Mayeu
The vmid is no longer a required parameter
For the 'present' state:
If not set, the next available one will be fetched from the API
For the 'started', 'stopped', 'restarted' and 'absent' states:
If not set, the module will try to fetch it from the API based on the hostname
Inspired from the behavior of the proxmox_kvm module
Creation of a maintenance window returns a 201 (PagerDuty Developer documentation is unfortunately incorrect). Deleting a maintenance window returns a 204.
This whole module is really lacking in security guidelines, but
downloading RPMs via plain `http://` without gpg is quite bad. Let's
use `https://` for the EPEL examples for a start.
This change makes os_stack module idempotent. Otherwise, re-use of the
module fails with:
Error updating stack: ERROR: The Parameter (...) was not provided.
Fixes#3165.
* Moved JSON-RPC client IPAClient class to ansible.module_utils.ipa, which is extended by all ipa modules
* ipa_user: incorporate displayname and userpassword attributes in module_user
* ipa_user: capitalized "I" in comment
* ipa_user: updated get_ssh_key_fingerprint to include possibility of the uploaded SSH key including user@hostname comment, which also appears in the queried fingerprint. This fixes a mismatch in the calculated and queried SSH key fingerprint in the user_diff calculation when the user already exists.
* ipa_hbacrule: ipaenabledflag must be 'TRUE' or 'FALSE', not 'NO'
* ipa_sudorule: ipaenabledflag must be 'TRUE' or 'FALSE', not 'NO'
* Add author to files missing it
* Fix kibana
* More native YAML
* More native YAML
* More native YAML
* More native YAML. Now only languages/ is missing
* Use native yaml sintax for packaging/languages as well
* Some more and quote fixes
* Fix wrong grouping
The policycoreutils python API for RHEL6 and RHEL7 are sufficiently
different, requiring some additional definitions and specific conversion
that works on old and new implementations.
It also implements a fix for non-ascii error messages (like when using a
French locale configuration).
This fixes#3551.
* Added new option to select the active a10 partition
* added version_added to the description of the new option
* added RETURN documentation
* fixed indents
* Removed empty cases, removed unneeded aliases
* removed artifacts from merging
* updated version_added to 2.3
* removed host, username and password option
* removed write_config and validate_certs documentation
* add a10_server_axapi3 module
* added return documentation
* modified a10_server_axapi3.py per feedback
* fixed line 60 s/action/operation/
* modified a10_server_axapi3.py per feedback
* modified a10_server_axapi3.py per feedback
* corrected YAML format error in documentation
* removed slp_server_ip and slp_server check in code since the arguments are labeled as required, per feedback
* modified: a10_server.py
modified: a10_service_group.py
modified: a10_virtual_server.py
Changed main() block, restricted import to only functions used.
* removed space for main() to be last line
* removed invalid lines
* Modified Documentations for a10_server.py, a10_service_group.py, a10_virtual_server.py
* Take out alias:[] and choices:[] in Documentation from a10_service_group.py and a10_virtual_server.py since they are now the default
* deleted a10_server.py, a10_service_group.py, a10_virtual_server.py
* deleted 'version_last_modified' line in Documentation across a10_server.py, a10_service_group.py and a10_virtual_server.py as they were added in error, change validate_certs version_added in a10_server.py
* added newline after main()
* added newline after main() for a10_server_axapi3.py
* Create `serverless` module for handling deploys on the Serverless Framework
* fix interpreter line
* Successfully exit when a stage is already absent
Both the `homebrew` and `homebrew_cask` modules iterate over
dictionaries using `iteritems`. This is a Python 2-specific method whose
behavior is similar to `items` in Python 3+. The `iteritems` function in
the six library was designed to make it possible to use the correct
method.
Traceback:
Traceback (most recent call last):
File \"/tmp/ansible_d28_6uwl/ansible_module_make.py\", line 153, in <module>
main()
File \"/tmp/ansible_d28_6uwl/ansible_module_make.py\", line 119, in main
rc, out, err = run_command(base_command + ['--question'], module, check_rc=False)
File \"/tmp/ansible_d28_6uwl/ansible_module_make.py\", line 79, in run_command
return rc, sanitize_output(out), sanitize_output(err)
File \"/tmp/ansible_d28_6uwl/ansible_module_make.py\", line 95, in sanitize_output
return output.rstrip(b(\"\\r\\n\"))
TypeError: rstrip arg must be None or str
There is also a six.iteritems issue, fixed using six.
* gluster_volume: Fixes issue when creating a new volume failing due to peers not being present. The peers which are not 'localhost' should invoke wait_for_peer, but the find method returns -1 (not 0) on non-localhost peers.
By default, sparse option is true in ovirt. So the raw disk
creation in a block storage domain will fail with error "Disk
configuration (RAW Sparse) is incompatible with the storage domain
type".
The commit adds sparse option where it is send as False when
format is raw and True when format is qcow2
* New module proxmox_kvm
* fixed qxl value vor vga param
> | Name | Type | Format | Description |
> |------|------|--------|-------------|
> | vga | enum | std \| cirrus \| vmware \| qxl \| serial0 \| serial1 \| serial2 \| serial3 \| qxl2 \| qxl3 \| qxl4 | Select the VGA type. If you want to use high resolution modes (>= 1280x1024x16) then you should use the options 'std' or 'vmware'. Default is 'std' for win8/win7/w2k8, and 'cirrus' for other OS types. The 'qxl' option enables the SPICE display sever. For win* OS you can select how many independent displays you want, Linux guests can add displays them self. You can also run without any graphic card, using a serial device as terminal. |
* Fix create_vm() fail on PV 4.3
* Set default for force as null in doc
* proxmox_kvm: revision fixes
* proxmox_kvm: more revision fixes
* Fix indentation
* revision fixes
* Ensure PEP-3110: Catching Exceptions
* KeyError, to KeyError as -- PEP-3110: Catching Exceptions
* Fix Yaml document syntax; Notes: => Notes -
* Refix documentation issue
* Fix Documentation
* Remove Notes: in description
* Add current state and it return value
* Update documentation
* fixed local variable 'results' referenced before assignment
* Fix fixed local variable 'results' referenced before assignment
* minor fixes in error messages
* merge upstream/devel int devel
* minor fixes in error messages
* Fix indentation and documentation
* Update validate_certs description
* translate() has a different api for text vs byte strings
* maketrans must be imported from a different location on py2 vs py3
Since this is such a small string outside of a loop we don't have to
worry too much about speed so it's better to have a single piece of code
that works on both py2 and py3
Fixes#3249
The python-consul library already supports this, so it is just a simple
case of enablement.
This does not break the current logic in `add` of parsing as a check,
then parsing as a service if that fails… because service_name is
mandatory on a service registration and is invalid on a check
registration.
* ipa_group: Fix: 'list' object has no attribute 'get'
* ipa_hbacrule: Fix: 'list' object has no attribute 'get'
* ipa_host: Fix: 'list' object has no attribute 'get'
* ipa_hostgroup: Fix: 'list' object has no attribute 'get'
* ipa_role: Fix: 'list' object has no attribute 'get'
* ipa_sudocmd: Fix: 'list' object has no attribute 'get'
* ipa_sudocmdgroup: Fix: 'list' object has no attribute 'get'
* ipa_sudorule: Fix: 'list' object has no attribute 'get'
* ipa_user: Fix: 'list' object has no attribute 'get'
* ipa_sudorule: Fix: invalid 'cn': Only one value is allowed
* ipa_hostgroup: module returns changed if assigned hosts or hostgroups are not in lowercase
* extra detail on which step triggered 'change', detect and handle powershell mishandling nssm's unicode as utf8
* Simpler handling of nssm output encoding
Thanks @nitzmahone for a cleaner way to control PowerShell's behavior
While I still have no idea why or how the `map` call is being swapped out while still running in python 2.7, this change will fix the following error, as well as improve py3 compatibility.
* Add FreeIPA modules
* Update version_added from 2.2 to 2.3
* ipa_*: Use Python 2.4 syntax to concatenate strings
* ipa_*: Replace 'except Exception as e' with 'e = get_exception()'
* ipa_*: import simplejson if json can't be imported
* ipa_hbacrule: Fix: 'SyntaxError' on Python 2.4
* ipa_sudorule: Fix: 'SyntaxError' on Python 2.4
* ipa_*: Fix 'SyntaxError' on Python 2.4
* ipa_*: Import get_exception from ansible.module_utils.pycompat24
* Add FreeIPA modules
* Update version_added from 2.2 to 2.3
* ipa_*: Fix 'SyntaxError' on Python 2.4
* ipa_*: Replace Python requests by ansible.module_utils.url
* ipa_*: Replace Python requests by ansible.module_utils.url
* ipa_*: Add option validate_certs
* ipa_*: Remove requests from Ansible module documentation requirements
* ipa_sudorule: Remove unnecessary empty line
* ipa_sudorule: Remove markdown code from example
* ipa_group: Add choices of state option
* ipa_host: Rename options nshostlocation to ns_host_location, nshardwareplatform to ns_hardware_platform, nsosversion to ns_os_version, macaddress to mac_address and usercertificate to user_certificate and add aliases to be backward compatible
* Return actual queue attributes with result
Previously this was only returning the desired queue attributes, and not even returning the QueueARN for use elsewhere. Now it will return "results.attributes" that is retrieved with boto's get_queue_attributes().
* update return structure to reflect current SQS config; add documentation of return values
* Remove redundancy from if/else statement
Added support to explicitly manage task definitions be revision. If the
revision expectations of the ansible task cannot be met, an error is
thrown.
If revision is not explicitly specified, enhanced module to be
idempotent with respect to task definitions. It will search for an
active revision of the task definition that matches the containers and
volumes specified. If none can be found, a new revision will be created.
Currently <active> tag is passed within the disk element which is
incorrect. As a result, disk will remain inactive even though the
default option is true.
In Zabbix, the visible name defaults to the hostname. This is not very
useful if you try to manage vmware VMs as the so called host_name within
zabbix must be set to the vcenter UUID.
This patch allows you to provide an alias which will be shown with
zabbix. If its not supplied it will default to host_name.
* Adding support for proxysql
* Moved and restricted imports, updated exception handling
* Updated version_added, and mysqldb_found constant name
* Removed unnecessary parentheses
In dnf, environment groups are separate from groups. Need to handle
them separately when calling the API.
Fixes#2178
After upstream review, hande dnf-2.0 mandatory packages in groups
If mandatory packages in a group are not installed, a group will report
failure. Fix this by catching the error and reporting after trying
to install the other packages and groups in the transaction.
* dnf: fix compatibility with DNF 2.0
* Reimplement (copy) old dnf.cli.commands.parse_spec_group_file(),
upstream uses argparse since 2.0.
* add_remote_rpm() has been changed to the add_remote_rpms()
Closes: https://github.com/ansible/ansible-modules-extras/issues/3310
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
* fixup! dnf: fix compatibility with DNF 2.0
This module aims to allow a user to manage the lifecycle of OpenSSL
private keys. Internally it relies on the pyOpenSSL python library
to interact with openssl.
A user is able to specify :
* key size (via `size` parameter)
* key algorithm (via `type` parameter)
* key location (via `path` parameter)
The most simple use case is:
```
- name: Generate ansible.com.pem SSL private key
openssl_privatekey: name=ansible.com.pem
path=/etc/ssl/private
```
A user can speficy more settings:
```
- name: Generate ansible.com.pem SSL private key
openssl_privatekey: name=ansible.com.pem
path=/etc/ssl/private
size=2048
type=DSA
```
A user can also force the regeneration of an SSL key:
```
- name: Generate ansible.com.pem SSL private key
openssl_privatekey: name=ansible.com.pem
path=/etc/ssl/private
force=true
```
* Changed default deployment mode to match with azure -cli behaviour. "Complete" mode by default is too dangerous.
* Set incremental as default behaviour for deployment mode.
This commit adds module settings for configuring TLS encyption on the
mqtt notification module. Previously there was no way to configure
sending the messages encrpyted to mqtt.
* Add initial support for using a cluster instead of an esxi hostname
* FindByInventoryPath doesn't always work, so implement a fallback method to match the path
Traceback (most recent call last):
File \"/tmp/ansible_ueg52c0b/ansible_module_blockinfile.py\", line 319, in <module>
main()
File \"/tmp/ansible_ueg52c0b/ansible_module_blockinfile.py\", line 259, in main
if line.startswith(marker0):
TypeError: startswith first arg must be bytes or a tuple of bytes, not str
Also clean imports while on it.
When using the `make:` extras module, often the action taken
by the Make target is large. It is useful, therefore, to see
the output that `make` had to std{out,err} during execution
even when the target did not fail.
Signed-off-by: Steve Kuznetsov <skuznets@redhat.com>
Fail with:
Traceback (most recent call last):
File \"/tmp/ansible_2rsl4fg1/ansible_module_pkgng.py\", line 353, in <module>
main()
File \"/tmp/ansible_2rsl4fg1/ansible_module_pkgng.py\", line 330, in main
_changed, _msg = install_packages(module, pkgng_path, pkgs, p[\"cached\"], p[\"pkgsite\"], dir_arg)
File \"/tmp/ansible_2rsl4fg1/ansible_module_pkgng.py\", line 161, in install_packages
old_pkgng = pkgng_older_than(module, pkgng_path, [1, 1, 4])
File \"/tmp/ansible_2rsl4fg1/ansible_module_pkgng.py\", line 121, in pkgng_older_than
while compare_version[i] == version[i]:
TypeError: 'map' object is not subscriptable
Fix an issue with _nic_to_public_ips_instance() function. There was an assumption in the code that the Public IP sits in the same resource group, this isn't always the case.