diff --git a/.azure-pipelines/azure-pipelines.yml b/.azure-pipelines/azure-pipelines.yml index 808c0a34ae..455d0659b4 100644 --- a/.azure-pipelines/azure-pipelines.yml +++ b/.azure-pipelines/azure-pipelines.yml @@ -51,7 +51,7 @@ variables: resources: containers: - container: default - image: quay.io/ansible/azure-pipelines-test-container:6.0.0 + image: quay.io/ansible/azure-pipelines-test-container:7.0.0 pool: Standard @@ -119,12 +119,12 @@ stages: nameFormat: Python {0} testFormat: devel/units/{0}/1 targets: - - test: 3.8 - test: 3.9 - test: '3.10' - test: '3.11' - test: '3.12' - test: '3.13' + - test: '3.14' - stage: Units_2_19 displayName: Units 2.19 dependsOn: [] @@ -134,7 +134,8 @@ stages: nameFormat: Python {0} testFormat: 2.19/units/{0}/1 targets: - - test: 3.9 + - test: 3.8 + - test: "3.11" - test: "3.13" - stage: Units_2_18 displayName: Units 2.18 @@ -146,6 +147,7 @@ stages: testFormat: 2.18/units/{0}/1 targets: - test: 3.8 + - test: "3.11" - test: "3.13" - stage: Units_2_17 displayName: Units 2.17 @@ -157,6 +159,7 @@ stages: testFormat: 2.17/units/{0}/1 targets: - test: 3.7 + - test: "3.10" - test: "3.12" ## Remote @@ -168,10 +171,10 @@ stages: parameters: testFormat: devel/{0} targets: - - name: Alpine 3.21 - test: alpine/3.21 - # - name: Fedora 41 - # test: fedora/41 + - name: Alpine 3.22 + test: alpine/3.22 + # - name: Fedora 42 + # test: fedora/42 - name: Ubuntu 22.04 test: ubuntu/22.04 - name: Ubuntu 24.04 @@ -190,10 +193,10 @@ stages: test: macos/15.3 - name: RHEL 10.0 test: rhel/10.0 - - name: RHEL 9.5 - test: rhel/9.5 - - name: FreeBSD 14.2 - test: freebsd/14.2 + - name: RHEL 9.6 + test: rhel/9.6 + - name: FreeBSD 14.3 + test: freebsd/14.3 - name: FreeBSD 13.5 test: freebsd/13.5 groups: @@ -208,8 +211,12 @@ stages: parameters: testFormat: 2.19/{0} targets: + - name: RHEL 9.5 + test: rhel/9.5 - name: RHEL 10.0 test: rhel/10.0 + - name: FreeBSD 14.2 + test: freebsd/14.2 groups: - 1 - 2 @@ -240,8 +247,8 @@ stages: parameters: testFormat: 2.17/{0} targets: - - name: FreeBSD 13.3 - test: freebsd/13.3 + - name: FreeBSD 13.5 + test: freebsd/13.5 - name: RHEL 9.3 test: rhel/9.3 groups: @@ -258,10 +265,10 @@ stages: parameters: testFormat: devel/linux/{0} targets: - - name: Fedora 41 - test: fedora41 - - name: Alpine 3.21 - test: alpine321 + - name: Fedora 42 + test: fedora42 + - name: Alpine 3.22 + test: alpine322 - name: Ubuntu 22.04 test: ubuntu2204 - name: Ubuntu 24.04 @@ -278,8 +285,10 @@ stages: parameters: testFormat: 2.19/linux/{0} targets: - - name: Ubuntu 24.04 - test: ubuntu2404 + - name: Fedora 41 + test: fedora41 + - name: Alpine 3.21 + test: alpine321 groups: - 1 - 2 @@ -352,9 +361,9 @@ stages: # nameFormat: Python {0} # testFormat: devel/generic/{0}/1 # targets: -# - test: '3.8' -# - test: '3.11' -# - test: '3.13' +# - test: '3.9' +# - test: '3.12' +# - test: '3.14' # - stage: Generic_2_19 # displayName: Generic 2.19 # dependsOn: [] diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fe0b634c9..b35c52441b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,645 +1,5 @@ -# Community General Release Notes +# Placeholder changelog -**Topics** - -- v11\.1\.0 - - Release Summary - - Minor Changes - - Deprecated Features - - Bugfixes - - New Plugins - - Callback - - New Modules -- v11\.0\.0 - - Release Summary - - Minor Changes - - Deprecated Features - - Removed Features \(previously deprecated\) - - Security Fixes - - Bugfixes - - Known Issues - - New Plugins - - Callback - - Connection - - Filter - - Inventory - - Lookup - - New Modules -This changelog describes changes after version 10\.0\.0\. - - -## v11\.1\.0 - - -### Release Summary - -Regular bugfix and feature release\. - - -### Minor Changes - -* cloudflare\_dns \- adds support for PTR records \([https\://github\.com/ansible\-collections/community\.general/pull/10267](https\://github\.com/ansible\-collections/community\.general/pull/10267)\)\. -* cloudflare\_dns \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* cloudflare\_dns \- simplify validations and refactor some code\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10269](https\://github\.com/ansible\-collections/community\.general/pull/10269)\)\. -* crypttab \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* datadog\_monitor \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* dense callback plugin \- use f\-strings instead of concatenation \([https\://github\.com/ansible\-collections/community\.general/pull/10285](https\://github\.com/ansible\-collections/community\.general/pull/10285)\)\. -* gitlab\_deploy\_key \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* gitlab\_group\_access\_token \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* gitlab\_hook \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* gitlab\_project\_access\_token \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* gitlab\_runner \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* iocage inventory plugin \- use f\-strings instead of concatenation \([https\://github\.com/ansible\-collections/community\.general/pull/10285](https\://github\.com/ansible\-collections/community\.general/pull/10285)\)\. -* ipa\_group \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* jc filter plugin \- use f\-strings instead of concatenation \([https\://github\.com/ansible\-collections/community\.general/pull/10285](https\://github\.com/ansible\-collections/community\.general/pull/10285)\)\. -* jenkins\_build \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* jenkins\_build\_info \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* keycloak \- add support for grant\_type\=client\_credentials to all keycloak modules\, so that specifying auth\_client\_id and auth\_client\_secret is sufficient for authentication \([https\://github\.com/ansible\-collections/community\.general/pull/10231](https\://github\.com/ansible\-collections/community\.general/pull/10231)\)\. -* keycloak module utils \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* logstash callback plugin \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* mail callback plugin \- use f\-strings instead of concatenation \([https\://github\.com/ansible\-collections/community\.general/pull/10285](https\://github\.com/ansible\-collections/community\.general/pull/10285)\)\. -* nmcli \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* nmcli \- simplify validations and refactor some code\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10323](https\://github\.com/ansible\-collections/community\.general/pull/10323)\)\. -* oneandone\_firewall\_policy \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* oneandone\_load\_balancer \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* oneandone\_monitoring\_policy \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* onepassword\_info \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* osx\_defaults \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* ovh\_ip\_loadbalancing\_backend \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* pacemaker\_cluster \- add state\=maintenance for managing pacemaker maintenance mode \([https\://github\.com/ansible\-collections/community\.general/issues/10200](https\://github\.com/ansible\-collections/community\.general/issues/10200)\, [https\://github\.com/ansible\-collections/community\.general/pull/10227](https\://github\.com/ansible\-collections/community\.general/pull/10227)\)\. -* pacemaker\_cluster \- rename node to name and add node alias \([https\://github\.com/ansible\-collections/community\.general/pull/10227](https\://github\.com/ansible\-collections/community\.general/pull/10227)\)\. -* pacemaker\_resource \- enhance module by removing duplicative code \([https\://github\.com/ansible\-collections/community\.general/pull/10227](https\://github\.com/ansible\-collections/community\.general/pull/10227)\)\. -* packet\_device \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* pagerduty \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* pingdom \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* python\_runner module utils \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* rhevm \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* rocketchat \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* sensu\_silence \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* sl\_vm \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* urpmi \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* wsl connection plugin \- use f\-strings instead of concatenation \([https\://github\.com/ansible\-collections/community\.general/pull/10285](https\://github\.com/ansible\-collections/community\.general/pull/10285)\)\. -* xattr \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. -* xen\_orchestra inventory plugin \- use f\-strings instead of concatenation \([https\://github\.com/ansible\-collections/community\.general/pull/10285](https\://github\.com/ansible\-collections/community\.general/pull/10285)\)\. -* xfconf \- minor adjustments the the code \([https\://github\.com/ansible\-collections/community\.general/pull/10311](https\://github\.com/ansible\-collections/community\.general/pull/10311)\)\. -* xml \- remove redundant brackets in conditionals\, no functional changes \([https\://github\.com/ansible\-collections/community\.general/pull/10328](https\://github\.com/ansible\-collections/community\.general/pull/10328)\)\. - - -### Deprecated Features - -* catapult \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/10318](https\://github\.com/ansible\-collections/community\.general/issues/10318)\, [https\://github\.com/ansible\-collections/community\.general/pull/10329](https\://github\.com/ansible\-collections/community\.general/pull/10329)\)\. -* pacemaker\_cluster \- the parameter state will become a required parameter in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10227](https\://github\.com/ansible\-collections/community\.general/pull/10227)\)\. - - -### Bugfixes - -* dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\. -* github\_release \- support multiple types of GitHub tokens\; no longer failing when ghs\_ token type is provided \([https\://github\.com/ansible\-collections/community\.general/issues/10338](https\://github\.com/ansible\-collections/community\.general/issues/10338)\, [https\://github\.com/ansible\-collections/community\.general/pull/10339](https\://github\.com/ansible\-collections/community\.general/pull/10339)\)\. -* icinga2 inventory plugin \- avoid using deprecated option when templating options \([https\://github\.com/ansible\-collections/community\.general/pull/10271](https\://github\.com/ansible\-collections/community\.general/pull/10271)\)\. -* incus connection plugin \- fix error handling to return more useful Ansible errors to the user \([https\://github\.com/ansible\-collections/community\.general/issues/10344](https\://github\.com/ansible\-collections/community\.general/issues/10344)\, [https\://github\.com/ansible\-collections/community\.general/pull/10349](https\://github\.com/ansible\-collections/community\.general/pull/10349)\)\. -* linode inventory plugin \- avoid using deprecated option when templating options \([https\://github\.com/ansible\-collections/community\.general/pull/10271](https\://github\.com/ansible\-collections/community\.general/pull/10271)\)\. -* logstash callback plugin \- remove reference to Python 2 library \([https\://github\.com/ansible\-collections/community\.general/pull/10345](https\://github\.com/ansible\-collections/community\.general/pull/10345)\)\. - - -### New Plugins - - -#### Callback - -* community\.general\.tasks\_only \- Only show tasks\. - - -### New Modules - -* community\.general\.jenkins\_credential \- Manage Jenkins credentials and domains via API\. - - -## v11\.0\.0 - - -### Release Summary - -This is release 11\.0\.0 of community\.general\, released on 2025\-06\-16\. - - -### Minor Changes - -* CmdRunner module utils \- the convenience method cmd\_runner\_fmt\.as\_fixed\(\) now accepts multiple arguments as a list \([https\://github\.com/ansible\-collections/community\.general/pull/9893](https\://github\.com/ansible\-collections/community\.general/pull/9893)\)\. -* MH module utils \- delegate debug to the underlying AnsibleModule instance or issues a warning if an attribute already exists with that name \([https\://github\.com/ansible\-collections/community\.general/pull/9577](https\://github\.com/ansible\-collections/community\.general/pull/9577)\)\. -* alternatives \- add family parameter that allows to utilize the \-\-family option available in RedHat version of update\-alternatives \([https\://github\.com/ansible\-collections/community\.general/issues/5060](https\://github\.com/ansible\-collections/community\.general/issues/5060)\, [https\://github\.com/ansible\-collections/community\.general/pull/9096](https\://github\.com/ansible\-collections/community\.general/pull/9096)\)\. -* apache2\_mod\_proxy \- better handling regexp extraction \([https\://github\.com/ansible\-collections/community\.general/pull/9609](https\://github\.com/ansible\-collections/community\.general/pull/9609)\)\. -* apache2\_mod\_proxy \- change type of state to a list of strings\. No change for the users \([https\://github\.com/ansible\-collections/community\.general/pull/9600](https\://github\.com/ansible\-collections/community\.general/pull/9600)\)\. -* apache2\_mod\_proxy \- code simplification\, no change in functionality \([https\://github\.com/ansible\-collections/community\.general/pull/9457](https\://github\.com/ansible\-collections/community\.general/pull/9457)\)\. -* apache2\_mod\_proxy \- improve readability when using results from fecth\_url\(\) \([https\://github\.com/ansible\-collections/community\.general/pull/9608](https\://github\.com/ansible\-collections/community\.general/pull/9608)\)\. -* apache2\_mod\_proxy \- refactor repeated code into method \([https\://github\.com/ansible\-collections/community\.general/pull/9599](https\://github\.com/ansible\-collections/community\.general/pull/9599)\)\. -* apache2\_mod\_proxy \- remove unused parameter and code from Balancer constructor \([https\://github\.com/ansible\-collections/community\.general/pull/9614](https\://github\.com/ansible\-collections/community\.general/pull/9614)\)\. -* apache2\_mod\_proxy \- simplified and improved string manipulation \([https\://github\.com/ansible\-collections/community\.general/pull/9614](https\://github\.com/ansible\-collections/community\.general/pull/9614)\)\. -* apache2\_mod\_proxy \- use deps to handle dependencies \([https\://github\.com/ansible\-collections/community\.general/pull/9612](https\://github\.com/ansible\-collections/community\.general/pull/9612)\)\. -* apache2\_module \- added workaround for new PHP module name\, from php7\_module to php\_module \([https\://github\.com/ansible\-collections/community\.general/pull/9951](https\://github\.com/ansible\-collections/community\.general/pull/9951)\)\. -* bitwarden lookup plugin \- add new option collection\_name to filter results by collection name\, and new option result\_count to validate number of results \([https\://github\.com/ansible\-collections/community\.general/pull/9728](https\://github\.com/ansible\-collections/community\.general/pull/9728)\)\. -* bitwarden lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* cargo \- add features parameter to allow activating specific features when installing Rust packages \([https\://github\.com/ansible\-collections/community\.general/pull/10198](https\://github\.com/ansible\-collections/community\.general/pull/10198)\)\. -* cartesian lookup plugin \- removed compatibility code for ansible\-core \< 2\.14 \([https\://github\.com/ansible\-collections/community\.general/pull/10160](https\://github\.com/ansible\-collections/community\.general/pull/10160)\)\. -* cgroup\_memory\_recap callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* cgroup\_memory\_recap callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* chef\_databag lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* chroot connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* chroot connection plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* chroot connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* cloud\_init\_data\_facts \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* cloudflare\_dns \- add support for comment and tags \([https\://github\.com/ansible\-collections/community\.general/pull/9132](https\://github\.com/ansible\-collections/community\.general/pull/9132)\)\. -* cobbler inventory plugin \- add connection\_timeout option to specify the connection timeout to the cobbler server \([https\://github\.com/ansible\-collections/community\.general/pull/11063](https\://github\.com/ansible\-collections/community\.general/pull/11063)\)\. -* cobbler inventory plugin \- add facts\_level option to allow requesting fully rendered variables for Cobbler systems \([https\://github\.com/ansible\-collections/community\.general/issues/9419](https\://github\.com/ansible\-collections/community\.general/issues/9419)\, [https\://github\.com/ansible\-collections/community\.general/pull/9975](https\://github\.com/ansible\-collections/community\.general/pull/9975)\)\. -* cobbler inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* cobbler inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* cobbler inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* collection\_version lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* consul\_kv lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* consul\_token \- fix idempotency when policies or roles are supplied by name \([https\://github\.com/ansible\-collections/community\.general/issues/9841](https\://github\.com/ansible\-collections/community\.general/issues/9841)\, [https\://github\.com/ansible\-collections/community\.general/pull/9845](https\://github\.com/ansible\-collections/community\.general/pull/9845)\)\. -* context\_demo callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* context\_demo callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* counter filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* counter\_enabled callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* counter\_enabled callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* cpanm \- enable usage of option \-\-with\-recommends \([https\://github\.com/ansible\-collections/community\.general/issues/9554](https\://github\.com/ansible\-collections/community\.general/issues/9554)\, [https\://github\.com/ansible\-collections/community\.general/pull/9555](https\://github\.com/ansible\-collections/community\.general/pull/9555)\)\. -* cpanm \- enable usage of option \-\-with\-suggests \([https\://github\.com/ansible\-collections/community\.general/pull/9555](https\://github\.com/ansible\-collections/community\.general/pull/9555)\)\. -* crc32 filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* credstash lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* cronvar \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* crypttab \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* cyberarkpassword lookup plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* cyberarkpassword lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* default\_without\_diff callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* dense callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* dense callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* dependent lookup plugin \- removed compatibility code for ansible\-core \< 2\.14 \([https\://github\.com/ansible\-collections/community\.general/pull/10160](https\://github\.com/ansible\-collections/community\.general/pull/10160)\)\. -* dependent lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* deps module utils \- add deps\.clear\(\) to clear out previously declared dependencies \([https\://github\.com/ansible\-collections/community\.general/pull/9179](https\://github\.com/ansible\-collections/community\.general/pull/9179)\)\. -* dict filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* dict\_kv filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* dig lookup plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* dig lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* diy callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* diy callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* dnstxt lookup plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* dnstxt lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* doas become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* doas become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* dsv lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* dzdo become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* dzdo become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* elastic callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* elastic callback plugin \- instead of trying to extract the ansible\-core version from task data\, use ansible\-core\'s actual version \([https\://github\.com/ansible\-collections/community\.general/pull/10193](https\://github\.com/ansible\-collections/community\.general/pull/10193)\)\. -* elastic callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* etcd lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* etcd3 lookup plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* etcd3 lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* filetree lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* flattened lookup plugin \- removed compatibility code for ansible\-core \< 2\.14 \([https\://github\.com/ansible\-collections/community\.general/pull/10160](https\://github\.com/ansible\-collections/community\.general/pull/10160)\)\. -* from\_csv filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* from\_csv filter plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* from\_ini filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* from\_ini filter plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* funcd connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* funcd connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* git\_config \- remove redundant required\=False from argument\_spec \([https\://github\.com/ansible\-collections/community\.general/pull/10177](https\://github\.com/ansible\-collections/community\.general/pull/10177)\)\. -* github\_app\_access\_token lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* github\_key \- add api\_url parameter to support GitHub Enterprise Server installations \([https\://github\.com/ansible\-collections/community\.general/pull/10191](https\://github\.com/ansible\-collections/community\.general/pull/10191)\)\. -* gitlab\_instance\_variable \- add support for raw variables suboption \([https\://github\.com/ansible\-collections/community\.general/pull/9425](https\://github\.com/ansible\-collections/community\.general/pull/9425)\)\. -* gitlab\_project \- add option build\_timeout \([https\://github\.com/ansible\-collections/community\.general/pull/9960](https\://github\.com/ansible\-collections/community\.general/pull/9960)\)\. -* gitlab\_project\_members \- extend choices parameter access\_level by missing upstream valid value owner \([https\://github\.com/ansible\-collections/community\.general/pull/9953](https\://github\.com/ansible\-collections/community\.general/pull/9953)\)\. -* gitlab\_runners inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* gitlab\_runners inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* gitlab\_runners inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* groupby\_as\_dict filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* hashids filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* hiera lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* homebrew \- greatly speed up module when multiple packages are passed in the name option \([https\://github\.com/ansible\-collections/community\.general/pull/9181](https\://github\.com/ansible\-collections/community\.general/pull/9181)\)\. -* homebrew \- remove duplicated package name validation \([https\://github\.com/ansible\-collections/community\.general/pull/9076](https\://github\.com/ansible\-collections/community\.general/pull/9076)\)\. -* hpilo\_boot \- add option to get an idempotent behavior while powering on server\, resulting in success instead of failure when using state\: boot\_once option \([https\://github\.com/ansible\-collections/community\.general/pull/9646](https\://github\.com/ansible\-collections/community\.general/pull/9646)\)\. -* icinga2 inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* icinga2 inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* idrac\_redfish\_command\, idrac\_redfish\_config\, idrac\_redfish\_info \- add validate\_certs\, ca\_path\, and ciphers options to configure TLS/SSL \([https\://github\.com/ansible\-collections/community\.general/issues/3686](https\://github\.com/ansible\-collections/community\.general/issues/3686)\, [https\://github\.com/ansible\-collections/community\.general/pull/9964](https\://github\.com/ansible\-collections/community\.general/pull/9964)\)\. -* ilo\_redfish\_command\, ilo\_redfish\_config\, ilo\_redfish\_info \- add validate\_certs\, ca\_path\, and ciphers options to configure TLS/SSL \([https\://github\.com/ansible\-collections/community\.general/issues/3686](https\://github\.com/ansible\-collections/community\.general/issues/3686)\, [https\://github\.com/ansible\-collections/community\.general/pull/9964](https\://github\.com/ansible\-collections/community\.general/pull/9964)\)\. -* incus connection plugin \- adds remote\_user and incus\_become\_method parameters for allowing a non\-root user to connect to an Incus instance \([https\://github\.com/ansible\-collections/community\.general/pull/9743](https\://github\.com/ansible\-collections/community\.general/pull/9743)\)\. -* incus connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* incus connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* ini\_file \- modify an inactive option also when there are spaces in front of the comment symbol \([https\://github\.com/ansible\-collections/community\.general/pull/10102](https\://github\.com/ansible\-collections/community\.general/pull/10102)\, [https\://github\.com/ansible\-collections/community\.general/issues/8539](https\://github\.com/ansible\-collections/community\.general/issues/8539)\)\. -* iocage connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* iocage connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* iocage inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* iocage inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* iocage inventory plugin \- the new parameter hooks\_results of the plugin is a list of files inside a jail that provide configuration parameters for the inventory\. The inventory plugin reads the files from the jails and put the contents into the items of created variable iocage\_hooks \([https\://github\.com/ansible\-collections/community\.general/issues/9650](https\://github\.com/ansible\-collections/community\.general/issues/9650)\, [https\://github\.com/ansible\-collections/community\.general/pull/9651](https\://github\.com/ansible\-collections/community\.general/pull/9651)\)\. -* iocage inventory plugin \- the new parameter inventory\_hostname\_tag of the plugin provides the name of the tag in the C\(iocage properties notes\) that contains the jails alias\. The new parameter inventory\_hostname\_required\, if enabled\, makes the tag mandatory \([https\://github\.com/ansible\-collections/community\.general/issues/10206](https\://github\.com/ansible\-collections/community\.general/issues/10206)\, [https\://github\.com/ansible\-collections/community\.general/pull/10207](https\://github\.com/ansible\-collections/community\.general/pull/10207)\)\. -* iocage inventory plugin \- the new parameter sudo of the plugin lets the command iocage list \-l to run as root on the iocage host\. This is needed to get the IPv4 of a running DHCP jail \([https\://github\.com/ansible\-collections/community\.general/issues/9572](https\://github\.com/ansible\-collections/community\.general/issues/9572)\, [https\://github\.com/ansible\-collections/community\.general/pull/9573](https\://github\.com/ansible\-collections/community\.general/pull/9573)\)\. -* iptables\_state action plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* iptables\_state action plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9318](https\://github\.com/ansible\-collections/community\.general/pull/9318)\)\. -* iso\_extract \- adds password parameter that is passed to 7z \([https\://github\.com/ansible\-collections/community\.general/pull/9159](https\://github\.com/ansible\-collections/community\.general/pull/9159)\)\. -* jabber callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* jabber callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* jail connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* jail connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* jc filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* jira \- adds client\_cert and client\_key parameters for supporting client certificate authentification when connecting to Jira \([https\://github\.com/ansible\-collections/community\.general/pull/9753](https\://github\.com/ansible\-collections/community\.general/pull/9753)\)\. -* jira \- transition operation now has status\_id to directly reference wanted transition \([https\://github\.com/ansible\-collections/community\.general/pull/9602](https\://github\.com/ansible\-collections/community\.general/pull/9602)\)\. -* json\_query filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* keep\_keys filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* keycloak \- add an action group for Keycloak modules to allow module\_defaults to be set for Keycloak tasks \([https\://github\.com/ansible\-collections/community\.general/pull/9284](https\://github\.com/ansible\-collections/community\.general/pull/9284)\)\. -* keycloak module\_utils \- user groups can now be referenced by their name\, like staff\, or their path\, like /staff/engineering\. The path syntax allows users to reference subgroups\, which is not possible otherwise \([https\://github\.com/ansible\-collections/community\.general/pull/9898](https\://github\.com/ansible\-collections/community\.general/pull/9898)\)\. -* keycloak\_\* modules \- refresh\_token parameter added\. When multiple authentication parameters are provided \(token\, refresh\_token\, and auth\_username/auth\_password\)\, modules will now automatically retry requests upon authentication errors \(401\)\, using in order the token\, refresh token\, and username/password \([https\://github\.com/ansible\-collections/community\.general/pull/9494](https\://github\.com/ansible\-collections/community\.general/pull/9494)\)\. -* keycloak\_realm \- remove ID requirement when creating a realm to allow Keycloak generating its own realm ID \([https\://github\.com/ansible\-collections/community\.general/pull/9768](https\://github\.com/ansible\-collections/community\.general/pull/9768)\)\. -* keycloak\_user module \- user groups can now be referenced by their name\, like staff\, or their path\, like /staff/engineering\. The path syntax allows users to reference subgroups\, which is not possible otherwise \([https\://github\.com/ansible\-collections/community\.general/pull/9898](https\://github\.com/ansible\-collections/community\.general/pull/9898)\)\. -* keyring lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* known\_hosts \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* ksu become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* ksu become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* lastpass lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* launchd \- add plist option for services such as sshd\, where the plist filename doesn\'t match the service name \([https\://github\.com/ansible\-collections/community\.general/pull/9102](https\://github\.com/ansible\-collections/community\.general/pull/9102)\)\. -* linode inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* linode inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* lists filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* lists\_mergeby filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* lldp \- adds multivalues parameter to control behavior when lldpctl outputs an attribute multiple times \([https\://github\.com/ansible\-collections/community\.general/pull/9657](https\://github\.com/ansible\-collections/community\.general/pull/9657)\)\. -* lmdb\_kv lookup plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* lmdb\_kv lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* locale\_gen \- invert the logic to determine ubuntu\_mode\, making it look first for /etc/locale\.gen \(set ubuntu\_mode to False\) and only then looking for /var/lib/locales/supported\.d/ \(set ubuntu\_mode to True\) \([https\://github\.com/ansible\-collections/community\.general/pull/9238](https\://github\.com/ansible\-collections/community\.general/pull/9238)\, [https\://github\.com/ansible\-collections/community\.general/issues/9131](https\://github\.com/ansible\-collections/community\.general/issues/9131)\, [https\://github\.com/ansible\-collections/community\.general/issues/8487](https\://github\.com/ansible\-collections/community\.general/issues/8487)\)\. -* locale\_gen \- new return value mechanism to better express the semantics of the ubuntu\_mode\, with the possible values being either glibc \(ubuntu\_mode\=False\) or ubuntu\_legacy \(ubuntu\_mode\=True\) \([https\://github\.com/ansible\-collections/community\.general/pull/9238](https\://github\.com/ansible\-collections/community\.general/pull/9238)\)\. -* log\_plays callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* log\_plays callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* loganalytics callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* loganalytics callback plugin \- instead of trying to extract the ansible\-core version from task data\, use ansible\-core\'s actual version \([https\://github\.com/ansible\-collections/community\.general/pull/10193](https\://github\.com/ansible\-collections/community\.general/pull/10193)\)\. -* loganalytics callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* logdna callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* logdna callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* logentries callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* logentries callback plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* logentries callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* logstash callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* lvg \- add remove\_extra\_pvs parameter to control if ansible should remove physical volumes which are not in the pvs parameter \([https\://github\.com/ansible\-collections/community\.general/pull/9698](https\://github\.com/ansible\-collections/community\.general/pull/9698)\)\. -* lxc connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* lxc connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* lxd connection plugin \- adds remote\_user and lxd\_become\_method parameters for allowing a non\-root user to connect to an LXD instance \([https\://github\.com/ansible\-collections/community\.general/pull/9659](https\://github\.com/ansible\-collections/community\.general/pull/9659)\)\. -* lxd connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* lxd connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* lxd inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* lxd inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* lxd inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* machinectl become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* machinectl become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* mail callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* mail callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* manageiq\_alert\_profiles \- improve handling of parameter requirements \([https\://github\.com/ansible\-collections/community\.general/pull/9449](https\://github\.com/ansible\-collections/community\.general/pull/9449)\)\. -* manifold lookup plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* manifold lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* maven\_artifact \- removed compatibility code for ansible\-core \< 2\.12 \([https\://github\.com/ansible\-collections/community\.general/pull/10192](https\://github\.com/ansible\-collections/community\.general/pull/10192)\)\. -* memcached cache plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* memcached cache plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9320](https\://github\.com/ansible\-collections/community\.general/pull/9320)\)\. -* merge\_variables lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* nmap inventory plugin \- adds dns\_servers option for specifying DNS servers for name resolution\. Accepts hostnames or IP addresses in the same format as the exclude option \([https\://github\.com/ansible\-collections/community\.general/pull/9849](https\://github\.com/ansible\-collections/community\.general/pull/9849)\)\. -* nmap inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* nmap inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* nmap inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* nmcli \- add sriov parameter that enables support for SR\-IOV settings \([https\://github\.com/ansible\-collections/community\.general/pull/9168](https\://github\.com/ansible\-collections/community\.general/pull/9168)\)\. -* nmcli \- add a option fail\_over\_mac \([https\://github\.com/ansible\-collections/community\.general/issues/9570](https\://github\.com/ansible\-collections/community\.general/issues/9570)\, [https\://github\.com/ansible\-collections/community\.general/pull/9571](https\://github\.com/ansible\-collections/community\.general/pull/9571)\)\. -* nmcli \- add support for Infiniband MAC setting when type is infiniband \([https\://github\.com/ansible\-collections/community\.general/pull/9962](https\://github\.com/ansible\-collections/community\.general/pull/9962)\)\. -* nmcli \- adds VRF support with new type value vrf and new slave\_type value vrf as well as new table parameter \([https\://github\.com/ansible\-collections/community\.general/pull/9658](https\://github\.com/ansible\-collections/community\.general/pull/9658)\, [https\://github\.com/ansible\-collections/community\.general/issues/8014](https\://github\.com/ansible\-collections/community\.general/issues/8014)\)\. -* nmcli \- adds autoconnect\_priority and autoconnect\_retries options to support autoconnect logic \([https\://github\.com/ansible\-collections/community\.general/pull/10134](https\://github\.com/ansible\-collections/community\.general/pull/10134)\)\. -* nrdp callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* nrdp callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* null callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* one\_template \- adds filter option for retrieving templates which are not owned by the user \([https\://github\.com/ansible\-collections/community\.general/pull/9547](https\://github\.com/ansible\-collections/community\.general/pull/9547)\, [https\://github\.com/ansible\-collections/community\.general/issues/9278](https\://github\.com/ansible\-collections/community\.general/issues/9278)\)\. -* one\_vm \- update allowed values for updateconf to include new parameters as per the latest OpenNebula API documentation\. - Added parameters\: - - - OS\: FIRMWARE\; - - CPU\_MODEL\: MODEL\, FEATURES\; - - FEATURES\: VIRTIO\_BLK\_QUEUES\, VIRTIO\_SCSI\_QUEUES\, IOTHREADS\; - - GRAPHICS\: PORT\, COMMAND\; - - VIDEO\: ATS\, IOMMU\, RESOLUTION\, TYPE\, VRAM\; - - RAW\: VALIDATE\; - - BACKUP\_CONFIG\: FS\_FREEZE\, KEEP\_LAST\, BACKUP\_VOLATILE\, MODE\, INCREMENT\_MODE\. - - \([https\://github\.com/ansible\-collections/community\.general/pull/9959](https\://github\.com/ansible\-collections/community\.general/pull/9959)\)\. -* onepassword lookup plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* onepassword lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* onepassword\_doc lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* onepassword\_ssh\_key \- refactor to move code to lookup class \([https\://github\.com/ansible\-collections/community\.general/pull/9633](https\://github\.com/ansible\-collections/community\.general/pull/9633)\)\. -* online inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* online inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* opennebula inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* opennebula inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* opennebula inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* opentelemetry callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* opentelemetry callback plugin \- instead of trying to extract the ansible\-core version from task data\, use ansible\-core\'s actual version \([https\://github\.com/ansible\-collections/community\.general/pull/10193](https\://github\.com/ansible\-collections/community\.general/pull/10193)\)\. -* opentelemetry callback plugin \- remove code handling Python versions prior to 3\.7 \([https\://github\.com/ansible\-collections/community\.general/pull/9482](https\://github\.com/ansible\-collections/community\.general/pull/9482)\)\. -* opentelemetry callback plugin \- remove code handling Python versions prior to 3\.7 \([https\://github\.com/ansible\-collections/community\.general/pull/9503](https\://github\.com/ansible\-collections/community\.general/pull/9503)\)\. -* opentelemetry callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* pacemaker\_cluster \- remove unused code \([https\://github\.com/ansible\-collections/community\.general/pull/9471](https\://github\.com/ansible\-collections/community\.general/pull/9471)\)\. -* pacemaker\_cluster \- using safer mechanism to run external command \([https\://github\.com/ansible\-collections/community\.general/pull/9471](https\://github\.com/ansible\-collections/community\.general/pull/9471)\)\. -* pacemaker\_resource \- add maintenance mode support for handling resource creation and deletion \([https\://github\.com/ansible\-collections/community\.general/issues/10180](https\://github\.com/ansible\-collections/community\.general/issues/10180)\, [https\://github\.com/ansible\-collections/community\.general/pull/10194](https\://github\.com/ansible\-collections/community\.general/pull/10194)\)\. -* pacman\_key \- support verifying that keys are trusted and not expired \([https\://github\.com/ansible\-collections/community\.general/issues/9949](https\://github\.com/ansible\-collections/community\.general/issues/9949)\, [https\://github\.com/ansible\-collections/community\.general/pull/9950](https\://github\.com/ansible\-collections/community\.general/pull/9950)\)\. -* parted \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* passwordstore lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* pbrun become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* pbrun become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* pfexec become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* pfexec become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* pickle cache plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* pipx \- add return value version \([https\://github\.com/ansible\-collections/community\.general/pull/9180](https\://github\.com/ansible\-collections/community\.general/pull/9180)\)\. -* pipx \- parameter name now accepts Python package specifiers \([https\://github\.com/ansible\-collections/community\.general/issues/7815](https\://github\.com/ansible\-collections/community\.general/issues/7815)\, [https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\. -* pipx module\_utils \- filtering application list by name now happens in the modules \([https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\. -* pipx\_info \- add return value version \([https\://github\.com/ansible\-collections/community\.general/pull/9180](https\://github\.com/ansible\-collections/community\.general/pull/9180)\)\. -* pipx\_info \- filtering application list by name now happens in the module \([https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\. -* pmrun become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* pmrun become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* pulp\_repo \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* puppet \- improve parameter formatting\, no impact to user \([https\://github\.com/ansible\-collections/community\.general/pull/10014](https\://github\.com/ansible\-collections/community\.general/pull/10014)\)\. -* qubes connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* qubes connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* random\_mac filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* random\_pet lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* redfish module utils \- add REDFISH\_COMMON\_ARGUMENT\_SPEC\, a corresponding redfish docs fragment\, and support for its validate\_certs\, ca\_path\, and ciphers options \([https\://github\.com/ansible\-collections/community\.general/issues/3686](https\://github\.com/ansible\-collections/community\.general/issues/3686)\, [https\://github\.com/ansible\-collections/community\.general/pull/9964](https\://github\.com/ansible\-collections/community\.general/pull/9964)\)\. -* redfish module utils \- removed compatibility code for ansible\-core \< 2\.14 \([https\://github\.com/ansible\-collections/community\.general/pull/10160](https\://github\.com/ansible\-collections/community\.general/pull/10160)\)\. -* redfish\_command \- add PowerFullPowerCycle to power command options \([https\://github\.com/ansible\-collections/community\.general/pull/9729](https\://github\.com/ansible\-collections/community\.general/pull/9729)\)\. -* redfish\_command \- add update\_custom\_oem\_header\, update\_custom\_oem\_params\, and update\_custom\_oem\_mime\_type options \([https\://github\.com/ansible\-collections/community\.general/pull/9123](https\://github\.com/ansible\-collections/community\.general/pull/9123)\)\. -* redfish\_command\, redfish\_config\, redfish\_info \- add validate\_certs and ca\_path options to configure TLS/SSL \([https\://github\.com/ansible\-collections/community\.general/issues/3686](https\://github\.com/ansible\-collections/community\.general/issues/3686)\, [https\://github\.com/ansible\-collections/community\.general/pull/9964](https\://github\.com/ansible\-collections/community\.general/pull/9964)\)\. -* redfish\_config \- add command SetPowerRestorePolicy to set the desired power state of the system when power is restored \([https\://github\.com/ansible\-collections/community\.general/pull/9837](https\://github\.com/ansible\-collections/community\.general/pull/9837)\)\. -* redfish\_info \- add command GetAccountServiceConfig to get full information about AccountService configuration \([https\://github\.com/ansible\-collections/community\.general/pull/9403](https\://github\.com/ansible\-collections/community\.general/pull/9403)\)\. -* redfish\_info \- add command GetPowerRestorePolicy to get the desired power state of the system when power is restored \([https\://github\.com/ansible\-collections/community\.general/pull/9824](https\://github\.com/ansible\-collections/community\.general/pull/9824)\)\. -* redfish\_utils module utils \- remove redundant code \([https\://github\.com/ansible\-collections/community\.general/pull/9190](https\://github\.com/ansible\-collections/community\.general/pull/9190)\)\. -* redhat\_subscription \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* redis cache plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* redis cache plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* redis cache plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9320](https\://github\.com/ansible\-collections/community\.general/pull/9320)\)\. -* redis lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* remove\_keys filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* replace\_keys filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* revbitspss lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* reveal\_ansible\_type filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* rocketchat \- fix duplicate JSON conversion for Rocket\.Chat \< 7\.4\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9965](https\://github\.com/ansible\-collections/community\.general/pull/9965)\)\. -* rocketchat \- option is\_pre740 has been added to control the format of the payload\. For Rocket\.Chat 7\.4\.0 or newer\, it must be set to false \([https\://github\.com/ansible\-collections/community\.general/pull/9882](https\://github\.com/ansible\-collections/community\.general/pull/9882)\)\. -* rpm\_ostree\_pkg \- added the options apply\_live \([https\://github\.com/ansible\-collections/community\.general/pull/9167](https\://github\.com/ansible\-collections/community\.general/pull/9167)\)\. -* rpm\_ostree\_pkg \- added the return value needs\_reboot \([https\://github\.com/ansible\-collections/community\.general/pull/9167](https\://github\.com/ansible\-collections/community\.general/pull/9167)\)\. -* run0 become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* saltstack connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* saltstack connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* say callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* say callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* scaleway inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* scaleway inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* scaleway inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* scaleway\_lb \- minor simplification in the code \([https\://github\.com/ansible\-collections/community\.general/pull/9189](https\://github\.com/ansible\-collections/community\.general/pull/9189)\)\. -* selective callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* selective callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* sesu become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* sesu become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* shelvefile lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* shutdown action plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* shutdown action plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* shutdown action plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9318](https\://github\.com/ansible\-collections/community\.general/pull/9318)\)\. -* slack callback plugin \- add http\_agent option to enable the user to set a custom user agent for slack callback plugin \([https\://github\.com/ansible\-collections/community\.general/issues/9813](https\://github\.com/ansible\-collections/community\.general/issues/9813)\, [https\://github\.com/ansible\-collections/community\.general/pull/9836](https\://github\.com/ansible\-collections/community\.general/pull/9836)\)\. -* slack callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* slack callback plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* slack callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* snap \- add return value version \([https\://github\.com/ansible\-collections/community\.general/pull/9598](https\://github\.com/ansible\-collections/community\.general/pull/9598)\)\. -* snap\_alias \- add return value version \([https\://github\.com/ansible\-collections/community\.general/pull/9598](https\://github\.com/ansible\-collections/community\.general/pull/9598)\)\. -* solaris\_zone \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* sorcery \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* splunk callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* splunk callback plugin \- instead of trying to extract the ansible\-core version from task data\, use ansible\-core\'s actual version \([https\://github\.com/ansible\-collections/community\.general/pull/10193](https\://github\.com/ansible\-collections/community\.general/pull/10193)\)\. -* splunk callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* ssh\_config \- add dynamicforward option \([https\://github\.com/ansible\-collections/community\.general/pull/9192](https\://github\.com/ansible\-collections/community\.general/pull/9192)\)\. -* ssh\_config \- add other\_options option \([https\://github\.com/ansible\-collections/community\.general/issues/8053](https\://github\.com/ansible\-collections/community\.general/issues/8053)\, [https\://github\.com/ansible\-collections/community\.general/pull/9684](https\://github\.com/ansible\-collections/community\.general/pull/9684)\)\. -* stackpath\_compute inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* stackpath\_compute inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* sudosu become plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* sudosu become plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9319](https\://github\.com/ansible\-collections/community\.general/pull/9319)\)\. -* sumologic callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* sumologic callback plugin \- instead of trying to extract the ansible\-core version from task data\, use ansible\-core\'s actual version \([https\://github\.com/ansible\-collections/community\.general/pull/10193](https\://github\.com/ansible\-collections/community\.general/pull/10193)\)\. -* syslog\_json callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* systemd\_info \- add wildcard expression support in unitname option \([https\://github\.com/ansible\-collections/community\.general/pull/9821](https\://github\.com/ansible\-collections/community\.general/pull/9821)\)\. -* systemd\_info \- extend support to timer units \([https\://github\.com/ansible\-collections/community\.general/pull/9891](https\://github\.com/ansible\-collections/community\.general/pull/9891)\)\. -* terraform \- adds the no\_color parameter\, which suppresses or allows color codes in stdout from Terraform commands \([https\://github\.com/ansible\-collections/community\.general/pull/10154](https\://github\.com/ansible\-collections/community\.general/pull/10154)\)\. -* time filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* timestamp callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* timestamp callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* timezone \- open file using open\(\) as a context manager \([https\://github\.com/ansible\-collections/community\.general/pull/9579](https\://github\.com/ansible\-collections/community\.general/pull/9579)\)\. -* to\_ini filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* to\_ini filter plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* tss lookup plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* tss lookup plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9324](https\://github\.com/ansible\-collections/community\.general/pull/9324)\)\. -* ufw \- add support for vrrp protocol \([https\://github\.com/ansible\-collections/community\.general/issues/9562](https\://github\.com/ansible\-collections/community\.general/issues/9562)\, [https\://github\.com/ansible\-collections/community\.general/pull/9582](https\://github\.com/ansible\-collections/community\.general/pull/9582)\)\. -* unicode\_normalize filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* unixy callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* unixy callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* version\_sort filter plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9585](https\://github\.com/ansible\-collections/community\.general/pull/9585)\)\. -* virtualbox inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* virtualbox inventory plugin \- clean up string conversions \([https\://github\.com/ansible\-collections/community\.general/pull/9379](https\://github\.com/ansible\-collections/community\.general/pull/9379)\)\. -* virtualbox inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* vmadm \- add new options flexible\_disk\_size and owner\_uuid \([https\://github\.com/ansible\-collections/community\.general/pull/9892](https\://github\.com/ansible\-collections/community\.general/pull/9892)\)\. -* wdc\_redfish\_command\, wdc\_redfish\_info \- add validate\_certs\, ca\_path\, and ciphers options to configure TLS/SSL \([https\://github\.com/ansible\-collections/community\.general/issues/3686](https\://github\.com/ansible\-collections/community\.general/issues/3686)\, [https\://github\.com/ansible\-collections/community\.general/pull/9964](https\://github\.com/ansible\-collections/community\.general/pull/9964)\)\. -* xbps \- add root and repository options to enable bootstrapping new void installations \([https\://github\.com/ansible\-collections/community\.general/pull/9174](https\://github\.com/ansible\-collections/community\.general/pull/9174)\)\. -* xcc\_redfish\_command \- add validate\_certs\, ca\_path\, and ciphers options to configure TLS/SSL \([https\://github\.com/ansible\-collections/community\.general/issues/3686](https\://github\.com/ansible\-collections/community\.general/issues/3686)\, [https\://github\.com/ansible\-collections/community\.general/pull/9964](https\://github\.com/ansible\-collections/community\.general/pull/9964)\)\. -* xen\_orchestra inventory plugin \- add use\_vm\_uuid and use\_host\_uuid boolean options to allow switching over to using VM/Xen name labels instead of UUIDs as item names \([https\://github\.com/ansible\-collections/community\.general/pull/9787](https\://github\.com/ansible\-collections/community\.general/pull/9787)\)\. -* xen\_orchestra inventory plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* xen\_orchestra inventory plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9323](https\://github\.com/ansible\-collections/community\.general/pull/9323)\)\. -* xfconf \- add return value version \([https\://github\.com/ansible\-collections/community\.general/pull/9226](https\://github\.com/ansible\-collections/community\.general/pull/9226)\)\. -* xfconf\_info \- add return value version \([https\://github\.com/ansible\-collections/community\.general/pull/9226](https\://github\.com/ansible\-collections/community\.general/pull/9226)\)\. -* xml \- support adding value of children when creating with subnodes \([https\://github\.com/ansible\-collections/community\.general/pull/8437](https\://github\.com/ansible\-collections/community\.general/pull/8437)\)\. -* yaml cache plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* yaml callback plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9583](https\://github\.com/ansible\-collections/community\.general/pull/9583)\)\. -* yaml callback plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9321](https\://github\.com/ansible\-collections/community\.general/pull/9321)\)\. -* zone connection plugin \- adjust standard preamble for Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9584](https\://github\.com/ansible\-collections/community\.general/pull/9584)\)\. -* zone connection plugin \- use f\-strings instead of interpolations or format \([https\://github\.com/ansible\-collections/community\.general/pull/9322](https\://github\.com/ansible\-collections/community\.general/pull/9322)\)\. -* zypper \- add quiet option \([https\://github\.com/ansible\-collections/community\.general/pull/9270](https\://github\.com/ansible\-collections/community\.general/pull/9270)\)\. -* zypper \- add simple\_errors option \([https\://github\.com/ansible\-collections/community\.general/pull/9270](https\://github\.com/ansible\-collections/community\.general/pull/9270)\)\. -* zypper \- adds skip\_post\_errors that allows to skip RPM post\-install errors \(Zypper return code 107\) \([https\://github\.com/ansible\-collections/community\.general/issues/9972](https\://github\.com/ansible\-collections/community\.general/issues/9972)\)\. - - -### Deprecated Features - -* MH module utils \- attribute debug definition in subclasses of MH is now deprecated\, as that name will become a delegation to AnsibleModule in community\.general 12\.0\.0\, and any such attribute will be overridden by that delegation in that version \([https\://github\.com/ansible\-collections/community\.general/pull/9577](https\://github\.com/ansible\-collections/community\.general/pull/9577)\)\. -* atomic\_container \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9487](https\://github\.com/ansible\-collections/community\.general/pull/9487)\)\. -* atomic\_host \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9487](https\://github\.com/ansible\-collections/community\.general/pull/9487)\)\. -* atomic\_image \- module is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9487](https\://github\.com/ansible\-collections/community\.general/pull/9487)\)\. -* facter \- module is deprecated and will be removed in community\.general 12\.0\.0\, use community\.general\.facter\_facts instead \([https\://github\.com/ansible\-collections/community\.general/pull/9451](https\://github\.com/ansible\-collections/community\.general/pull/9451)\)\. -* locale\_gen \- ubuntu\_mode\=True\, or mechanism\=ubuntu\_legacy is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9238](https\://github\.com/ansible\-collections/community\.general/pull/9238)\)\. -* manifold lookup plugin \- plugin is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10028](https\://github\.com/ansible\-collections/community\.general/pull/10028)\)\. -* opkg \- deprecate value \"\" for parameter force \([https\://github\.com/ansible\-collections/community\.general/pull/9172](https\://github\.com/ansible\-collections/community\.general/pull/9172)\)\. -* pipx module\_utils \- function make\_process\_list\(\) is deprecated and will be removed in community\.general 13\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10031](https\://github\.com/ansible\-collections/community\.general/pull/10031)\)\. -* profitbricks \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\. -* profitbricks\_datacenter \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\. -* profitbricks\_nic \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\. -* profitbricks\_volume \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\. -* profitbricks\_volume\_attachments \- module is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9733](https\://github\.com/ansible\-collections/community\.general/pull/9733)\)\. -* pure module utils \- the module utils is deprecated and will be removed from community\.general 12\.0\.0\. The modules using this were removed in community\.general 3\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9432](https\://github\.com/ansible\-collections/community\.general/pull/9432)\)\. -* purestorage doc fragments \- the doc fragment is deprecated and will be removed from community\.general 12\.0\.0\. The modules using this were removed in community\.general 3\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9432](https\://github\.com/ansible\-collections/community\.general/pull/9432)\)\. -* redfish\_utils module utils \- deprecate method RedfishUtils\.\_init\_session\(\) \([https\://github\.com/ansible\-collections/community\.general/pull/9190](https\://github\.com/ansible\-collections/community\.general/pull/9190)\)\. -* sensu\_check \- module is deprecated and will be removed in community\.general 13\.0\.0\, use collection sensu\.sensu\_go instead \([https\://github\.com/ansible\-collections/community\.general/pull/9483](https\://github\.com/ansible\-collections/community\.general/pull/9483)\)\. -* sensu\_client \- module is deprecated and will be removed in community\.general 13\.0\.0\, use collection sensu\.sensu\_go instead \([https\://github\.com/ansible\-collections/community\.general/pull/9483](https\://github\.com/ansible\-collections/community\.general/pull/9483)\)\. -* sensu\_handler \- module is deprecated and will be removed in community\.general 13\.0\.0\, use collection sensu\.sensu\_go instead \([https\://github\.com/ansible\-collections/community\.general/pull/9483](https\://github\.com/ansible\-collections/community\.general/pull/9483)\)\. -* sensu\_silence \- module is deprecated and will be removed in community\.general 13\.0\.0\, use collection sensu\.sensu\_go instead \([https\://github\.com/ansible\-collections/community\.general/pull/9483](https\://github\.com/ansible\-collections/community\.general/pull/9483)\)\. -* sensu\_subscription \- module is deprecated and will be removed in community\.general 13\.0\.0\, use collection sensu\.sensu\_go instead \([https\://github\.com/ansible\-collections/community\.general/pull/9483](https\://github\.com/ansible\-collections/community\.general/pull/9483)\)\. -* slack \- the default value auto of the prepend\_hash option is deprecated and will change to never in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9443](https\://github\.com/ansible\-collections/community\.general/pull/9443)\)\. -* stackpath\_compute inventory plugin \- plugin is deprecated and will be removed in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10026](https\://github\.com/ansible\-collections/community\.general/pull/10026)\)\. -* yaml callback plugin \- deprecate plugin in favor of result\_format\=yaml in plugin ansible\.bulitin\.default \([https\://github\.com/ansible\-collections/community\.general/pull/9456](https\://github\.com/ansible\-collections/community\.general/pull/9456)\)\. -* yaml callback plugin \- the YAML callback plugin was deprecated for removal in community\.general 13\.0\.0\. Since it needs to use ansible\-core internals since ansible\-core 2\.19 that are changing a lot\, we will remove this plugin already from community\.general 12\.0\.0 to ease the maintenance burden \([https\://github\.com/ansible\-collections/community\.general/pull/10213](https\://github\.com/ansible\-collections/community\.general/pull/10213)\)\. - - -### Removed Features \(previously deprecated\) - -* Dropped support for ansible\-core 2\.15\. The collection now requires ansible\-core 2\.16 or newer\. This means that on the controller\, Python 3\.10\+ is required\. On the target side\, Python 2\.7 and Python 3\.6\+ are supported \([https\://github\.com/ansible\-collections/community\.general/pull/10160](https\://github\.com/ansible\-collections/community\.general/pull/10160)\, [https\://github\.com/ansible\-collections/community\.general/pull/10192](https\://github\.com/ansible\-collections/community\.general/pull/10192)\)\. -* The Proxmox content \(modules and plugins\) has been moved to the [new collection community\.proxmox](https\://github\.com/ansible\-collections/community\.proxmox)\. Since community\.general 11\.0\.0\, these modules and plugins have been replaced by deprecated redirections to community\.proxmox\. You need to explicitly install community\.proxmox\, for example with ansible\-galaxy collection install community\.proxmox\, or by installing a new enough version of the Ansible community package\. We suggest to update your roles and playbooks to use the new FQCNs as soon as possible to avoid getting deprecation messages \([https\://github\.com/ansible\-collections/community\.general/pull/10110](https\://github\.com/ansible\-collections/community\.general/pull/10110)\)\. -* apt\_rpm \- the present and installed states are no longer equivalent to latest\, but to present\_not\_latest \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* clc\_\* modules and doc fragment \- the modules were removed since CenturyLink Cloud services went EOL in September 2023 \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* django\_manage \- the ack\_venv\_creation\_deprecation option has been removed\. It had no effect anymore anyway \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* git\_config \- it is no longer allowed to use state\=present with no value to read the config value\. Use the community\.general\.git\_config\_info module instead \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* git\_config \- the list\_all option has been removed\. Use the community\.general\.git\_config\_info module instead \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* hipchat \- the module was removed since the hipchat service has been discontinued and the self\-hosted variant has been End of Life since 2020 \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* manifold lookup plugin \- the plugin was removed since the company was acquired in 2021 and service was ceased afterwards \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* mh\.mixins\.deps module utils \- this module utils has been removed\. Use the deps module utils instead \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* mh\.mixins\.vars module utils \- this module utils has been removed\. Use VarDict from the vardict module utils instead \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* mh\.module\_helper module utils \- AnsibleModule and VarsMixin are no longer provided \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* mh\.module\_helper module utils \- VarDict is now imported from the vardict module utils and no longer from the removed mh\.mixins\.vars module utils \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* mh\.module\_helper module utils \- the attributes use\_old\_vardict and mute\_vardict\_deprecation from ModuleHelper have been removed\. We suggest to remove them from your modules if you no longer support community\.general \< 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* module\_helper module utils \- StateMixin\, DependencyCtxMgr\, VarMeta\, VarDict\, and VarsMixin are no longer provided \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* pipx \- module no longer supports pipx older than 1\.7\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10137](https\://github\.com/ansible\-collections/community\.general/pull/10137)\)\. -* pipx\_info \- module no longer supports pipx older than 1\.7\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/10137](https\://github\.com/ansible\-collections/community\.general/pull/10137)\)\. -* profitbrick\* modules \- the modules were removed since the supporting library is unsupported since 2021 \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* redfish\_utils module utils \- the \_init\_session method has been removed \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. -* stackpath\_compute inventory plugin \- the plugin was removed since the company and the service were sunset in June 2024 \([https\://github\.com/ansible\-collections/community\.general/pull/10126](https\://github\.com/ansible\-collections/community\.general/pull/10126)\)\. - - -### Security Fixes - -* keycloak\_authentication \- API calls did not properly set the priority during update resulting in incorrectly sorted authentication flows\. This apparently only affects Keycloak 25 or newer \([https\://github\.com/ansible\-collections/community\.general/pull/9263](https\://github\.com/ansible\-collections/community\.general/pull/9263)\)\. -* keycloak\_client \- Sanitize saml\.encryption\.private\.key so it does not show in the logs \([https\://github\.com/ansible\-collections/community\.general/pull/9621](https\://github\.com/ansible\-collections/community\.general/pull/9621)\)\. - - -### Bugfixes - -* apache2\_mod\_proxy \- make compatible with Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\. -* apache2\_mod\_proxy \- passing the cluster\'s page as referer for the member\'s pages\. This makes the module actually work again for halfway modern Apache versions\. According to some comments founds on the net the referer was required since at least 2019 for some versions of Apache 2 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\. -* cloudflare\_dns \- fix crash when deleting a DNS record or when updating a record with solo\=true \([https\://github\.com/ansible\-collections/community\.general/issues/9652](https\://github\.com/ansible\-collections/community\.general/issues/9652)\, [https\://github\.com/ansible\-collections/community\.general/pull/9649](https\://github\.com/ansible\-collections/community\.general/pull/9649)\)\. -* cloudlare\_dns \- handle exhausted response stream in case of HTTP errors to show nice error message to the user \([https\://github\.com/ansible\-collections/community\.general/issues/9782](https\://github\.com/ansible\-collections/community\.general/issues/9782)\, [https\://github\.com/ansible\-collections/community\.general/pull/9818](https\://github\.com/ansible\-collections/community\.general/pull/9818)\)\. -* cobbler\_system \- fix bug with Cobbler \>\= 3\.4\.0 caused by giving more than 2 positional arguments to CobblerXMLRPCInterface\.get\_system\_handle\(\) \([https\://github\.com/ansible\-collections/community\.general/issues/8506](https\://github\.com/ansible\-collections/community\.general/issues/8506)\, [https\://github\.com/ansible\-collections/community\.general/pull/10145](https\://github\.com/ansible\-collections/community\.general/pull/10145)\)\. -* cobbler\_system \- update minimum version number to avoid wrong comparisons that happen in some cases using LooseVersion class which results in TypeError \([https\://github\.com/ansible\-collections/community\.general/issues/8506](https\://github\.com/ansible\-collections/community\.general/issues/8506)\, [https\://github\.com/ansible\-collections/community\.general/pull/10145](https\://github\.com/ansible\-collections/community\.general/pull/10145)\, [https\://github\.com/ansible\-collections/community\.general/pull/10178](https\://github\.com/ansible\-collections/community\.general/pull/10178)\)\. -* dependent look plugin \- make compatible with ansible\-core\'s Data Tagging feature \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\. -* dig lookup plugin \- correctly handle NoNameserver exception \([https\://github\.com/ansible\-collections/community\.general/pull/9363](https\://github\.com/ansible\-collections/community\.general/pull/9363)\, [https\://github\.com/ansible\-collections/community\.general/issues/9362](https\://github\.com/ansible\-collections/community\.general/issues/9362)\)\. -* diy callback plugin \- make compatible with ansible\-core\'s Data Tagging feature \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\. -* dnf\_config\_manager \- fix hanging when prompting to import GPG keys \([https\://github\.com/ansible\-collections/community\.general/pull/9124](https\://github\.com/ansible\-collections/community\.general/pull/9124)\, [https\://github\.com/ansible\-collections/community\.general/issues/8830](https\://github\.com/ansible\-collections/community\.general/issues/8830)\)\. -* dnf\_config\_manager \- forces locale to C before module starts\. If the locale was set to non\-English\, the output of the dnf config\-manager could not be parsed \([https\://github\.com/ansible\-collections/community\.general/pull/9157](https\://github\.com/ansible\-collections/community\.general/pull/9157)\, [https\://github\.com/ansible\-collections/community\.general/issues/9046](https\://github\.com/ansible\-collections/community\.general/issues/9046)\)\. -* dnf\_versionlock \- add support for dnf5 \([https\://github\.com/ansible\-collections/community\.general/issues/9556](https\://github\.com/ansible\-collections/community\.general/issues/9556)\)\. -* elasticsearch\_plugin \- fix ERROR\: D is not a recognized option issue when configuring proxy settings \([https\://github\.com/ansible\-collections/community\.general/pull/9774](https\://github\.com/ansible\-collections/community\.general/pull/9774)\, [https\://github\.com/ansible\-collections/community\.general/issues/9773](https\://github\.com/ansible\-collections/community\.general/issues/9773)\)\. -* flatpak \- force the locale language to C when running the flatpak command \([https\://github\.com/ansible\-collections/community\.general/pull/9187](https\://github\.com/ansible\-collections/community\.general/pull/9187)\, [https\://github\.com/ansible\-collections/community\.general/issues/8883](https\://github\.com/ansible\-collections/community\.general/issues/8883)\)\. -* gio\_mime \- fix command line when determining version of gio \([https\://github\.com/ansible\-collections/community\.general/pull/9171](https\://github\.com/ansible\-collections/community\.general/pull/9171)\, [https\://github\.com/ansible\-collections/community\.general/issues/9158](https\://github\.com/ansible\-collections/community\.general/issues/9158)\)\. -* github\_deploy\_key \- check that key really exists on 422 to avoid masking other errors \([https\://github\.com/ansible\-collections/community\.general/issues/6718](https\://github\.com/ansible\-collections/community\.general/issues/6718)\, [https\://github\.com/ansible\-collections/community\.general/pull/10011](https\://github\.com/ansible\-collections/community\.general/pull/10011)\)\. -* github\_key \- in check mode\, a faulty call to \`datetime\.strftime\(\.\.\.\)\` was being made which generated an exception \([https\://github\.com/ansible\-collections/community\.general/issues/9185](https\://github\.com/ansible\-collections/community\.general/issues/9185)\)\. -* gitlab\_group\_access\_token\, gitlab\_project\_access\_token \- fix handling of group and project access tokens for changes in GitLab 17\.10 \([https\://github\.com/ansible\-collections/community\.general/pull/10196](https\://github\.com/ansible\-collections/community\.general/pull/10196)\)\. -* hashids and unicode\_normalize filter plugins \- avoid deprecated AnsibleFilterTypeError on ansible\-core 2\.19 \([https\://github\.com/ansible\-collections/community\.general/pull/9992](https\://github\.com/ansible\-collections/community\.general/pull/9992)\)\. -* homebrew \- emit a useful error message if brew info reports a package tap is null \([https\://github\.com/ansible\-collections/community\.general/pull/10013](https\://github\.com/ansible\-collections/community\.general/pull/10013)\, [https\://github\.com/ansible\-collections/community\.general/issues/10012](https\://github\.com/ansible\-collections/community\.general/issues/10012)\)\. -* homebrew \- fix crash when package names include tap \([https\://github\.com/ansible\-collections/community\.general/issues/9777](https\://github\.com/ansible\-collections/community\.general/issues/9777)\, [https\://github\.com/ansible\-collections/community\.general/pull/9803](https\://github\.com/ansible\-collections/community\.general/pull/9803)\)\. -* homebrew \- fix incorrect handling of aliased homebrew modules when the alias is requested \([https\://github\.com/ansible\-collections/community\.general/pull/9255](https\://github\.com/ansible\-collections/community\.general/pull/9255)\, [https\://github\.com/ansible\-collections/community\.general/issues/9240](https\://github\.com/ansible\-collections/community\.general/issues/9240)\)\. -* homebrew \- fix incorrect handling of homebrew modules when a tap is requested \([https\://github\.com/ansible\-collections/community\.general/pull/9546](https\://github\.com/ansible\-collections/community\.general/pull/9546)\, [https\://github\.com/ansible\-collections/community\.general/issues/9533](https\://github\.com/ansible\-collections/community\.general/issues/9533)\)\. -* homebrew \- make package name parsing more resilient \([https\://github\.com/ansible\-collections/community\.general/pull/9665](https\://github\.com/ansible\-collections/community\.general/pull/9665)\, [https\://github\.com/ansible\-collections/community\.general/issues/9641](https\://github\.com/ansible\-collections/community\.general/issues/9641)\)\. -* homebrew\_cask \- allow \+ symbol in Homebrew cask name validation regex \([https\://github\.com/ansible\-collections/community\.general/pull/9128](https\://github\.com/ansible\-collections/community\.general/pull/9128)\)\. -* homebrew\_cask \- handle unusual brew version strings \([https\://github\.com/ansible\-collections/community\.general/issues/8432](https\://github\.com/ansible\-collections/community\.general/issues/8432)\, [https\://github\.com/ansible\-collections/community\.general/pull/9881](https\://github\.com/ansible\-collections/community\.general/pull/9881)\)\. -* htpasswd \- report changes when file permissions are adjusted \([https\://github\.com/ansible\-collections/community\.general/issues/9485](https\://github\.com/ansible\-collections/community\.general/issues/9485)\, [https\://github\.com/ansible\-collections/community\.general/pull/9490](https\://github\.com/ansible\-collections/community\.general/pull/9490)\)\. -* iocage inventory plugin \- the plugin parses the IP4 tab of the jails list and put the elements into the new variable iocage\_ip4\_dict\. In multiple interface format the variable iocage\_ip4 keeps the comma\-separated list of IP4 \([https\://github\.com/ansible\-collections/community\.general/issues/9538](https\://github\.com/ansible\-collections/community\.general/issues/9538)\)\. -* ipa\_host \- module revoked existing host certificates even if user\_certificate was not given \([https\://github\.com/ansible\-collections/community\.general/pull/9694](https\://github\.com/ansible\-collections/community\.general/pull/9694)\)\. -* java\_cert \- the module no longer fails if the optional parameters pkcs12\_alias and cert\_alias are not provided \([https\://github\.com/ansible\-collections/community\.general/pull/9970](https\://github\.com/ansible\-collections/community\.general/pull/9970)\)\. -* kdeconfig \- allow option values beginning with a dash \([https\://github\.com/ansible\-collections/community\.general/issues/10127](https\://github\.com/ansible\-collections/community\.general/issues/10127)\, [https\://github\.com/ansible\-collections/community\.general/pull/10128](https\://github\.com/ansible\-collections/community\.general/pull/10128)\)\. -* keycloak \- update more than 10 sub\-groups \([https\://github\.com/ansible\-collections/community\.general/issues/9690](https\://github\.com/ansible\-collections/community\.general/issues/9690)\, [https\://github\.com/ansible\-collections/community\.general/pull/9692](https\://github\.com/ansible\-collections/community\.general/pull/9692)\)\. -* keycloak module utils \- replaces missing return in get\_role\_composites method which caused it to return None instead of composite roles \([https\://github\.com/ansible\-collections/community\.general/issues/9678](https\://github\.com/ansible\-collections/community\.general/issues/9678)\, [https\://github\.com/ansible\-collections/community\.general/pull/9691](https\://github\.com/ansible\-collections/community\.general/pull/9691)\)\. -* keycloak\_authentication \- fix authentification config duplication for Keycloak \< 26\.2\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9987](https\://github\.com/ansible\-collections/community\.general/pull/9987)\)\. -* keycloak\_client \- fix and improve existing tests\. The module showed a diff without actual changes\, solved by improving the normalise\_cr\(\) function \([https\://github\.com/ansible\-collections/community\.general/pull/9644](https\://github\.com/ansible\-collections/community\.general/pull/9644)\)\. -* keycloak\_client \- fix diff by removing code that turns the attributes dict which contains additional settings into a list \([https\://github\.com/ansible\-collections/community\.general/pull/9077](https\://github\.com/ansible\-collections/community\.general/pull/9077)\)\. -* keycloak\_client \- fix the idempotency regression by normalizing the Keycloak response for after\_client \([https\://github\.com/ansible\-collections/community\.general/issues/9905](https\://github\.com/ansible\-collections/community\.general/issues/9905)\, [https\://github\.com/ansible\-collections/community\.general/pull/9976](https\://github\.com/ansible\-collections/community\.general/pull/9976)\)\. -* keycloak\_client \- in check mode\, detect whether the lists in before client \(for example redirect URI list\) contain items that the lists in the desired client do not contain \([https\://github\.com/ansible\-collections/community\.general/pull/9739](https\://github\.com/ansible\-collections/community\.general/pull/9739)\)\. -* keycloak\_clientscope \- fix diff and end\_state by removing the code that turns the attributes dict\, which contains additional config items\, into a list \([https\://github\.com/ansible\-collections/community\.general/pull/9082](https\://github\.com/ansible\-collections/community\.general/pull/9082)\)\. -* keycloak\_clientscope\_type \- sort the default and optional clientscope lists to improve the diff \([https\://github\.com/ansible\-collections/community\.general/pull/9202](https\://github\.com/ansible\-collections/community\.general/pull/9202)\)\. -* keycloak\_user\_rolemapping \- fix \-\-diff mode \([https\://github\.com/ansible\-collections/community\.general/issues/10067](https\://github\.com/ansible\-collections/community\.general/issues/10067)\, [https\://github\.com/ansible\-collections/community\.general/pull/10075](https\://github\.com/ansible\-collections/community\.general/pull/10075)\)\. -* lldp \- fix crash caused by certain lldpctl output where an attribute is defined as branch and leaf \([https\://github\.com/ansible\-collections/community\.general/pull/9657](https\://github\.com/ansible\-collections/community\.general/pull/9657)\)\. -* nmcli \- enable changing only the order of DNS servers or search suffixes \([https\://github\.com/ansible\-collections/community\.general/issues/8724](https\://github\.com/ansible\-collections/community\.general/issues/8724)\, [https\://github\.com/ansible\-collections/community\.general/pull/9880](https\://github\.com/ansible\-collections/community\.general/pull/9880)\)\. -* onepassword\_doc lookup plugin \- ensure that 1Password Connect support also works for this plugin \([https\://github\.com/ansible\-collections/community\.general/pull/9625](https\://github\.com/ansible\-collections/community\.general/pull/9625)\)\. -* passwordstore lookup plugin \- fix subkey creation even when create\=false \([https\://github\.com/ansible\-collections/community\.general/issues/9105](https\://github\.com/ansible\-collections/community\.general/issues/9105)\, [https\://github\.com/ansible\-collections/community\.general/pull/9106](https\://github\.com/ansible\-collections/community\.general/pull/9106)\)\. -* pickle cache plugin \- avoid extra JSON serialization with ansible\-core \>\= 2\.19 \([https\://github\.com/ansible\-collections/community\.general/pull/10136](https\://github\.com/ansible\-collections/community\.general/pull/10136)\)\. -* pipx \- honor option global when state\=latest \([https\://github\.com/ansible\-collections/community\.general/pull/9623](https\://github\.com/ansible\-collections/community\.general/pull/9623)\)\. -* qubes connection plugin \- fix the printing of debug information \([https\://github\.com/ansible\-collections/community\.general/pull/9334](https\://github\.com/ansible\-collections/community\.general/pull/9334)\)\. -* redfish\_utils module utils \- Fix VerifyBiosAttributes command on multi system resource nodes \([https\://github\.com/ansible\-collections/community\.general/pull/9234](https\://github\.com/ansible\-collections/community\.general/pull/9234)\)\. -* redfish\_utils module utils \- remove undocumented default applytime \([https\://github\.com/ansible\-collections/community\.general/pull/9114](https\://github\.com/ansible\-collections/community\.general/pull/9114)\)\. -* redhat\_subscription \- do not try to unsubscribe \(i\.e\. remove subscriptions\) - when unregistering a system\: newer versions of subscription\-manager\, as - available in EL 10 and Fedora 41\+\, do not support entitlements anymore\, and - thus unsubscribing will fail - \([https\://github\.com/ansible\-collections/community\.general/pull/9578](https\://github\.com/ansible\-collections/community\.general/pull/9578)\)\. -* redhat\_subscription \- use the \"enable\_content\" option \(when available\) when - registering using D\-Bus\, to ensure that subscription\-manager enables the - content on registration\; this is particular important on EL 10\+ and Fedora - 41\+ - \([https\://github\.com/ansible\-collections/community\.general/pull/9778](https\://github\.com/ansible\-collections/community\.general/pull/9778)\)\. -* reveal\_ansible\_type filter plugin and ansible\_type test plugin \- make compatible with ansible\-core\'s Data Tagging feature \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\. -* rundeck\_acl\_policy \- ensure that project ACLs are sent to the correct endpoint \([https\://github\.com/ansible\-collections/community\.general/pull/10097](https\://github\.com/ansible\-collections/community\.general/pull/10097)\)\. -* slack \- fail if Slack API response is not OK with error message \([https\://github\.com/ansible\-collections/community\.general/pull/9198](https\://github\.com/ansible\-collections/community\.general/pull/9198)\)\. -* sudoers \- display stdout and stderr raised while failed validation \([https\://github\.com/ansible\-collections/community\.general/issues/9674](https\://github\.com/ansible\-collections/community\.general/issues/9674)\, [https\://github\.com/ansible\-collections/community\.general/pull/9871](https\://github\.com/ansible\-collections/community\.general/pull/9871)\)\. -* sysrc \- no longer always reporting changed\=true when state\=absent\. This fixes the method exists\(\) \([https\://github\.com/ansible\-collections/community\.general/issues/10004](https\://github\.com/ansible\-collections/community\.general/issues/10004)\, [https\://github\.com/ansible\-collections/community\.general/pull/10005](https\://github\.com/ansible\-collections/community\.general/pull/10005)\)\. -* sysrc \- split the output of sysrc \-e \-a on the first \= only \([https\://github\.com/ansible\-collections/community\.general/issues/10120](https\://github\.com/ansible\-collections/community\.general/issues/10120)\, [https\://github\.com/ansible\-collections/community\.general/pull/10121](https\://github\.com/ansible\-collections/community\.general/pull/10121)\)\. -* xml \- ensure file descriptor is closed \([https\://github\.com/ansible\-collections/community\.general/pull/9695](https\://github\.com/ansible\-collections/community\.general/pull/9695)\)\. -* yaml callback plugin \- adjust to latest changes in ansible\-core devel \([https\://github\.com/ansible\-collections/community\.general/pull/10212](https\://github\.com/ansible\-collections/community\.general/pull/10212)\)\. -* yaml callback plugin \- use ansible\-core internals to avoid breakage with Data Tagging \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\. -* yaml callback plugin \- when using ansible\-core 2\.19\.0b2 or newer\, uses a new utility provided by ansible\-core\. This allows us to remove all hacks and vendored code that was part of the plugin for ansible\-core versions with Data Tagging so far \([https\://github\.com/ansible\-collections/community\.general/pull/10242](https\://github\.com/ansible\-collections/community\.general/pull/10242)\)\. -* zfs \- fix handling of multi\-line values of user\-defined ZFS properties \([https\://github\.com/ansible\-collections/community\.general/pull/6264](https\://github\.com/ansible\-collections/community\.general/pull/6264)\)\. -* zfs\_facts \- parameter type now accepts multple values as documented \([https\://github\.com/ansible\-collections/community\.general/issues/5909](https\://github\.com/ansible\-collections/community\.general/issues/5909)\, [https\://github\.com/ansible\-collections/community\.general/pull/9697](https\://github\.com/ansible\-collections/community\.general/pull/9697)\)\. -* zypper\_repository \- make compatible with Python 3\.12\+ \([https\://github\.com/ansible\-collections/community\.general/issues/10222](https\://github\.com/ansible\-collections/community\.general/issues/10222)\, [https\://github\.com/ansible\-collections/community\.general/pull/10223](https\://github\.com/ansible\-collections/community\.general/pull/10223)\)\. -* zypper\_repository \- use metalink attribute to identify repositories without \ element \([https\://github\.com/ansible\-collections/community\.general/issues/10224](https\://github\.com/ansible\-collections/community\.general/issues/10224)\, [https\://github\.com/ansible\-collections/community\.general/pull/10225](https\://github\.com/ansible\-collections/community\.general/pull/10225)\)\. - - -### Known Issues - -* reveal\_ansible\_type filter plugin and ansible\_type test plugin \- note that ansible\-core\'s Data Tagging feature implements new aliases\, such as \_AnsibleTaggedStr for str\, \_AnsibleTaggedInt for int\, and \_AnsibleTaggedFloat for float \([https\://github\.com/ansible\-collections/community\.general/pull/9833](https\://github\.com/ansible\-collections/community\.general/pull/9833)\)\. - - -### New Plugins - - -#### Callback - -* community\.general\.print\_task \- Prints playbook task snippet to job output\. - - -#### Connection - -* community\.general\.wsl \- Run tasks in WSL distribution using wsl\.exe CLI via SSH\. - - -#### Filter - -* community\.general\.accumulate \- Produce a list of accumulated sums of the input list contents\. -* community\.general\.json\_diff \- Create a JSON patch by comparing two JSON files\. -* community\.general\.json\_patch \- Apply a JSON\-Patch \(RFC 6902\) operation to an object\. -* community\.general\.json\_patch\_recipe \- Apply JSON\-Patch \(RFC 6902\) operations to an object\. -* community\.general\.to\_prettytable \- Format a list of dictionaries as an ASCII table\. - - -#### Inventory - -* community\.general\.iocage \- iocage inventory source\. - - -#### Lookup - -* community\.general\.onepassword\_ssh\_key \- Fetch SSH keys stored in 1Password\. - - -### New Modules - -* community\.general\.android\_sdk \- Manages Android SDK packages\. -* community\.general\.decompress \- Decompresses compressed files\. -* community\.general\.ldap\_inc \- Use the Modify\-Increment LDAP V3 feature to increment an attribute value\. -* community\.general\.lvm\_pv \- Manage LVM Physical Volumes\. -* community\.general\.pacemaker\_resource \- Manage pacemaker resources\. -* community\.general\.systemd\_creds\_decrypt \- C\(systemd\)\'s C\(systemd\-creds decrypt\) plugin\. -* community\.general\.systemd\_creds\_encrypt \- C\(systemd\)\'s C\(systemd\-creds encrypt\) plugin\. -* community\.general\.systemd\_info \- Gather C\(systemd\) unit info\. -* community\.general\.xdg\_mime \- Set default handler for MIME types\, for applications using XDG tools\. -* community\.general\.zpool \- Manage ZFS zpools\. +This file is a placeholder; a version-specific `CHANGELOG-vX.md` will be generated during releases from fragments +under `changelogs/fragments`. On release branches once a release has been created, consult the branch's version-specific +file for changes that have occurred in that branch. diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 34d54467b8..119e04e170 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,624 +1,6 @@ -=============================== -Community General Release Notes -=============================== +Placeholder changelog +===================== -.. contents:: Topics - -This changelog describes changes after version 10.0.0. - -v11.1.0 -======= - -Release Summary ---------------- - -Regular bugfix and feature release. - -Minor Changes -------------- - -- cloudflare_dns - adds support for PTR records (https://github.com/ansible-collections/community.general/pull/10267). -- cloudflare_dns - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- cloudflare_dns - simplify validations and refactor some code, no functional changes (https://github.com/ansible-collections/community.general/pull/10269). -- crypttab - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- datadog_monitor - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- dense callback plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). -- gitlab_deploy_key - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- gitlab_group_access_token - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- gitlab_hook - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- gitlab_project_access_token - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- gitlab_runner - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- iocage inventory plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). -- ipa_group - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- jc filter plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). -- jenkins_build - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- jenkins_build_info - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- keycloak - add support for ``grant_type=client_credentials`` to all keycloak modules, so that specifying ``auth_client_id`` and ``auth_client_secret`` is sufficient for authentication (https://github.com/ansible-collections/community.general/pull/10231). -- keycloak module utils - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- logstash callback plugin - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- mail callback plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). -- nmcli - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- nmcli - simplify validations and refactor some code, no functional changes (https://github.com/ansible-collections/community.general/pull/10323). -- oneandone_firewall_policy - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- oneandone_load_balancer - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- oneandone_monitoring_policy - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- onepassword_info - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- osx_defaults - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- ovh_ip_loadbalancing_backend - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- pacemaker_cluster - add ``state=maintenance`` for managing pacemaker maintenance mode (https://github.com/ansible-collections/community.general/issues/10200, https://github.com/ansible-collections/community.general/pull/10227). -- pacemaker_cluster - rename ``node`` to ``name`` and add ``node`` alias (https://github.com/ansible-collections/community.general/pull/10227). -- pacemaker_resource - enhance module by removing duplicative code (https://github.com/ansible-collections/community.general/pull/10227). -- packet_device - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- pagerduty - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- pingdom - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- python_runner module utils - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- rhevm - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- rocketchat - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- sensu_silence - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- sl_vm - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- urpmi - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- wsl connection plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). -- xattr - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). -- xen_orchestra inventory plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). -- xfconf - minor adjustments the the code (https://github.com/ansible-collections/community.general/pull/10311). -- xml - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). - -Deprecated Features -------------------- - -- catapult - module is deprecated and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/issues/10318, https://github.com/ansible-collections/community.general/pull/10329). -- pacemaker_cluster - the parameter ``state`` will become a required parameter in community.general 12.0.0 (https://github.com/ansible-collections/community.general/pull/10227). - -Bugfixes --------- - -- dependent lookup plugin - avoid deprecated ansible-core 2.19 functionality (https://github.com/ansible-collections/community.general/pull/10359). -- github_release - support multiple types of GitHub tokens; no longer failing when ``ghs_`` token type is provided (https://github.com/ansible-collections/community.general/issues/10338, https://github.com/ansible-collections/community.general/pull/10339). -- icinga2 inventory plugin - avoid using deprecated option when templating options (https://github.com/ansible-collections/community.general/pull/10271). -- incus connection plugin - fix error handling to return more useful Ansible errors to the user (https://github.com/ansible-collections/community.general/issues/10344, https://github.com/ansible-collections/community.general/pull/10349). -- linode inventory plugin - avoid using deprecated option when templating options (https://github.com/ansible-collections/community.general/pull/10271). -- logstash callback plugin - remove reference to Python 2 library (https://github.com/ansible-collections/community.general/pull/10345). - -New Plugins ------------ - -Callback -~~~~~~~~ - -- community.general.tasks_only - Only show tasks. - -New Modules ------------ - -- community.general.jenkins_credential - Manage Jenkins credentials and domains via API. - -v11.0.0 -======= - -Release Summary ---------------- - -This is release 11.0.0 of ``community.general``, released on 2025-06-16. - -Minor Changes -------------- - -- CmdRunner module utils - the convenience method ``cmd_runner_fmt.as_fixed()`` now accepts multiple arguments as a list (https://github.com/ansible-collections/community.general/pull/9893). -- MH module utils - delegate ``debug`` to the underlying ``AnsibleModule`` instance or issues a warning if an attribute already exists with that name (https://github.com/ansible-collections/community.general/pull/9577). -- alternatives - add ``family`` parameter that allows to utilize the ``--family`` option available in RedHat version of update-alternatives (https://github.com/ansible-collections/community.general/issues/5060, https://github.com/ansible-collections/community.general/pull/9096). -- apache2_mod_proxy - better handling regexp extraction (https://github.com/ansible-collections/community.general/pull/9609). -- apache2_mod_proxy - change type of ``state`` to a list of strings. No change for the users (https://github.com/ansible-collections/community.general/pull/9600). -- apache2_mod_proxy - code simplification, no change in functionality (https://github.com/ansible-collections/community.general/pull/9457). -- apache2_mod_proxy - improve readability when using results from ``fecth_url()`` (https://github.com/ansible-collections/community.general/pull/9608). -- apache2_mod_proxy - refactor repeated code into method (https://github.com/ansible-collections/community.general/pull/9599). -- apache2_mod_proxy - remove unused parameter and code from ``Balancer`` constructor (https://github.com/ansible-collections/community.general/pull/9614). -- apache2_mod_proxy - simplified and improved string manipulation (https://github.com/ansible-collections/community.general/pull/9614). -- apache2_mod_proxy - use ``deps`` to handle dependencies (https://github.com/ansible-collections/community.general/pull/9612). -- apache2_module - added workaround for new PHP module name, from ``php7_module`` to ``php_module`` (https://github.com/ansible-collections/community.general/pull/9951). -- bitwarden lookup plugin - add new option ``collection_name`` to filter results by collection name, and new option ``result_count`` to validate number of results (https://github.com/ansible-collections/community.general/pull/9728). -- bitwarden lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- cargo - add ``features`` parameter to allow activating specific features when installing Rust packages (https://github.com/ansible-collections/community.general/pull/10198). -- cartesian lookup plugin - removed compatibility code for ansible-core < 2.14 (https://github.com/ansible-collections/community.general/pull/10160). -- cgroup_memory_recap callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- cgroup_memory_recap callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- chef_databag lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- chroot connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- chroot connection plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- chroot connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- cloud_init_data_facts - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- cloudflare_dns - add support for ``comment`` and ``tags`` (https://github.com/ansible-collections/community.general/pull/9132). -- cobbler inventory plugin - add ``connection_timeout`` option to specify the connection timeout to the cobbler server (https://github.com/ansible-collections/community.general/pull/11063). -- cobbler inventory plugin - add ``facts_level`` option to allow requesting fully rendered variables for Cobbler systems (https://github.com/ansible-collections/community.general/issues/9419, https://github.com/ansible-collections/community.general/pull/9975). -- cobbler inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- cobbler inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- cobbler inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- collection_version lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- consul_kv lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- consul_token - fix idempotency when ``policies`` or ``roles`` are supplied by name (https://github.com/ansible-collections/community.general/issues/9841, https://github.com/ansible-collections/community.general/pull/9845). -- context_demo callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- context_demo callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- counter filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- counter_enabled callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- counter_enabled callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- cpanm - enable usage of option ``--with-recommends`` (https://github.com/ansible-collections/community.general/issues/9554, https://github.com/ansible-collections/community.general/pull/9555). -- cpanm - enable usage of option ``--with-suggests`` (https://github.com/ansible-collections/community.general/pull/9555). -- crc32 filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- credstash lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- cronvar - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- crypttab - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- cyberarkpassword lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- cyberarkpassword lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- default_without_diff callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- dense callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- dense callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- dependent lookup plugin - removed compatibility code for ansible-core < 2.14 (https://github.com/ansible-collections/community.general/pull/10160). -- dependent lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- deps module utils - add ``deps.clear()`` to clear out previously declared dependencies (https://github.com/ansible-collections/community.general/pull/9179). -- dict filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- dict_kv filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- dig lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- dig lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- diy callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- diy callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- dnstxt lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- dnstxt lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- doas become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- doas become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- dsv lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- dzdo become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- dzdo become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- elastic callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- elastic callback plugin - instead of trying to extract the ansible-core version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). -- elastic callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- etcd lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- etcd3 lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- etcd3 lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- filetree lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- flattened lookup plugin - removed compatibility code for ansible-core < 2.14 (https://github.com/ansible-collections/community.general/pull/10160). -- from_csv filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- from_csv filter plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- from_ini filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- from_ini filter plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- funcd connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- funcd connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- git_config - remove redundant ``required=False`` from ``argument_spec`` (https://github.com/ansible-collections/community.general/pull/10177). -- github_app_access_token lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- github_key - add ``api_url`` parameter to support GitHub Enterprise Server installations (https://github.com/ansible-collections/community.general/pull/10191). -- gitlab_instance_variable - add support for ``raw`` variables suboption (https://github.com/ansible-collections/community.general/pull/9425). -- gitlab_project - add option ``build_timeout`` (https://github.com/ansible-collections/community.general/pull/9960). -- gitlab_project_members - extend choices parameter ``access_level`` by missing upstream valid value ``owner`` (https://github.com/ansible-collections/community.general/pull/9953). -- gitlab_runners inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- gitlab_runners inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- gitlab_runners inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- groupby_as_dict filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- hashids filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- hiera lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- homebrew - greatly speed up module when multiple packages are passed in the ``name`` option (https://github.com/ansible-collections/community.general/pull/9181). -- homebrew - remove duplicated package name validation (https://github.com/ansible-collections/community.general/pull/9076). -- hpilo_boot - add option to get an idempotent behavior while powering on server, resulting in success instead of failure when using ``state: boot_once`` option (https://github.com/ansible-collections/community.general/pull/9646). -- icinga2 inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- icinga2 inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- idrac_redfish_command, idrac_redfish_config, idrac_redfish_info - add ``validate_certs``, ``ca_path``, and ``ciphers`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, https://github.com/ansible-collections/community.general/pull/9964). -- ilo_redfish_command, ilo_redfish_config, ilo_redfish_info - add ``validate_certs``, ``ca_path``, and ``ciphers`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, https://github.com/ansible-collections/community.general/pull/9964). -- incus connection plugin - adds ``remote_user`` and ``incus_become_method`` parameters for allowing a non-root user to connect to an Incus instance (https://github.com/ansible-collections/community.general/pull/9743). -- incus connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- incus connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- ini_file - modify an inactive option also when there are spaces in front of the comment symbol (https://github.com/ansible-collections/community.general/pull/10102, https://github.com/ansible-collections/community.general/issues/8539). -- iocage connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- iocage connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- iocage inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- iocage inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- iocage inventory plugin - the new parameter ``hooks_results`` of the plugin is a list of files inside a jail that provide configuration parameters for the inventory. The inventory plugin reads the files from the jails and put the contents into the items of created variable ``iocage_hooks`` (https://github.com/ansible-collections/community.general/issues/9650, https://github.com/ansible-collections/community.general/pull/9651). -- iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of the plugin provides the name of the tag in the C(iocage properties notes) that contains the jails alias. The new parameter ``inventory_hostname_required``, if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206, https://github.com/ansible-collections/community.general/pull/10207). -- iocage inventory plugin - the new parameter ``sudo`` of the plugin lets the command ``iocage list -l`` to run as root on the iocage host. This is needed to get the IPv4 of a running DHCP jail (https://github.com/ansible-collections/community.general/issues/9572, https://github.com/ansible-collections/community.general/pull/9573). -- iptables_state action plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- iptables_state action plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9318). -- iso_extract - adds ``password`` parameter that is passed to 7z (https://github.com/ansible-collections/community.general/pull/9159). -- jabber callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- jabber callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- jail connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- jail connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- jc filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- jira - adds ``client_cert`` and ``client_key`` parameters for supporting client certificate authentification when connecting to Jira (https://github.com/ansible-collections/community.general/pull/9753). -- jira - transition operation now has ``status_id`` to directly reference wanted transition (https://github.com/ansible-collections/community.general/pull/9602). -- json_query filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- keep_keys filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- keycloak - add an action group for Keycloak modules to allow ``module_defaults`` to be set for Keycloak tasks (https://github.com/ansible-collections/community.general/pull/9284). -- keycloak module_utils - user groups can now be referenced by their name, like ``staff``, or their path, like ``/staff/engineering``. The path syntax allows users to reference subgroups, which is not possible otherwise (https://github.com/ansible-collections/community.general/pull/9898). -- keycloak_* modules - ``refresh_token`` parameter added. When multiple authentication parameters are provided (``token``, ``refresh_token``, and ``auth_username``/``auth_password``), modules will now automatically retry requests upon authentication errors (401), using in order the token, refresh token, and username/password (https://github.com/ansible-collections/community.general/pull/9494). -- keycloak_realm - remove ID requirement when creating a realm to allow Keycloak generating its own realm ID (https://github.com/ansible-collections/community.general/pull/9768). -- keycloak_user module - user groups can now be referenced by their name, like ``staff``, or their path, like ``/staff/engineering``. The path syntax allows users to reference subgroups, which is not possible otherwise (https://github.com/ansible-collections/community.general/pull/9898). -- keyring lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- known_hosts - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- ksu become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- ksu become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- lastpass lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- launchd - add ``plist`` option for services such as sshd, where the plist filename doesn't match the service name (https://github.com/ansible-collections/community.general/pull/9102). -- linode inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- linode inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- lists filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- lists_mergeby filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- lldp - adds ``multivalues`` parameter to control behavior when lldpctl outputs an attribute multiple times (https://github.com/ansible-collections/community.general/pull/9657). -- lmdb_kv lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- lmdb_kv lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- locale_gen - invert the logic to determine ``ubuntu_mode``, making it look first for ``/etc/locale.gen`` (set ``ubuntu_mode`` to ``False``) and only then looking for ``/var/lib/locales/supported.d/`` (set ``ubuntu_mode`` to ``True``) (https://github.com/ansible-collections/community.general/pull/9238, https://github.com/ansible-collections/community.general/issues/9131, https://github.com/ansible-collections/community.general/issues/8487). -- locale_gen - new return value ``mechanism`` to better express the semantics of the ``ubuntu_mode``, with the possible values being either ``glibc`` (``ubuntu_mode=False``) or ``ubuntu_legacy`` (``ubuntu_mode=True``) (https://github.com/ansible-collections/community.general/pull/9238). -- log_plays callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- log_plays callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- loganalytics callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- loganalytics callback plugin - instead of trying to extract the ansible-core version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). -- loganalytics callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- logdna callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- logdna callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- logentries callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- logentries callback plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- logentries callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- logstash callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- lvg - add ``remove_extra_pvs`` parameter to control if ansible should remove physical volumes which are not in the ``pvs`` parameter (https://github.com/ansible-collections/community.general/pull/9698). -- lxc connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- lxc connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- lxd connection plugin - adds ``remote_user`` and ``lxd_become_method`` parameters for allowing a non-root user to connect to an LXD instance (https://github.com/ansible-collections/community.general/pull/9659). -- lxd connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- lxd connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- lxd inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- lxd inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- lxd inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- machinectl become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- machinectl become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- mail callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- mail callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- manageiq_alert_profiles - improve handling of parameter requirements (https://github.com/ansible-collections/community.general/pull/9449). -- manifold lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- manifold lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- maven_artifact - removed compatibility code for ansible-core < 2.12 (https://github.com/ansible-collections/community.general/pull/10192). -- memcached cache plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- memcached cache plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9320). -- merge_variables lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- nmap inventory plugin - adds ``dns_servers`` option for specifying DNS servers for name resolution. Accepts hostnames or IP addresses in the same format as the ``exclude`` option (https://github.com/ansible-collections/community.general/pull/9849). -- nmap inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- nmap inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- nmap inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- nmcli - add ``sriov`` parameter that enables support for SR-IOV settings (https://github.com/ansible-collections/community.general/pull/9168). -- nmcli - add a option ``fail_over_mac`` (https://github.com/ansible-collections/community.general/issues/9570, https://github.com/ansible-collections/community.general/pull/9571). -- nmcli - add support for Infiniband MAC setting when ``type`` is ``infiniband`` (https://github.com/ansible-collections/community.general/pull/9962). -- nmcli - adds VRF support with new ``type`` value ``vrf`` and new ``slave_type`` value ``vrf`` as well as new ``table`` parameter (https://github.com/ansible-collections/community.general/pull/9658, https://github.com/ansible-collections/community.general/issues/8014). -- nmcli - adds ``autoconnect_priority`` and ``autoconnect_retries`` options to support autoconnect logic (https://github.com/ansible-collections/community.general/pull/10134). -- nrdp callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- nrdp callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- null callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- one_template - adds ``filter`` option for retrieving templates which are not owned by the user (https://github.com/ansible-collections/community.general/pull/9547, https://github.com/ansible-collections/community.general/issues/9278). -- one_vm - update allowed values for ``updateconf`` to include new parameters as per the latest OpenNebula API documentation. - Added parameters: - - * ``OS``: ``FIRMWARE``; - * ``CPU_MODEL``: ``MODEL``, ``FEATURES``; - * ``FEATURES``: ``VIRTIO_BLK_QUEUES``, ``VIRTIO_SCSI_QUEUES``, ``IOTHREADS``; - * ``GRAPHICS``: ``PORT``, ``COMMAND``; - * ``VIDEO``: ``ATS``, ``IOMMU``, ``RESOLUTION``, ``TYPE``, ``VRAM``; - * ``RAW``: ``VALIDATE``; - * ``BACKUP_CONFIG``: ``FS_FREEZE``, ``KEEP_LAST``, ``BACKUP_VOLATILE``, ``MODE``, ``INCREMENT_MODE``. - - (https://github.com/ansible-collections/community.general/pull/9959). -- onepassword lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- onepassword lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- onepassword_doc lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- onepassword_ssh_key - refactor to move code to lookup class (https://github.com/ansible-collections/community.general/pull/9633). -- online inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- online inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- opennebula inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- opennebula inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- opennebula inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- opentelemetry callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- opentelemetry callback plugin - instead of trying to extract the ansible-core version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). -- opentelemetry callback plugin - remove code handling Python versions prior to 3.7 (https://github.com/ansible-collections/community.general/pull/9482). -- opentelemetry callback plugin - remove code handling Python versions prior to 3.7 (https://github.com/ansible-collections/community.general/pull/9503). -- opentelemetry callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- pacemaker_cluster - remove unused code (https://github.com/ansible-collections/community.general/pull/9471). -- pacemaker_cluster - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/9471). -- pacemaker_resource - add maintenance mode support for handling resource creation and deletion (https://github.com/ansible-collections/community.general/issues/10180, https://github.com/ansible-collections/community.general/pull/10194). -- pacman_key - support verifying that keys are trusted and not expired (https://github.com/ansible-collections/community.general/issues/9949, https://github.com/ansible-collections/community.general/pull/9950). -- parted - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- passwordstore lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- pbrun become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- pbrun become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- pfexec become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- pfexec become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- pickle cache plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- pipx - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9180). -- pipx - parameter ``name`` now accepts Python package specifiers (https://github.com/ansible-collections/community.general/issues/7815, https://github.com/ansible-collections/community.general/pull/10031). -- pipx module_utils - filtering application list by name now happens in the modules (https://github.com/ansible-collections/community.general/pull/10031). -- pipx_info - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9180). -- pipx_info - filtering application list by name now happens in the module (https://github.com/ansible-collections/community.general/pull/10031). -- pmrun become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- pmrun become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- pulp_repo - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- puppet - improve parameter formatting, no impact to user (https://github.com/ansible-collections/community.general/pull/10014). -- qubes connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- qubes connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- random_mac filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- random_pet lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- redfish module utils - add ``REDFISH_COMMON_ARGUMENT_SPEC``, a corresponding ``redfish`` docs fragment, and support for its ``validate_certs``, ``ca_path``, and ``ciphers`` options (https://github.com/ansible-collections/community.general/issues/3686, https://github.com/ansible-collections/community.general/pull/9964). -- redfish module utils - removed compatibility code for ansible-core < 2.14 (https://github.com/ansible-collections/community.general/pull/10160). -- redfish_command - add ``PowerFullPowerCycle`` to power command options (https://github.com/ansible-collections/community.general/pull/9729). -- redfish_command - add ``update_custom_oem_header``, ``update_custom_oem_params``, and ``update_custom_oem_mime_type`` options (https://github.com/ansible-collections/community.general/pull/9123). -- redfish_command, redfish_config, redfish_info - add ``validate_certs`` and ``ca_path`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, https://github.com/ansible-collections/community.general/pull/9964). -- redfish_config - add command ``SetPowerRestorePolicy`` to set the desired power state of the system when power is restored (https://github.com/ansible-collections/community.general/pull/9837). -- redfish_info - add command ``GetAccountServiceConfig`` to get full information about AccountService configuration (https://github.com/ansible-collections/community.general/pull/9403). -- redfish_info - add command ``GetPowerRestorePolicy`` to get the desired power state of the system when power is restored (https://github.com/ansible-collections/community.general/pull/9824). -- redfish_utils module utils - remove redundant code (https://github.com/ansible-collections/community.general/pull/9190). -- redhat_subscription - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- redis cache plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- redis cache plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- redis cache plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9320). -- redis lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- remove_keys filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- replace_keys filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- revbitspss lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- reveal_ansible_type filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- rocketchat - fix duplicate JSON conversion for Rocket.Chat < 7.4.0 (https://github.com/ansible-collections/community.general/pull/9965). -- rocketchat - option ``is_pre740`` has been added to control the format of the payload. For Rocket.Chat 7.4.0 or newer, it must be set to ``false`` (https://github.com/ansible-collections/community.general/pull/9882). -- rpm_ostree_pkg - added the options ``apply_live`` (https://github.com/ansible-collections/community.general/pull/9167). -- rpm_ostree_pkg - added the return value ``needs_reboot`` (https://github.com/ansible-collections/community.general/pull/9167). -- run0 become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- saltstack connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- saltstack connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- say callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- say callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- scaleway inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- scaleway inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- scaleway inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- scaleway_lb - minor simplification in the code (https://github.com/ansible-collections/community.general/pull/9189). -- selective callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- selective callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- sesu become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- sesu become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- shelvefile lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- shutdown action plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- shutdown action plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- shutdown action plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9318). -- slack callback plugin - add ``http_agent`` option to enable the user to set a custom user agent for slack callback plugin (https://github.com/ansible-collections/community.general/issues/9813, https://github.com/ansible-collections/community.general/pull/9836). -- slack callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- slack callback plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- slack callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- snap - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9598). -- snap_alias - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9598). -- solaris_zone - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- sorcery - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- splunk callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- splunk callback plugin - instead of trying to extract the ansible-core version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). -- splunk callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- ssh_config - add ``dynamicforward`` option (https://github.com/ansible-collections/community.general/pull/9192). -- ssh_config - add ``other_options`` option (https://github.com/ansible-collections/community.general/issues/8053, https://github.com/ansible-collections/community.general/pull/9684). -- stackpath_compute inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- stackpath_compute inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- sudosu become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- sudosu become plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9319). -- sumologic callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- sumologic callback plugin - instead of trying to extract the ansible-core version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). -- syslog_json callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- systemd_info - add wildcard expression support in ``unitname`` option (https://github.com/ansible-collections/community.general/pull/9821). -- systemd_info - extend support to timer units (https://github.com/ansible-collections/community.general/pull/9891). -- terraform - adds the ``no_color`` parameter, which suppresses or allows color codes in stdout from Terraform commands (https://github.com/ansible-collections/community.general/pull/10154). -- time filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- timestamp callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- timestamp callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- timezone - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). -- to_ini filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- to_ini filter plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- tss lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- tss lookup plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). -- ufw - add support for ``vrrp`` protocol (https://github.com/ansible-collections/community.general/issues/9562, https://github.com/ansible-collections/community.general/pull/9582). -- unicode_normalize filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- unixy callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- unixy callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- version_sort filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). -- virtualbox inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- virtualbox inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). -- virtualbox inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- vmadm - add new options ``flexible_disk_size`` and ``owner_uuid`` (https://github.com/ansible-collections/community.general/pull/9892). -- wdc_redfish_command, wdc_redfish_info - add ``validate_certs``, ``ca_path``, and ``ciphers`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, https://github.com/ansible-collections/community.general/pull/9964). -- xbps - add ``root`` and ``repository`` options to enable bootstrapping new void installations (https://github.com/ansible-collections/community.general/pull/9174). -- xcc_redfish_command - add ``validate_certs``, ``ca_path``, and ``ciphers`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, https://github.com/ansible-collections/community.general/pull/9964). -- xen_orchestra inventory plugin - add ``use_vm_uuid`` and ``use_host_uuid`` boolean options to allow switching over to using VM/Xen name labels instead of UUIDs as item names (https://github.com/ansible-collections/community.general/pull/9787). -- xen_orchestra inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- xen_orchestra inventory plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). -- xfconf - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9226). -- xfconf_info - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9226). -- xml - support adding value of children when creating with subnodes (https://github.com/ansible-collections/community.general/pull/8437). -- yaml cache plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- yaml callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). -- yaml callback plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). -- zone connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). -- zone connection plugin - use f-strings instead of interpolations or ``format`` (https://github.com/ansible-collections/community.general/pull/9322). -- zypper - add ``quiet`` option (https://github.com/ansible-collections/community.general/pull/9270). -- zypper - add ``simple_errors`` option (https://github.com/ansible-collections/community.general/pull/9270). -- zypper - adds ``skip_post_errors`` that allows to skip RPM post-install errors (Zypper return code 107) (https://github.com/ansible-collections/community.general/issues/9972). - -Deprecated Features -------------------- - -- MH module utils - attribute ``debug`` definition in subclasses of MH is now deprecated, as that name will become a delegation to ``AnsibleModule`` in community.general 12.0.0, and any such attribute will be overridden by that delegation in that version (https://github.com/ansible-collections/community.general/pull/9577). -- atomic_container - module is deprecated and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/pull/9487). -- atomic_host - module is deprecated and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/pull/9487). -- atomic_image - module is deprecated and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/pull/9487). -- facter - module is deprecated and will be removed in community.general 12.0.0, use ``community.general.facter_facts`` instead (https://github.com/ansible-collections/community.general/pull/9451). -- locale_gen - ``ubuntu_mode=True``, or ``mechanism=ubuntu_legacy`` is deprecated and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/pull/9238). -- manifold lookup plugin - plugin is deprecated and will be removed in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/10028). -- opkg - deprecate value ``""`` for parameter ``force`` (https://github.com/ansible-collections/community.general/pull/9172). -- pipx module_utils - function ``make_process_list()`` is deprecated and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/pull/10031). -- profitbricks - module is deprecated and will be removed in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). -- profitbricks_datacenter - module is deprecated and will be removed in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). -- profitbricks_nic - module is deprecated and will be removed in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). -- profitbricks_volume - module is deprecated and will be removed in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). -- profitbricks_volume_attachments - module is deprecated and will be removed in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). -- pure module utils - the module utils is deprecated and will be removed from community.general 12.0.0. The modules using this were removed in community.general 3.0.0 (https://github.com/ansible-collections/community.general/pull/9432). -- purestorage doc fragments - the doc fragment is deprecated and will be removed from community.general 12.0.0. The modules using this were removed in community.general 3.0.0 (https://github.com/ansible-collections/community.general/pull/9432). -- redfish_utils module utils - deprecate method ``RedfishUtils._init_session()`` (https://github.com/ansible-collections/community.general/pull/9190). -- sensu_check - module is deprecated and will be removed in community.general 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). -- sensu_client - module is deprecated and will be removed in community.general 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). -- sensu_handler - module is deprecated and will be removed in community.general 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). -- sensu_silence - module is deprecated and will be removed in community.general 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). -- sensu_subscription - module is deprecated and will be removed in community.general 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). -- slack - the default value ``auto`` of the ``prepend_hash`` option is deprecated and will change to ``never`` in community.general 12.0.0 (https://github.com/ansible-collections/community.general/pull/9443). -- stackpath_compute inventory plugin - plugin is deprecated and will be removed in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/10026). -- yaml callback plugin - deprecate plugin in favor of ``result_format=yaml`` in plugin ``ansible.bulitin.default`` (https://github.com/ansible-collections/community.general/pull/9456). -- yaml callback plugin - the YAML callback plugin was deprecated for removal in community.general 13.0.0. Since it needs to use ansible-core internals since ansible-core 2.19 that are changing a lot, we will remove this plugin already from community.general 12.0.0 to ease the maintenance burden (https://github.com/ansible-collections/community.general/pull/10213). - -Removed Features (previously deprecated) ----------------------------------------- - -- Dropped support for ansible-core 2.15. The collection now requires ansible-core 2.16 or newer. This means that on the controller, Python 3.10+ is required. On the target side, Python 2.7 and Python 3.6+ are supported (https://github.com/ansible-collections/community.general/pull/10160, https://github.com/ansible-collections/community.general/pull/10192). -- The Proxmox content (modules and plugins) has been moved to the `new collection community.proxmox `__. Since community.general 11.0.0, these modules and plugins have been replaced by deprecated redirections to community.proxmox. You need to explicitly install community.proxmox, for example with ``ansible-galaxy collection install community.proxmox``, or by installing a new enough version of the Ansible community package. We suggest to update your roles and playbooks to use the new FQCNs as soon as possible to avoid getting deprecation messages (https://github.com/ansible-collections/community.general/pull/10110). -- apt_rpm - the ``present`` and ``installed`` states are no longer equivalent to ``latest``, but to ``present_not_latest`` (https://github.com/ansible-collections/community.general/pull/10126). -- clc_* modules and doc fragment - the modules were removed since CenturyLink Cloud services went EOL in September 2023 (https://github.com/ansible-collections/community.general/pull/10126). -- django_manage - the ``ack_venv_creation_deprecation`` option has been removed. It had no effect anymore anyway (https://github.com/ansible-collections/community.general/pull/10126). -- git_config - it is no longer allowed to use ``state=present`` with no value to read the config value. Use the ``community.general.git_config_info`` module instead (https://github.com/ansible-collections/community.general/pull/10126). -- git_config - the ``list_all`` option has been removed. Use the ``community.general.git_config_info`` module instead (https://github.com/ansible-collections/community.general/pull/10126). -- hipchat - the module was removed since the hipchat service has been discontinued and the self-hosted variant has been End of Life since 2020 (https://github.com/ansible-collections/community.general/pull/10126). -- manifold lookup plugin - the plugin was removed since the company was acquired in 2021 and service was ceased afterwards (https://github.com/ansible-collections/community.general/pull/10126). -- mh.mixins.deps module utils - this module utils has been removed. Use the ``deps`` module utils instead (https://github.com/ansible-collections/community.general/pull/10126). -- mh.mixins.vars module utils - this module utils has been removed. Use ``VarDict`` from the ``vardict`` module utils instead (https://github.com/ansible-collections/community.general/pull/10126). -- mh.module_helper module utils - ``AnsibleModule`` and ``VarsMixin`` are no longer provided (https://github.com/ansible-collections/community.general/pull/10126). -- mh.module_helper module utils - ``VarDict`` is now imported from the ``vardict`` module utils and no longer from the removed ``mh.mixins.vars`` module utils (https://github.com/ansible-collections/community.general/pull/10126). -- mh.module_helper module utils - the attributes ``use_old_vardict`` and ``mute_vardict_deprecation`` from ``ModuleHelper`` have been removed. We suggest to remove them from your modules if you no longer support community.general < 11.0.0 (https://github.com/ansible-collections/community.general/pull/10126). -- module_helper module utils - ``StateMixin``, ``DependencyCtxMgr``, ``VarMeta``, ``VarDict``, and ``VarsMixin`` are no longer provided (https://github.com/ansible-collections/community.general/pull/10126). -- pipx - module no longer supports ``pipx`` older than 1.7.0 (https://github.com/ansible-collections/community.general/pull/10137). -- pipx_info - module no longer supports ``pipx`` older than 1.7.0 (https://github.com/ansible-collections/community.general/pull/10137). -- profitbrick* modules - the modules were removed since the supporting library is unsupported since 2021 (https://github.com/ansible-collections/community.general/pull/10126). -- redfish_utils module utils - the ``_init_session`` method has been removed (https://github.com/ansible-collections/community.general/pull/10126). -- stackpath_compute inventory plugin - the plugin was removed since the company and the service were sunset in June 2024 (https://github.com/ansible-collections/community.general/pull/10126). - -Security Fixes --------------- - -- keycloak_authentication - API calls did not properly set the ``priority`` during update resulting in incorrectly sorted authentication flows. This apparently only affects Keycloak 25 or newer (https://github.com/ansible-collections/community.general/pull/9263). -- keycloak_client - Sanitize ``saml.encryption.private.key`` so it does not show in the logs (https://github.com/ansible-collections/community.general/pull/9621). - -Bugfixes --------- - -- apache2_mod_proxy - make compatible with Python 3 (https://github.com/ansible-collections/community.general/pull/9762). -- apache2_mod_proxy - passing the cluster's page as referer for the member's pages. This makes the module actually work again for halfway modern Apache versions. According to some comments founds on the net the referer was required since at least 2019 for some versions of Apache 2 (https://github.com/ansible-collections/community.general/pull/9762). -- cloudflare_dns - fix crash when deleting a DNS record or when updating a record with ``solo=true`` (https://github.com/ansible-collections/community.general/issues/9652, https://github.com/ansible-collections/community.general/pull/9649). -- cloudlare_dns - handle exhausted response stream in case of HTTP errors to show nice error message to the user (https://github.com/ansible-collections/community.general/issues/9782, https://github.com/ansible-collections/community.general/pull/9818). -- cobbler_system - fix bug with Cobbler >= 3.4.0 caused by giving more than 2 positional arguments to ``CobblerXMLRPCInterface.get_system_handle()`` (https://github.com/ansible-collections/community.general/issues/8506, https://github.com/ansible-collections/community.general/pull/10145). -- cobbler_system - update minimum version number to avoid wrong comparisons that happen in some cases using LooseVersion class which results in TypeError (https://github.com/ansible-collections/community.general/issues/8506, https://github.com/ansible-collections/community.general/pull/10145, https://github.com/ansible-collections/community.general/pull/10178). -- dependent look plugin - make compatible with ansible-core's Data Tagging feature (https://github.com/ansible-collections/community.general/pull/9833). -- dig lookup plugin - correctly handle ``NoNameserver`` exception (https://github.com/ansible-collections/community.general/pull/9363, https://github.com/ansible-collections/community.general/issues/9362). -- diy callback plugin - make compatible with ansible-core's Data Tagging feature (https://github.com/ansible-collections/community.general/pull/9833). -- dnf_config_manager - fix hanging when prompting to import GPG keys (https://github.com/ansible-collections/community.general/pull/9124, https://github.com/ansible-collections/community.general/issues/8830). -- dnf_config_manager - forces locale to ``C`` before module starts. If the locale was set to non-English, the output of the ``dnf config-manager`` could not be parsed (https://github.com/ansible-collections/community.general/pull/9157, https://github.com/ansible-collections/community.general/issues/9046). -- dnf_versionlock - add support for dnf5 (https://github.com/ansible-collections/community.general/issues/9556). -- elasticsearch_plugin - fix ``ERROR: D is not a recognized option`` issue when configuring proxy settings (https://github.com/ansible-collections/community.general/pull/9774, https://github.com/ansible-collections/community.general/issues/9773). -- flatpak - force the locale language to ``C`` when running the flatpak command (https://github.com/ansible-collections/community.general/pull/9187, https://github.com/ansible-collections/community.general/issues/8883). -- gio_mime - fix command line when determining version of ``gio`` (https://github.com/ansible-collections/community.general/pull/9171, https://github.com/ansible-collections/community.general/issues/9158). -- github_deploy_key - check that key really exists on 422 to avoid masking other errors (https://github.com/ansible-collections/community.general/issues/6718, https://github.com/ansible-collections/community.general/pull/10011). -- github_key - in check mode, a faulty call to ```datetime.strftime(...)``` was being made which generated an exception (https://github.com/ansible-collections/community.general/issues/9185). -- gitlab_group_access_token, gitlab_project_access_token - fix handling of group and project access tokens for changes in GitLab 17.10 (https://github.com/ansible-collections/community.general/pull/10196). -- hashids and unicode_normalize filter plugins - avoid deprecated ``AnsibleFilterTypeError`` on ansible-core 2.19 (https://github.com/ansible-collections/community.general/pull/9992). -- homebrew - emit a useful error message if ``brew info`` reports a package tap is ``null`` (https://github.com/ansible-collections/community.general/pull/10013, https://github.com/ansible-collections/community.general/issues/10012). -- homebrew - fix crash when package names include tap (https://github.com/ansible-collections/community.general/issues/9777, https://github.com/ansible-collections/community.general/pull/9803). -- homebrew - fix incorrect handling of aliased homebrew modules when the alias is requested (https://github.com/ansible-collections/community.general/pull/9255, https://github.com/ansible-collections/community.general/issues/9240). -- homebrew - fix incorrect handling of homebrew modules when a tap is requested (https://github.com/ansible-collections/community.general/pull/9546, https://github.com/ansible-collections/community.general/issues/9533). -- homebrew - make package name parsing more resilient (https://github.com/ansible-collections/community.general/pull/9665, https://github.com/ansible-collections/community.general/issues/9641). -- homebrew_cask - allow ``+`` symbol in Homebrew cask name validation regex (https://github.com/ansible-collections/community.general/pull/9128). -- homebrew_cask - handle unusual brew version strings (https://github.com/ansible-collections/community.general/issues/8432, https://github.com/ansible-collections/community.general/pull/9881). -- htpasswd - report changes when file permissions are adjusted (https://github.com/ansible-collections/community.general/issues/9485, https://github.com/ansible-collections/community.general/pull/9490). -- iocage inventory plugin - the plugin parses the IP4 tab of the jails list and put the elements into the new variable ``iocage_ip4_dict``. In multiple interface format the variable ``iocage_ip4`` keeps the comma-separated list of IP4 (https://github.com/ansible-collections/community.general/issues/9538). -- ipa_host - module revoked existing host certificates even if ``user_certificate`` was not given (https://github.com/ansible-collections/community.general/pull/9694). -- java_cert - the module no longer fails if the optional parameters ``pkcs12_alias`` and ``cert_alias`` are not provided (https://github.com/ansible-collections/community.general/pull/9970). -- kdeconfig - allow option values beginning with a dash (https://github.com/ansible-collections/community.general/issues/10127, https://github.com/ansible-collections/community.general/pull/10128). -- keycloak - update more than 10 sub-groups (https://github.com/ansible-collections/community.general/issues/9690, https://github.com/ansible-collections/community.general/pull/9692). -- keycloak module utils - replaces missing return in get_role_composites method which caused it to return None instead of composite roles (https://github.com/ansible-collections/community.general/issues/9678, https://github.com/ansible-collections/community.general/pull/9691). -- keycloak_authentication - fix authentification config duplication for Keycloak < 26.2.0 (https://github.com/ansible-collections/community.general/pull/9987). -- keycloak_client - fix and improve existing tests. The module showed a diff without actual changes, solved by improving the ``normalise_cr()`` function (https://github.com/ansible-collections/community.general/pull/9644). -- keycloak_client - fix diff by removing code that turns the attributes dict which contains additional settings into a list (https://github.com/ansible-collections/community.general/pull/9077). -- keycloak_client - fix the idempotency regression by normalizing the Keycloak response for ``after_client`` (https://github.com/ansible-collections/community.general/issues/9905, https://github.com/ansible-collections/community.general/pull/9976). -- keycloak_client - in check mode, detect whether the lists in before client (for example redirect URI list) contain items that the lists in the desired client do not contain (https://github.com/ansible-collections/community.general/pull/9739). -- keycloak_clientscope - fix diff and ``end_state`` by removing the code that turns the attributes dict, which contains additional config items, into a list (https://github.com/ansible-collections/community.general/pull/9082). -- keycloak_clientscope_type - sort the default and optional clientscope lists to improve the diff (https://github.com/ansible-collections/community.general/pull/9202). -- keycloak_user_rolemapping - fix ``--diff`` mode (https://github.com/ansible-collections/community.general/issues/10067, https://github.com/ansible-collections/community.general/pull/10075). -- lldp - fix crash caused by certain lldpctl output where an attribute is defined as branch and leaf (https://github.com/ansible-collections/community.general/pull/9657). -- nmcli - enable changing only the order of DNS servers or search suffixes (https://github.com/ansible-collections/community.general/issues/8724, https://github.com/ansible-collections/community.general/pull/9880). -- onepassword_doc lookup plugin - ensure that 1Password Connect support also works for this plugin (https://github.com/ansible-collections/community.general/pull/9625). -- passwordstore lookup plugin - fix subkey creation even when ``create=false`` (https://github.com/ansible-collections/community.general/issues/9105, https://github.com/ansible-collections/community.general/pull/9106). -- pickle cache plugin - avoid extra JSON serialization with ansible-core >= 2.19 (https://github.com/ansible-collections/community.general/pull/10136). -- pipx - honor option ``global`` when ``state=latest`` (https://github.com/ansible-collections/community.general/pull/9623). -- qubes connection plugin - fix the printing of debug information (https://github.com/ansible-collections/community.general/pull/9334). -- redfish_utils module utils - Fix ``VerifyBiosAttributes`` command on multi system resource nodes (https://github.com/ansible-collections/community.general/pull/9234). -- redfish_utils module utils - remove undocumented default applytime (https://github.com/ansible-collections/community.general/pull/9114). -- redhat_subscription - do not try to unsubscribe (i.e. remove subscriptions) - when unregistering a system: newer versions of subscription-manager, as - available in EL 10 and Fedora 41+, do not support entitlements anymore, and - thus unsubscribing will fail - (https://github.com/ansible-collections/community.general/pull/9578). -- redhat_subscription - use the "enable_content" option (when available) when - registering using D-Bus, to ensure that subscription-manager enables the - content on registration; this is particular important on EL 10+ and Fedora - 41+ - (https://github.com/ansible-collections/community.general/pull/9778). -- reveal_ansible_type filter plugin and ansible_type test plugin - make compatible with ansible-core's Data Tagging feature (https://github.com/ansible-collections/community.general/pull/9833). -- rundeck_acl_policy - ensure that project ACLs are sent to the correct endpoint (https://github.com/ansible-collections/community.general/pull/10097). -- slack - fail if Slack API response is not OK with error message (https://github.com/ansible-collections/community.general/pull/9198). -- sudoers - display stdout and stderr raised while failed validation (https://github.com/ansible-collections/community.general/issues/9674, https://github.com/ansible-collections/community.general/pull/9871). -- sysrc - no longer always reporting ``changed=true`` when ``state=absent``. This fixes the method ``exists()`` (https://github.com/ansible-collections/community.general/issues/10004, https://github.com/ansible-collections/community.general/pull/10005). -- sysrc - split the output of ``sysrc -e -a`` on the first ``=`` only (https://github.com/ansible-collections/community.general/issues/10120, https://github.com/ansible-collections/community.general/pull/10121). -- xml - ensure file descriptor is closed (https://github.com/ansible-collections/community.general/pull/9695). -- yaml callback plugin - adjust to latest changes in ansible-core devel (https://github.com/ansible-collections/community.general/pull/10212). -- yaml callback plugin - use ansible-core internals to avoid breakage with Data Tagging (https://github.com/ansible-collections/community.general/pull/9833). -- yaml callback plugin - when using ansible-core 2.19.0b2 or newer, uses a new utility provided by ansible-core. This allows us to remove all hacks and vendored code that was part of the plugin for ansible-core versions with Data Tagging so far (https://github.com/ansible-collections/community.general/pull/10242). -- zfs - fix handling of multi-line values of user-defined ZFS properties (https://github.com/ansible-collections/community.general/pull/6264). -- zfs_facts - parameter ``type`` now accepts multple values as documented (https://github.com/ansible-collections/community.general/issues/5909, https://github.com/ansible-collections/community.general/pull/9697). -- zypper_repository - make compatible with Python 3.12+ (https://github.com/ansible-collections/community.general/issues/10222, https://github.com/ansible-collections/community.general/pull/10223). -- zypper_repository - use ``metalink`` attribute to identify repositories without ```` element (https://github.com/ansible-collections/community.general/issues/10224, https://github.com/ansible-collections/community.general/pull/10225). - -Known Issues ------------- - -- reveal_ansible_type filter plugin and ansible_type test plugin - note that ansible-core's Data Tagging feature implements new aliases, such as ``_AnsibleTaggedStr`` for ``str``, ``_AnsibleTaggedInt`` for ``int``, and ``_AnsibleTaggedFloat`` for ``float`` (https://github.com/ansible-collections/community.general/pull/9833). - -New Plugins ------------ - -Callback -~~~~~~~~ - -- community.general.print_task - Prints playbook task snippet to job output. - -Connection -~~~~~~~~~~ - -- community.general.wsl - Run tasks in WSL distribution using wsl.exe CLI via SSH. - -Filter -~~~~~~ - -- community.general.accumulate - Produce a list of accumulated sums of the input list contents. -- community.general.json_diff - Create a JSON patch by comparing two JSON files. -- community.general.json_patch - Apply a JSON-Patch (RFC 6902) operation to an object. -- community.general.json_patch_recipe - Apply JSON-Patch (RFC 6902) operations to an object. -- community.general.to_prettytable - Format a list of dictionaries as an ASCII table. - -Inventory -~~~~~~~~~ - -- community.general.iocage - iocage inventory source. - -Lookup -~~~~~~ - -- community.general.onepassword_ssh_key - Fetch SSH keys stored in 1Password. - -New Modules ------------ - -- community.general.android_sdk - Manages Android SDK packages. -- community.general.decompress - Decompresses compressed files. -- community.general.ldap_inc - Use the Modify-Increment LDAP V3 feature to increment an attribute value. -- community.general.lvm_pv - Manage LVM Physical Volumes. -- community.general.pacemaker_resource - Manage pacemaker resources. -- community.general.systemd_creds_decrypt - C(systemd)'s C(systemd-creds decrypt) plugin. -- community.general.systemd_creds_encrypt - C(systemd)'s C(systemd-creds encrypt) plugin. -- community.general.systemd_info - Gather C(systemd) unit info. -- community.general.xdg_mime - Set default handler for MIME types, for applications using XDG tools. -- community.general.zpool - Manage ZFS zpools. +This file is a placeholder; a version-specific ``CHANGELOG-vX.rst`` will be generated during releases from fragments +under ``changelogs/fragments``. On release branches once a release has been created, consult the branch's version-specific +file for changes that have occurred in that branch. diff --git a/README.md b/README.md index 3c2cb8bb53..dbfc8c0f07 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ SPDX-License-Identifier: GPL-3.0-or-later # Community General Collection [![Documentation](https://img.shields.io/badge/docs-brightgreen.svg)](https://docs.ansible.com/ansible/devel/collections/community/general/) -[![Build Status](https://dev.azure.com/ansible/community.general/_apis/build/status/CI?branchName=stable-11)](https://dev.azure.com/ansible/community.general/_build?definitionId=31) -[![EOL CI](https://github.com/ansible-collections/community.general/actions/workflows/ansible-test.yml/badge.svg?branch=stable-11)](https://github.com/ansible-collections/community.general/actions) -[![Nox CI](https://github.com/ansible-collections/community.general/actions/workflows/nox.yml/badge.svg?branch=stable-11)](https://github.com/ansible-collections/community.general/actions) +[![Build Status](https://dev.azure.com/ansible/community.general/_apis/build/status/CI?branchName=main)](https://dev.azure.com/ansible/community.general/_build?definitionId=31) +[![EOL CI](https://github.com/ansible-collections/community.general/actions/workflows/ansible-test.yml/badge.svg?branch=main)](https://github.com/ansible-collections/community.general/actions) +[![Nox CI](https://github.com/ansible-collections/community.general/actions/workflows/nox.yml/badge.svg?branch=main)](https://github.com/ansible-collections/community.general/actions) [![Codecov](https://img.shields.io/codecov/c/github/ansible-collections/community.general)](https://codecov.io/gh/ansible-collections/community.general) [![REUSE status](https://api.reuse.software/badge/github.com/ansible-collections/community.general)](https://api.reuse.software/info/github.com/ansible-collections/community.general) @@ -118,7 +118,7 @@ See the [Releasing guidelines](https://github.com/ansible/community-docs/blob/ma ## Release notes -See the [changelog](https://github.com/ansible-collections/community.general/blob/stable-11/CHANGELOG.md). +See the [changelog](https://github.com/ansible-collections/community.general/blob/main/CHANGELOG.md). ## Roadmap @@ -137,8 +137,8 @@ See [this issue](https://github.com/ansible-collections/community.general/issues This collection is primarily licensed and distributed as a whole under the GNU General Public License v3.0 or later. -See [LICENSES/GPL-3.0-or-later.txt](https://github.com/ansible-collections/community.general/blob/stable-11/COPYING) for the full text. +See [LICENSES/GPL-3.0-or-later.txt](https://github.com/ansible-collections/community.general/blob/main/COPYING) for the full text. -Parts of the collection are licensed under the [BSD 2-Clause license](https://github.com/ansible-collections/community.general/blob/stable-11/LICENSES/BSD-2-Clause.txt), the [MIT license](https://github.com/ansible-collections/community.general/blob/stable-11/LICENSES/MIT.txt), and the [PSF 2.0 license](https://github.com/ansible-collections/community.general/blob/stable-11/LICENSES/PSF-2.0.txt). +Parts of the collection are licensed under the [BSD 2-Clause license](https://github.com/ansible-collections/community.general/blob/main/LICENSES/BSD-2-Clause.txt), the [MIT license](https://github.com/ansible-collections/community.general/blob/main/LICENSES/MIT.txt), and the [PSF 2.0 license](https://github.com/ansible-collections/community.general/blob/main/LICENSES/PSF-2.0.txt). All files have a machine readable `SDPX-License-Identifier:` comment denoting its respective license(s) or an equivalent entry in an accompanying `.license` file. Only changelog fragments (which will not be part of a release) are covered by a blanket statement in `REUSE.toml`. This conforms to the [REUSE specification](https://reuse.software/spec/). diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml index ab87c61fe8..f8129d5d73 100644 --- a/changelogs/changelog.yaml +++ b/changelogs/changelog.yaml @@ -1,1232 +1,3 @@ --- -ancestor: 10.0.0 -releases: - 11.0.0: - changes: - bugfixes: - - apache2_mod_proxy - make compatible with Python 3 (https://github.com/ansible-collections/community.general/pull/9762). - - apache2_mod_proxy - passing the cluster's page as referer for the member's - pages. This makes the module actually work again for halfway modern Apache - versions. According to some comments founds on the net the referer was required - since at least 2019 for some versions of Apache 2 (https://github.com/ansible-collections/community.general/pull/9762). - - cloudflare_dns - fix crash when deleting a DNS record or when updating a - record with ``solo=true`` (https://github.com/ansible-collections/community.general/issues/9652, - https://github.com/ansible-collections/community.general/pull/9649). - - cloudlare_dns - handle exhausted response stream in case of HTTP errors - to show nice error message to the user (https://github.com/ansible-collections/community.general/issues/9782, - https://github.com/ansible-collections/community.general/pull/9818). - - cobbler_system - fix bug with Cobbler >= 3.4.0 caused by giving more than - 2 positional arguments to ``CobblerXMLRPCInterface.get_system_handle()`` - (https://github.com/ansible-collections/community.general/issues/8506, https://github.com/ansible-collections/community.general/pull/10145). - - cobbler_system - update minimum version number to avoid wrong comparisons - that happen in some cases using LooseVersion class which results in TypeError - (https://github.com/ansible-collections/community.general/issues/8506, https://github.com/ansible-collections/community.general/pull/10145, - https://github.com/ansible-collections/community.general/pull/10178). - - dependent look plugin - make compatible with ansible-core's Data Tagging - feature (https://github.com/ansible-collections/community.general/pull/9833). - - dig lookup plugin - correctly handle ``NoNameserver`` exception (https://github.com/ansible-collections/community.general/pull/9363, - https://github.com/ansible-collections/community.general/issues/9362). - - diy callback plugin - make compatible with ansible-core's Data Tagging feature - (https://github.com/ansible-collections/community.general/pull/9833). - - dnf_config_manager - fix hanging when prompting to import GPG keys (https://github.com/ansible-collections/community.general/pull/9124, - https://github.com/ansible-collections/community.general/issues/8830). - - dnf_config_manager - forces locale to ``C`` before module starts. If the - locale was set to non-English, the output of the ``dnf config-manager`` - could not be parsed (https://github.com/ansible-collections/community.general/pull/9157, - https://github.com/ansible-collections/community.general/issues/9046). - - dnf_versionlock - add support for dnf5 (https://github.com/ansible-collections/community.general/issues/9556). - - 'elasticsearch_plugin - fix ``ERROR: D is not a recognized option`` issue - when configuring proxy settings (https://github.com/ansible-collections/community.general/pull/9774, - https://github.com/ansible-collections/community.general/issues/9773).' - - flatpak - force the locale language to ``C`` when running the flatpak command - (https://github.com/ansible-collections/community.general/pull/9187, https://github.com/ansible-collections/community.general/issues/8883). - - gio_mime - fix command line when determining version of ``gio`` (https://github.com/ansible-collections/community.general/pull/9171, - https://github.com/ansible-collections/community.general/issues/9158). - - "github_deploy_key - check that key really exists on 422\_to avoid masking\ - \ other errors (https://github.com/ansible-collections/community.general/issues/6718,\ - \ https://github.com/ansible-collections/community.general/pull/10011)." - - github_key - in check mode, a faulty call to ```datetime.strftime(...)``` - was being made which generated an exception (https://github.com/ansible-collections/community.general/issues/9185). - - gitlab_group_access_token, gitlab_project_access_token - fix handling of - group and project access tokens for changes in GitLab 17.10 (https://github.com/ansible-collections/community.general/pull/10196). - - hashids and unicode_normalize filter plugins - avoid deprecated ``AnsibleFilterTypeError`` - on ansible-core 2.19 (https://github.com/ansible-collections/community.general/pull/9992). - - homebrew - emit a useful error message if ``brew info`` reports a package - tap is ``null`` (https://github.com/ansible-collections/community.general/pull/10013, - https://github.com/ansible-collections/community.general/issues/10012). - - homebrew - fix crash when package names include tap (https://github.com/ansible-collections/community.general/issues/9777, - https://github.com/ansible-collections/community.general/pull/9803). - - homebrew - fix incorrect handling of aliased homebrew modules when the alias - is requested (https://github.com/ansible-collections/community.general/pull/9255, - https://github.com/ansible-collections/community.general/issues/9240). - - homebrew - fix incorrect handling of homebrew modules when a tap is requested - (https://github.com/ansible-collections/community.general/pull/9546, https://github.com/ansible-collections/community.general/issues/9533). - - homebrew - make package name parsing more resilient (https://github.com/ansible-collections/community.general/pull/9665, - https://github.com/ansible-collections/community.general/issues/9641). - - homebrew_cask - allow ``+`` symbol in Homebrew cask name validation regex - (https://github.com/ansible-collections/community.general/pull/9128). - - homebrew_cask - handle unusual brew version strings (https://github.com/ansible-collections/community.general/issues/8432, - https://github.com/ansible-collections/community.general/pull/9881). - - htpasswd - report changes when file permissions are adjusted (https://github.com/ansible-collections/community.general/issues/9485, - https://github.com/ansible-collections/community.general/pull/9490). - - iocage inventory plugin - the plugin parses the IP4 tab of the jails list - and put the elements into the new variable ``iocage_ip4_dict``. In multiple - interface format the variable ``iocage_ip4`` keeps the comma-separated list - of IP4 (https://github.com/ansible-collections/community.general/issues/9538). - - ipa_host - module revoked existing host certificates even if ``user_certificate`` - was not given (https://github.com/ansible-collections/community.general/pull/9694). - - java_cert - the module no longer fails if the optional parameters ``pkcs12_alias`` - and ``cert_alias`` are not provided (https://github.com/ansible-collections/community.general/pull/9970). - - kdeconfig - allow option values beginning with a dash (https://github.com/ansible-collections/community.general/issues/10127, - https://github.com/ansible-collections/community.general/pull/10128). - - keycloak - update more than 10 sub-groups (https://github.com/ansible-collections/community.general/issues/9690, - https://github.com/ansible-collections/community.general/pull/9692). - - keycloak module utils - replaces missing return in get_role_composites method - which caused it to return None instead of composite roles (https://github.com/ansible-collections/community.general/issues/9678, - https://github.com/ansible-collections/community.general/pull/9691). - - keycloak_authentication - fix authentification config duplication for Keycloak - < 26.2.0 (https://github.com/ansible-collections/community.general/pull/9987). - - keycloak_client - fix and improve existing tests. The module showed a diff - without actual changes, solved by improving the ``normalise_cr()`` function - (https://github.com/ansible-collections/community.general/pull/9644). - - keycloak_client - fix diff by removing code that turns the attributes dict - which contains additional settings into a list (https://github.com/ansible-collections/community.general/pull/9077). - - keycloak_client - fix the idempotency regression by normalizing the Keycloak - response for ``after_client`` (https://github.com/ansible-collections/community.general/issues/9905, - https://github.com/ansible-collections/community.general/pull/9976). - - keycloak_client - in check mode, detect whether the lists in before client - (for example redirect URI list) contain items that the lists in the desired - client do not contain (https://github.com/ansible-collections/community.general/pull/9739). - - keycloak_clientscope - fix diff and ``end_state`` by removing the code that - turns the attributes dict, which contains additional config items, into - a list (https://github.com/ansible-collections/community.general/pull/9082). - - keycloak_clientscope_type - sort the default and optional clientscope lists - to improve the diff (https://github.com/ansible-collections/community.general/pull/9202). - - keycloak_user_rolemapping - fix ``--diff`` mode (https://github.com/ansible-collections/community.general/issues/10067, - https://github.com/ansible-collections/community.general/pull/10075). - - lldp - fix crash caused by certain lldpctl output where an attribute is - defined as branch and leaf (https://github.com/ansible-collections/community.general/pull/9657). - - nmcli - enable changing only the order of DNS servers or search suffixes - (https://github.com/ansible-collections/community.general/issues/8724, https://github.com/ansible-collections/community.general/pull/9880). - - onepassword_doc lookup plugin - ensure that 1Password Connect support also - works for this plugin (https://github.com/ansible-collections/community.general/pull/9625). - - passwordstore lookup plugin - fix subkey creation even when ``create=false`` - (https://github.com/ansible-collections/community.general/issues/9105, https://github.com/ansible-collections/community.general/pull/9106). - - pickle cache plugin - avoid extra JSON serialization with ansible-core >= - 2.19 (https://github.com/ansible-collections/community.general/pull/10136). - - pipx - honor option ``global`` when ``state=latest`` (https://github.com/ansible-collections/community.general/pull/9623). - - qubes connection plugin - fix the printing of debug information (https://github.com/ansible-collections/community.general/pull/9334). - - redfish_utils module utils - Fix ``VerifyBiosAttributes`` command on multi - system resource nodes (https://github.com/ansible-collections/community.general/pull/9234). - - redfish_utils module utils - remove undocumented default applytime (https://github.com/ansible-collections/community.general/pull/9114). - - 'redhat_subscription - do not try to unsubscribe (i.e. remove subscriptions) - - when unregistering a system: newer versions of subscription-manager, as - - available in EL 10 and Fedora 41+, do not support entitlements anymore, - and - - thus unsubscribing will fail - - (https://github.com/ansible-collections/community.general/pull/9578). - - ' - - 'redhat_subscription - use the "enable_content" option (when available) - when - - registering using D-Bus, to ensure that subscription-manager enables the - - content on registration; this is particular important on EL 10+ and Fedora - - 41+ - - (https://github.com/ansible-collections/community.general/pull/9778). - - ' - - reveal_ansible_type filter plugin and ansible_type test plugin - make compatible - with ansible-core's Data Tagging feature (https://github.com/ansible-collections/community.general/pull/9833). - - rundeck_acl_policy - ensure that project ACLs are sent to the correct endpoint - (https://github.com/ansible-collections/community.general/pull/10097). - - slack - fail if Slack API response is not OK with error message (https://github.com/ansible-collections/community.general/pull/9198). - - sudoers - display stdout and stderr raised while failed validation (https://github.com/ansible-collections/community.general/issues/9674, - https://github.com/ansible-collections/community.general/pull/9871). - - sysrc - no longer always reporting ``changed=true`` when ``state=absent``. - This fixes the method ``exists()`` (https://github.com/ansible-collections/community.general/issues/10004, - https://github.com/ansible-collections/community.general/pull/10005). - - sysrc - split the output of ``sysrc -e -a`` on the first ``=`` only (https://github.com/ansible-collections/community.general/issues/10120, - https://github.com/ansible-collections/community.general/pull/10121). - - xml - ensure file descriptor is closed (https://github.com/ansible-collections/community.general/pull/9695). - - yaml callback plugin - adjust to latest changes in ansible-core devel (https://github.com/ansible-collections/community.general/pull/10212). - - yaml callback plugin - use ansible-core internals to avoid breakage with - Data Tagging (https://github.com/ansible-collections/community.general/pull/9833). - - yaml callback plugin - when using ansible-core 2.19.0b2 or newer, uses a - new utility provided by ansible-core. This allows us to remove all hacks - and vendored code that was part of the plugin for ansible-core versions - with Data Tagging so far (https://github.com/ansible-collections/community.general/pull/10242). - - zfs - fix handling of multi-line values of user-defined ZFS properties (https://github.com/ansible-collections/community.general/pull/6264). - - zfs_facts - parameter ``type`` now accepts multple values as documented - (https://github.com/ansible-collections/community.general/issues/5909, https://github.com/ansible-collections/community.general/pull/9697). - - zypper_repository - make compatible with Python 3.12+ (https://github.com/ansible-collections/community.general/issues/10222, - https://github.com/ansible-collections/community.general/pull/10223). - - zypper_repository - use ``metalink`` attribute to identify repositories - without ```` element (https://github.com/ansible-collections/community.general/issues/10224, - https://github.com/ansible-collections/community.general/pull/10225). - deprecated_features: - - 'MH module utils - attribute ``debug`` definition in subclasses of MH is - now deprecated, as that name will become a delegation to ``AnsibleModule`` - in community.general 12.0.0, and any such attribute will be overridden by - that delegation in that version (https://github.com/ansible-collections/community.general/pull/9577). - - ' - - atomic_container - module is deprecated and will be removed in community.general - 13.0.0 (https://github.com/ansible-collections/community.general/pull/9487). - - atomic_host - module is deprecated and will be removed in community.general - 13.0.0 (https://github.com/ansible-collections/community.general/pull/9487). - - atomic_image - module is deprecated and will be removed in community.general - 13.0.0 (https://github.com/ansible-collections/community.general/pull/9487). - - facter - module is deprecated and will be removed in community.general 12.0.0, - use ``community.general.facter_facts`` instead (https://github.com/ansible-collections/community.general/pull/9451). - - 'locale_gen - ``ubuntu_mode=True``, or ``mechanism=ubuntu_legacy`` is deprecated - and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/pull/9238). - - ' - - manifold lookup plugin - plugin is deprecated and will be removed in community.general - 11.0.0 (https://github.com/ansible-collections/community.general/pull/10028). - - opkg - deprecate value ``""`` for parameter ``force`` (https://github.com/ansible-collections/community.general/pull/9172). - - pipx module_utils - function ``make_process_list()`` is deprecated and will - be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/pull/10031). - - profitbricks - module is deprecated and will be removed in community.general - 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). - - profitbricks_datacenter - module is deprecated and will be removed in community.general - 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). - - profitbricks_nic - module is deprecated and will be removed in community.general - 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). - - profitbricks_volume - module is deprecated and will be removed in community.general - 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). - - profitbricks_volume_attachments - module is deprecated and will be removed - in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/9733). - - pure module utils - the module utils is deprecated and will be removed from - community.general 12.0.0. The modules using this were removed in community.general - 3.0.0 (https://github.com/ansible-collections/community.general/pull/9432). - - purestorage doc fragments - the doc fragment is deprecated and will be removed - from community.general 12.0.0. The modules using this were removed in community.general - 3.0.0 (https://github.com/ansible-collections/community.general/pull/9432). - - redfish_utils module utils - deprecate method ``RedfishUtils._init_session()`` - (https://github.com/ansible-collections/community.general/pull/9190). - - sensu_check - module is deprecated and will be removed in community.general - 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). - - sensu_client - module is deprecated and will be removed in community.general - 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). - - sensu_handler - module is deprecated and will be removed in community.general - 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). - - sensu_silence - module is deprecated and will be removed in community.general - 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). - - sensu_subscription - module is deprecated and will be removed in community.general - 13.0.0, use collection ``sensu.sensu_go`` instead (https://github.com/ansible-collections/community.general/pull/9483). - - slack - the default value ``auto`` of the ``prepend_hash`` option is deprecated - and will change to ``never`` in community.general 12.0.0 (https://github.com/ansible-collections/community.general/pull/9443). - - stackpath_compute inventory plugin - plugin is deprecated and will be removed - in community.general 11.0.0 (https://github.com/ansible-collections/community.general/pull/10026). - - yaml callback plugin - deprecate plugin in favor of ``result_format=yaml`` - in plugin ``ansible.bulitin.default`` (https://github.com/ansible-collections/community.general/pull/9456). - - yaml callback plugin - the YAML callback plugin was deprecated for removal - in community.general 13.0.0. Since it needs to use ansible-core internals - since ansible-core 2.19 that are changing a lot, we will remove this plugin - already from community.general 12.0.0 to ease the maintenance burden (https://github.com/ansible-collections/community.general/pull/10213). - known_issues: - - reveal_ansible_type filter plugin and ansible_type test plugin - note that - ansible-core's Data Tagging feature implements new aliases, such as ``_AnsibleTaggedStr`` - for ``str``, ``_AnsibleTaggedInt`` for ``int``, and ``_AnsibleTaggedFloat`` - for ``float`` (https://github.com/ansible-collections/community.general/pull/9833). - minor_changes: - - CmdRunner module utils - the convenience method ``cmd_runner_fmt.as_fixed()`` - now accepts multiple arguments as a list (https://github.com/ansible-collections/community.general/pull/9893). - - MH module utils - delegate ``debug`` to the underlying ``AnsibleModule`` - instance or issues a warning if an attribute already exists with that name - (https://github.com/ansible-collections/community.general/pull/9577). - - alternatives - add ``family`` parameter that allows to utilize the ``--family`` - option available in RedHat version of update-alternatives (https://github.com/ansible-collections/community.general/issues/5060, - https://github.com/ansible-collections/community.general/pull/9096). - - apache2_mod_proxy - better handling regexp extraction (https://github.com/ansible-collections/community.general/pull/9609). - - apache2_mod_proxy - change type of ``state`` to a list of strings. No change - for the users (https://github.com/ansible-collections/community.general/pull/9600). - - apache2_mod_proxy - code simplification, no change in functionality (https://github.com/ansible-collections/community.general/pull/9457). - - apache2_mod_proxy - improve readability when using results from ``fecth_url()`` - (https://github.com/ansible-collections/community.general/pull/9608). - - apache2_mod_proxy - refactor repeated code into method (https://github.com/ansible-collections/community.general/pull/9599). - - apache2_mod_proxy - remove unused parameter and code from ``Balancer`` constructor - (https://github.com/ansible-collections/community.general/pull/9614). - - apache2_mod_proxy - simplified and improved string manipulation (https://github.com/ansible-collections/community.general/pull/9614). - - apache2_mod_proxy - use ``deps`` to handle dependencies (https://github.com/ansible-collections/community.general/pull/9612). - - apache2_module - added workaround for new PHP module name, from ``php7_module`` - to ``php_module`` (https://github.com/ansible-collections/community.general/pull/9951). - - bitwarden lookup plugin - add new option ``collection_name`` to filter results - by collection name, and new option ``result_count`` to validate number of - results (https://github.com/ansible-collections/community.general/pull/9728). - - bitwarden lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - cargo - add ``features`` parameter to allow activating specific features - when installing Rust packages (https://github.com/ansible-collections/community.general/pull/10198). - - cartesian lookup plugin - removed compatibility code for ansible-core < - 2.14 (https://github.com/ansible-collections/community.general/pull/10160). - - cgroup_memory_recap callback plugin - adjust standard preamble for Python - 3 (https://github.com/ansible-collections/community.general/pull/9583). - - cgroup_memory_recap callback plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). - - chef_databag lookup plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9324). - - chroot connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - chroot connection plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - chroot connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - cloud_init_data_facts - open file using ``open()`` as a context manager - (https://github.com/ansible-collections/community.general/pull/9579). - - cloudflare_dns - add support for ``comment`` and ``tags`` (https://github.com/ansible-collections/community.general/pull/9132). - - cobbler inventory plugin - add ``connection_timeout`` option to specify - the connection timeout to the cobbler server (https://github.com/ansible-collections/community.general/pull/11063). - - cobbler inventory plugin - add ``facts_level`` option to allow requesting - fully rendered variables for Cobbler systems (https://github.com/ansible-collections/community.general/issues/9419, - https://github.com/ansible-collections/community.general/pull/9975). - - cobbler inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - cobbler inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - cobbler inventory plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9323). - - collection_version lookup plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). - - consul_kv lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - consul_token - fix idempotency when ``policies`` or ``roles`` are supplied - by name (https://github.com/ansible-collections/community.general/issues/9841, - https://github.com/ansible-collections/community.general/pull/9845). - - context_demo callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - context_demo callback plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9321). - - counter filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - counter_enabled callback plugin - adjust standard preamble for Python 3 - (https://github.com/ansible-collections/community.general/pull/9583). - - counter_enabled callback plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). - - cpanm - enable usage of option ``--with-recommends`` (https://github.com/ansible-collections/community.general/issues/9554, - https://github.com/ansible-collections/community.general/pull/9555). - - cpanm - enable usage of option ``--with-suggests`` (https://github.com/ansible-collections/community.general/pull/9555). - - crc32 filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - credstash lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - cronvar - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - crypttab - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - cyberarkpassword lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - cyberarkpassword lookup plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). - - default_without_diff callback plugin - adjust standard preamble for Python - 3 (https://github.com/ansible-collections/community.general/pull/9583). - - dense callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - dense callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - dependent lookup plugin - removed compatibility code for ansible-core < - 2.14 (https://github.com/ansible-collections/community.general/pull/10160). - - dependent lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - deps module utils - add ``deps.clear()`` to clear out previously declared - dependencies (https://github.com/ansible-collections/community.general/pull/9179). - - dict filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - dict_kv filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - dig lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - dig lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - diy callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - diy callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - dnstxt lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - dnstxt lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - doas become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - doas become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - dsv lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - dzdo become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - dzdo become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - elastic callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - elastic callback plugin - instead of trying to extract the ansible-core - version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). - - elastic callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - etcd lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - etcd3 lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - etcd3 lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - filetree lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - flattened lookup plugin - removed compatibility code for ansible-core < - 2.14 (https://github.com/ansible-collections/community.general/pull/10160). - - from_csv filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - from_csv filter plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - from_ini filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - from_ini filter plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - funcd connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - funcd connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - git_config - remove redundant ``required=False`` from ``argument_spec`` - (https://github.com/ansible-collections/community.general/pull/10177). - - github_app_access_token lookup plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). - - github_key - add ``api_url`` parameter to support GitHub Enterprise Server - installations (https://github.com/ansible-collections/community.general/pull/10191). - - gitlab_instance_variable - add support for ``raw`` variables suboption (https://github.com/ansible-collections/community.general/pull/9425). - - gitlab_project - add option ``build_timeout`` (https://github.com/ansible-collections/community.general/pull/9960). - - gitlab_project_members - extend choices parameter ``access_level`` by missing - upstream valid value ``owner`` (https://github.com/ansible-collections/community.general/pull/9953). - - gitlab_runners inventory plugin - adjust standard preamble for Python 3 - (https://github.com/ansible-collections/community.general/pull/9584). - - gitlab_runners inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - gitlab_runners inventory plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). - - groupby_as_dict filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - hashids filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - hiera lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - homebrew - greatly speed up module when multiple packages are passed in - the ``name`` option (https://github.com/ansible-collections/community.general/pull/9181). - - homebrew - remove duplicated package name validation (https://github.com/ansible-collections/community.general/pull/9076). - - 'hpilo_boot - add option to get an idempotent behavior while powering on - server, resulting in success instead of failure when using ``state: boot_once`` - option (https://github.com/ansible-collections/community.general/pull/9646).' - - icinga2 inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - icinga2 inventory plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9323). - - idrac_redfish_command, idrac_redfish_config, idrac_redfish_info - add ``validate_certs``, - ``ca_path``, and ``ciphers`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, - https://github.com/ansible-collections/community.general/pull/9964). - - ilo_redfish_command, ilo_redfish_config, ilo_redfish_info - add ``validate_certs``, - ``ca_path``, and ``ciphers`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, - https://github.com/ansible-collections/community.general/pull/9964). - - incus connection plugin - adds ``remote_user`` and ``incus_become_method`` - parameters for allowing a non-root user to connect to an Incus instance - (https://github.com/ansible-collections/community.general/pull/9743). - - incus connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - incus connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - ini_file - modify an inactive option also when there are spaces in front - of the comment symbol (https://github.com/ansible-collections/community.general/pull/10102, - https://github.com/ansible-collections/community.general/issues/8539). - - iocage connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - iocage connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - iocage inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - iocage inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - iocage inventory plugin - the new parameter ``hooks_results`` of the plugin - is a list of files inside a jail that provide configuration parameters for - the inventory. The inventory plugin reads the files from the jails and put - the contents into the items of created variable ``iocage_hooks`` (https://github.com/ansible-collections/community.general/issues/9650, - https://github.com/ansible-collections/community.general/pull/9651). - - iocage inventory plugin - the new parameter ``inventory_hostname_tag`` of - the plugin provides the name of the tag in the C(iocage properties notes) - that contains the jails alias. The new parameter ``inventory_hostname_required``, - if enabled, makes the tag mandatory (https://github.com/ansible-collections/community.general/issues/10206, - https://github.com/ansible-collections/community.general/pull/10207). - - iocage inventory plugin - the new parameter ``sudo`` of the plugin lets - the command ``iocage list -l`` to run as root on the iocage host. This is - needed to get the IPv4 of a running DHCP jail (https://github.com/ansible-collections/community.general/issues/9572, - https://github.com/ansible-collections/community.general/pull/9573). - - iptables_state action plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - iptables_state action plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9318). - - iso_extract - adds ``password`` parameter that is passed to 7z (https://github.com/ansible-collections/community.general/pull/9159). - - jabber callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - jabber callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - jail connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - jail connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - jc filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - jira - adds ``client_cert`` and ``client_key`` parameters for supporting - client certificate authentification when connecting to Jira (https://github.com/ansible-collections/community.general/pull/9753). - - jira - transition operation now has ``status_id`` to directly reference - wanted transition (https://github.com/ansible-collections/community.general/pull/9602). - - json_query filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - keep_keys filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - keycloak - add an action group for Keycloak modules to allow ``module_defaults`` - to be set for Keycloak tasks (https://github.com/ansible-collections/community.general/pull/9284). - - keycloak module_utils - user groups can now be referenced by their name, - like ``staff``, or their path, like ``/staff/engineering``. The path syntax - allows users to reference subgroups, which is not possible otherwise (https://github.com/ansible-collections/community.general/pull/9898). - - keycloak_* modules - ``refresh_token`` parameter added. When multiple authentication - parameters are provided (``token``, ``refresh_token``, and ``auth_username``/``auth_password``), - modules will now automatically retry requests upon authentication errors - (401), using in order the token, refresh token, and username/password (https://github.com/ansible-collections/community.general/pull/9494). - - keycloak_realm - remove ID requirement when creating a realm to allow Keycloak - generating its own realm ID (https://github.com/ansible-collections/community.general/pull/9768). - - keycloak_user module - user groups can now be referenced by their name, - like ``staff``, or their path, like ``/staff/engineering``. The path syntax - allows users to reference subgroups, which is not possible otherwise (https://github.com/ansible-collections/community.general/pull/9898). - - keyring lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - known_hosts - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - ksu become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - ksu become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - lastpass lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - launchd - add ``plist`` option for services such as sshd, where the plist - filename doesn't match the service name (https://github.com/ansible-collections/community.general/pull/9102). - - linode inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - linode inventory plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9323). - - lists filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - lists_mergeby filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - lldp - adds ``multivalues`` parameter to control behavior when lldpctl outputs - an attribute multiple times (https://github.com/ansible-collections/community.general/pull/9657). - - lmdb_kv lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - lmdb_kv lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - locale_gen - invert the logic to determine ``ubuntu_mode``, making it look - first for ``/etc/locale.gen`` (set ``ubuntu_mode`` to ``False``) and only - then looking for ``/var/lib/locales/supported.d/`` (set ``ubuntu_mode`` - to ``True``) (https://github.com/ansible-collections/community.general/pull/9238, - https://github.com/ansible-collections/community.general/issues/9131, https://github.com/ansible-collections/community.general/issues/8487). - - 'locale_gen - new return value ``mechanism`` to better express the semantics - of the ``ubuntu_mode``, with the possible values being either ``glibc`` - (``ubuntu_mode=False``) or ``ubuntu_legacy`` (``ubuntu_mode=True``) (https://github.com/ansible-collections/community.general/pull/9238). - - ' - - log_plays callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - log_plays callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - loganalytics callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - loganalytics callback plugin - instead of trying to extract the ansible-core - version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). - - loganalytics callback plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9321). - - logdna callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - logdna callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - logentries callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - logentries callback plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - logentries callback plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9321). - - logstash callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - lvg - add ``remove_extra_pvs`` parameter to control if ansible should remove - physical volumes which are not in the ``pvs`` parameter (https://github.com/ansible-collections/community.general/pull/9698). - - lxc connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - lxc connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - lxd connection plugin - adds ``remote_user`` and ``lxd_become_method`` parameters - for allowing a non-root user to connect to an LXD instance (https://github.com/ansible-collections/community.general/pull/9659). - - lxd connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - lxd connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - lxd inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - lxd inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - lxd inventory plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9323). - - machinectl become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - machinectl become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - mail callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - mail callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - manageiq_alert_profiles - improve handling of parameter requirements (https://github.com/ansible-collections/community.general/pull/9449). - - manifold lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - manifold lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - maven_artifact - removed compatibility code for ansible-core < 2.12 (https://github.com/ansible-collections/community.general/pull/10192). - - memcached cache plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - memcached cache plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9320). - - merge_variables lookup plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). - - nmap inventory plugin - adds ``dns_servers`` option for specifying DNS servers - for name resolution. Accepts hostnames or IP addresses in the same format - as the ``exclude`` option (https://github.com/ansible-collections/community.general/pull/9849). - - nmap inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - nmap inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - nmap inventory plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9323). - - nmcli - add ``sriov`` parameter that enables support for SR-IOV settings - (https://github.com/ansible-collections/community.general/pull/9168). - - nmcli - add a option ``fail_over_mac`` (https://github.com/ansible-collections/community.general/issues/9570, - https://github.com/ansible-collections/community.general/pull/9571). - - nmcli - add support for Infiniband MAC setting when ``type`` is ``infiniband`` - (https://github.com/ansible-collections/community.general/pull/9962). - - nmcli - adds VRF support with new ``type`` value ``vrf`` and new ``slave_type`` - value ``vrf`` as well as new ``table`` parameter (https://github.com/ansible-collections/community.general/pull/9658, - https://github.com/ansible-collections/community.general/issues/8014). - - nmcli - adds ``autoconnect_priority`` and ``autoconnect_retries`` options - to support autoconnect logic (https://github.com/ansible-collections/community.general/pull/10134). - - nrdp callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - nrdp callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - null callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - one_template - adds ``filter`` option for retrieving templates which are - not owned by the user (https://github.com/ansible-collections/community.general/pull/9547, - https://github.com/ansible-collections/community.general/issues/9278). - - 'one_vm - update allowed values for ``updateconf`` to include new parameters - as per the latest OpenNebula API documentation. - - Added parameters: - - - * ``OS``: ``FIRMWARE``; - - * ``CPU_MODEL``: ``MODEL``, ``FEATURES``; - - * ``FEATURES``: ``VIRTIO_BLK_QUEUES``, ``VIRTIO_SCSI_QUEUES``, ``IOTHREADS``; - - * ``GRAPHICS``: ``PORT``, ``COMMAND``; - - * ``VIDEO``: ``ATS``, ``IOMMU``, ``RESOLUTION``, ``TYPE``, ``VRAM``; - - * ``RAW``: ``VALIDATE``; - - * ``BACKUP_CONFIG``: ``FS_FREEZE``, ``KEEP_LAST``, ``BACKUP_VOLATILE``, - ``MODE``, ``INCREMENT_MODE``. - - - (https://github.com/ansible-collections/community.general/pull/9959).' - - onepassword lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - onepassword lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - onepassword_doc lookup plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9324). - - onepassword_ssh_key - refactor to move code to lookup class (https://github.com/ansible-collections/community.general/pull/9633). - - online inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - online inventory plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9323). - - opennebula inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - opennebula inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - opennebula inventory plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9323). - - opentelemetry callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - opentelemetry callback plugin - instead of trying to extract the ansible-core - version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). - - opentelemetry callback plugin - remove code handling Python versions prior - to 3.7 (https://github.com/ansible-collections/community.general/pull/9482). - - opentelemetry callback plugin - remove code handling Python versions prior - to 3.7 (https://github.com/ansible-collections/community.general/pull/9503). - - opentelemetry callback plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9321). - - pacemaker_cluster - remove unused code (https://github.com/ansible-collections/community.general/pull/9471). - - pacemaker_cluster - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/9471). - - pacemaker_resource - add maintenance mode support for handling resource - creation and deletion (https://github.com/ansible-collections/community.general/issues/10180, - https://github.com/ansible-collections/community.general/pull/10194). - - pacman_key - support verifying that keys are trusted and not expired (https://github.com/ansible-collections/community.general/issues/9949, - https://github.com/ansible-collections/community.general/pull/9950). - - parted - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - passwordstore lookup plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9324). - - pbrun become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - pbrun become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - pfexec become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - pfexec become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - pickle cache plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - pipx - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9180). - - 'pipx - parameter ``name`` now accepts Python package specifiers (https://github.com/ansible-collections/community.general/issues/7815, - https://github.com/ansible-collections/community.general/pull/10031). - - ' - - pipx module_utils - filtering application list by name now happens in the - modules (https://github.com/ansible-collections/community.general/pull/10031). - - pipx_info - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9180). - - pipx_info - filtering application list by name now happens in the module (https://github.com/ansible-collections/community.general/pull/10031). - - pmrun become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - pmrun become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - pulp_repo - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - puppet - improve parameter formatting, no impact to user (https://github.com/ansible-collections/community.general/pull/10014). - - qubes connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - qubes connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - random_mac filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - random_pet lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - redfish module utils - add ``REDFISH_COMMON_ARGUMENT_SPEC``, a corresponding - ``redfish`` docs fragment, and support for its ``validate_certs``, ``ca_path``, - and ``ciphers`` options (https://github.com/ansible-collections/community.general/issues/3686, - https://github.com/ansible-collections/community.general/pull/9964). - - redfish module utils - removed compatibility code for ansible-core < 2.14 - (https://github.com/ansible-collections/community.general/pull/10160). - - redfish_command - add ``PowerFullPowerCycle`` to power command options (https://github.com/ansible-collections/community.general/pull/9729). - - redfish_command - add ``update_custom_oem_header``, ``update_custom_oem_params``, - and ``update_custom_oem_mime_type`` options (https://github.com/ansible-collections/community.general/pull/9123). - - redfish_command, redfish_config, redfish_info - add ``validate_certs`` and - ``ca_path`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, - https://github.com/ansible-collections/community.general/pull/9964). - - redfish_config - add command ``SetPowerRestorePolicy`` to set the desired - power state of the system when power is restored (https://github.com/ansible-collections/community.general/pull/9837). - - redfish_info - add command ``GetAccountServiceConfig`` to get full information - about AccountService configuration (https://github.com/ansible-collections/community.general/pull/9403). - - redfish_info - add command ``GetPowerRestorePolicy`` to get the desired - power state of the system when power is restored (https://github.com/ansible-collections/community.general/pull/9824). - - redfish_utils module utils - remove redundant code (https://github.com/ansible-collections/community.general/pull/9190). - - redhat_subscription - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - redis cache plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - redis cache plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - redis cache plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9320). - - redis lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - remove_keys filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - replace_keys filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - revbitspss lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - reveal_ansible_type filter plugin - adjust standard preamble for Python - 3 (https://github.com/ansible-collections/community.general/pull/9585). - - rocketchat - fix duplicate JSON conversion for Rocket.Chat < 7.4.0 (https://github.com/ansible-collections/community.general/pull/9965). - - rocketchat - option ``is_pre740`` has been added to control the format of - the payload. For Rocket.Chat 7.4.0 or newer, it must be set to ``false`` - (https://github.com/ansible-collections/community.general/pull/9882). - - rpm_ostree_pkg - added the options ``apply_live`` (https://github.com/ansible-collections/community.general/pull/9167). - - rpm_ostree_pkg - added the return value ``needs_reboot`` (https://github.com/ansible-collections/community.general/pull/9167). - - run0 become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - saltstack connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - saltstack connection plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9322). - - say callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - say callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - scaleway inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - scaleway inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - scaleway inventory plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9323). - - scaleway_lb - minor simplification in the code (https://github.com/ansible-collections/community.general/pull/9189). - - selective callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - selective callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - sesu become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - sesu become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - shelvefile lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - shutdown action plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - shutdown action plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - shutdown action plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9318). - - slack callback plugin - add ``http_agent`` option to enable the user to - set a custom user agent for slack callback plugin (https://github.com/ansible-collections/community.general/issues/9813, - https://github.com/ansible-collections/community.general/pull/9836). - - slack callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - slack callback plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - slack callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - snap - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9598). - - snap_alias - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9598). - - solaris_zone - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - sorcery - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - splunk callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - splunk callback plugin - instead of trying to extract the ansible-core version - from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). - - splunk callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - ssh_config - add ``dynamicforward`` option (https://github.com/ansible-collections/community.general/pull/9192). - - ssh_config - add ``other_options`` option (https://github.com/ansible-collections/community.general/issues/8053, - https://github.com/ansible-collections/community.general/pull/9684). - - stackpath_compute inventory plugin - adjust standard preamble for Python - 3 (https://github.com/ansible-collections/community.general/pull/9584). - - stackpath_compute inventory plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). - - sudosu become plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - sudosu become plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9319). - - sumologic callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - sumologic callback plugin - instead of trying to extract the ansible-core - version from task data, use ansible-core's actual version (https://github.com/ansible-collections/community.general/pull/10193). - - syslog_json callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - systemd_info - add wildcard expression support in ``unitname`` option (https://github.com/ansible-collections/community.general/pull/9821). - - systemd_info - extend support to timer units (https://github.com/ansible-collections/community.general/pull/9891). - - terraform - adds the ``no_color`` parameter, which suppresses or allows - color codes in stdout from Terraform commands (https://github.com/ansible-collections/community.general/pull/10154). - - time filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - timestamp callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - timestamp callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - timezone - open file using ``open()`` as a context manager (https://github.com/ansible-collections/community.general/pull/9579). - - to_ini filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - to_ini filter plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - tss lookup plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - tss lookup plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9324). - - ufw - add support for ``vrrp`` protocol (https://github.com/ansible-collections/community.general/issues/9562, - https://github.com/ansible-collections/community.general/pull/9582). - - unicode_normalize filter plugin - adjust standard preamble for Python 3 - (https://github.com/ansible-collections/community.general/pull/9585). - - unixy callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - unixy callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - version_sort filter plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9585). - - virtualbox inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - virtualbox inventory plugin - clean up string conversions (https://github.com/ansible-collections/community.general/pull/9379). - - virtualbox inventory plugin - use f-strings instead of interpolations or - ``format`` (https://github.com/ansible-collections/community.general/pull/9323). - - vmadm - add new options ``flexible_disk_size`` and ``owner_uuid`` (https://github.com/ansible-collections/community.general/pull/9892). - - wdc_redfish_command, wdc_redfish_info - add ``validate_certs``, ``ca_path``, - and ``ciphers`` options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, - https://github.com/ansible-collections/community.general/pull/9964). - - xbps - add ``root`` and ``repository`` options to enable bootstrapping new - void installations (https://github.com/ansible-collections/community.general/pull/9174). - - xcc_redfish_command - add ``validate_certs``, ``ca_path``, and ``ciphers`` - options to configure TLS/SSL (https://github.com/ansible-collections/community.general/issues/3686, - https://github.com/ansible-collections/community.general/pull/9964). - - xen_orchestra inventory plugin - add ``use_vm_uuid`` and ``use_host_uuid`` - boolean options to allow switching over to using VM/Xen name labels instead - of UUIDs as item names (https://github.com/ansible-collections/community.general/pull/9787). - - xen_orchestra inventory plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - xen_orchestra inventory plugin - use f-strings instead of interpolations - or ``format`` (https://github.com/ansible-collections/community.general/pull/9323). - - xfconf - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9226). - - xfconf_info - add return value ``version`` (https://github.com/ansible-collections/community.general/pull/9226). - - xml - support adding value of children when creating with subnodes (https://github.com/ansible-collections/community.general/pull/8437). - - yaml cache plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - yaml callback plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9583). - - yaml callback plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9321). - - zone connection plugin - adjust standard preamble for Python 3 (https://github.com/ansible-collections/community.general/pull/9584). - - zone connection plugin - use f-strings instead of interpolations or ``format`` - (https://github.com/ansible-collections/community.general/pull/9322). - - zypper - add ``quiet`` option (https://github.com/ansible-collections/community.general/pull/9270). - - zypper - add ``simple_errors`` option (https://github.com/ansible-collections/community.general/pull/9270). - - zypper - adds ``skip_post_errors`` that allows to skip RPM post-install - errors (Zypper return code 107) (https://github.com/ansible-collections/community.general/issues/9972). - release_summary: This is release 11.0.0 of ``community.general``, released on - 2025-06-16. - removed_features: - - Dropped support for ansible-core 2.15. The collection now requires ansible-core - 2.16 or newer. This means that on the controller, Python 3.10+ is required. - On the target side, Python 2.7 and Python 3.6+ are supported (https://github.com/ansible-collections/community.general/pull/10160, - https://github.com/ansible-collections/community.general/pull/10192). - - The Proxmox content (modules and plugins) has been moved to the `new collection - community.proxmox `__. - Since community.general 11.0.0, these modules and plugins have been replaced - by deprecated redirections to community.proxmox. You need to explicitly - install community.proxmox, for example with ``ansible-galaxy collection - install community.proxmox``, or by installing a new enough version of the - Ansible community package. We suggest to update your roles and playbooks - to use the new FQCNs as soon as possible to avoid getting deprecation messages - (https://github.com/ansible-collections/community.general/pull/10110). - - apt_rpm - the ``present`` and ``installed`` states are no longer equivalent - to ``latest``, but to ``present_not_latest`` (https://github.com/ansible-collections/community.general/pull/10126). - - clc_* modules and doc fragment - the modules were removed since CenturyLink - Cloud services went EOL in September 2023 (https://github.com/ansible-collections/community.general/pull/10126). - - django_manage - the ``ack_venv_creation_deprecation`` option has been removed. - It had no effect anymore anyway (https://github.com/ansible-collections/community.general/pull/10126). - - git_config - it is no longer allowed to use ``state=present`` with no value - to read the config value. Use the ``community.general.git_config_info`` - module instead (https://github.com/ansible-collections/community.general/pull/10126). - - git_config - the ``list_all`` option has been removed. Use the ``community.general.git_config_info`` - module instead (https://github.com/ansible-collections/community.general/pull/10126). - - hipchat - the module was removed since the hipchat service has been discontinued - and the self-hosted variant has been End of Life since 2020 (https://github.com/ansible-collections/community.general/pull/10126). - - manifold lookup plugin - the plugin was removed since the company was acquired - in 2021 and service was ceased afterwards (https://github.com/ansible-collections/community.general/pull/10126). - - mh.mixins.deps module utils - this module utils has been removed. Use the - ``deps`` module utils instead (https://github.com/ansible-collections/community.general/pull/10126). - - mh.mixins.vars module utils - this module utils has been removed. Use ``VarDict`` - from the ``vardict`` module utils instead (https://github.com/ansible-collections/community.general/pull/10126). - - mh.module_helper module utils - ``AnsibleModule`` and ``VarsMixin`` are - no longer provided (https://github.com/ansible-collections/community.general/pull/10126). - - mh.module_helper module utils - ``VarDict`` is now imported from the ``vardict`` - module utils and no longer from the removed ``mh.mixins.vars`` module utils - (https://github.com/ansible-collections/community.general/pull/10126). - - mh.module_helper module utils - the attributes ``use_old_vardict`` and ``mute_vardict_deprecation`` - from ``ModuleHelper`` have been removed. We suggest to remove them from - your modules if you no longer support community.general < 11.0.0 (https://github.com/ansible-collections/community.general/pull/10126). - - module_helper module utils - ``StateMixin``, ``DependencyCtxMgr``, ``VarMeta``, - ``VarDict``, and ``VarsMixin`` are no longer provided (https://github.com/ansible-collections/community.general/pull/10126). - - pipx - module no longer supports ``pipx`` older than 1.7.0 (https://github.com/ansible-collections/community.general/pull/10137). - - pipx_info - module no longer supports ``pipx`` older than 1.7.0 (https://github.com/ansible-collections/community.general/pull/10137). - - profitbrick* modules - the modules were removed since the supporting library - is unsupported since 2021 (https://github.com/ansible-collections/community.general/pull/10126). - - redfish_utils module utils - the ``_init_session`` method has been removed - (https://github.com/ansible-collections/community.general/pull/10126). - - stackpath_compute inventory plugin - the plugin was removed since the company - and the service were sunset in June 2024 (https://github.com/ansible-collections/community.general/pull/10126). - security_fixes: - - keycloak_authentication - API calls did not properly set the ``priority`` - during update resulting in incorrectly sorted authentication flows. This - apparently only affects Keycloak 25 or newer (https://github.com/ansible-collections/community.general/pull/9263). - - keycloak_client - Sanitize ``saml.encryption.private.key`` so it does not - show in the logs (https://github.com/ansible-collections/community.general/pull/9621). - fragments: - - 10005-fix-method-exists-in-sysrc.yml - - 10011-github_deploy_key-check-key-present.yml - - 10012-improve-error-handling-homebrew-missing-tap.yml - - 10014-puppet-improve-param.yml - - 10026-stackpath-compute-deprecation.yml - - 10028-manifold-deprecation.yml - - 10031-pipx-python-version.yml - - 10063-cobbler-add-connection-timeout.yml - - 10075-keycloak_user_rolemapping-diff.yml - - 10097-fix-rundeck_acl_policy-project-endpoint.yml - - 10102-ini_file-fix-unmatched-whitespace-before-comment.yml - - 10121-sysrc-fix-split-first-separator.yml - - 10128-mark-end-of-options.yml - - 10134-add-autoconnect-options.yml - - 10136-cache-pickle-json.yml - - 10137-pipx-cg11.yml - - 10145-fix-typeerror-cobbler-xmlrpc.yml - - 10154-terraform_no_color_paramater.yml - - 10177-git-config-required.yml - - 10178-update-minimum-version-number-to-avoid-wrong-comparisons-cobbler-xmlrpc.yml - - 10191-github_key-add-api_url-parameter.yml - - 10193-callback-ansible_version.yml - - 10194-add-pcs-resource-maintenace-mode.yml - - 10196-fix-gitlab-access-tokens.yml - - 10198-cargo-features-parameter.yml - - 10207-iocage-inventory-alias.yml - - 10212-yaml.yml - - 10213-yaml-deprecation.yml - - 10222-zypper_repository-readfp.yml - - 10224-zypper_repository-metalink.yml - - 10242-yaml.yml - - 11.0.0.yml - - 5932-launchd-plist.yml - - 6264-zfs-multiline-property-value.yml - - 8437-xml-children-value.yml - - 9076-remove-duplicated-homebrew-package-name-validation.yml - - 9077-keycloak_client-fix-attributes-dict-turned-into-list.yml - - 9082-keycloak_clientscope-fix-attributes-dict-turned-into-list.yml - - 9096-alternatives-add-family-parameter.yml - - 9106-passwordstore-fix-subkey-creation-even-when-create-==-false.yml - - 9114-redfish-utils-update-remove-default-applytime.yml - - 9123-redfish-command-custom-oem-params.yml - - 9124-dnf_config_manager.yml - - 9128-homebrew_cask-name-regex-fix.yml - - 9132-cloudflare_dns-comment-and-tags.yml - - 9157-fix-dnf_config_manager-locale.yml - - 9159-iso-extract_add_password.yml - - 9167-rpm_ostree_pkg-apply_live.yml - - 9168-nmcli-add-sriov-parameter.yml - - 9171-gio-mime-fix-version.yml - - 9172-opkg-deprecate-force-none.yml - - 9174-xbps-support-rootdir-and-repository.yml - - 9179-deps-tests.yml - - 9180-pipx-version.yml - - 9181-improve-homebrew-module-performance.yml - - 9186-fix-broken-check-mode-in-github-key.yml - - 9187-flatpak-lang.yml - - 9189-scalway-lb-simplify-return.yml - - 9190-redfish-utils-unused-code.yml - - 9198-fail-if-slack-api-response-is-not-ok-with-error-message.yml - - 9202-keycloak_clientscope_type-sort-lists.yml - - 9226-xfconf-version.yml - - 9234-fix-verify-bios-attributes-multi-system.yml - - 9238-locale-gen-rewrite.yml - - 9255-fix-handling-of-aliased-homebrew-packages.yml - - 9263-kc_authentication-api-priority.yaml - - 9270-zypper-add-simple_errors.yaml - - 9284-add-keycloak-action-group.yml - - 9318-fstr-actionplugins.yml - - 9319-fstr-become-plugins.yml - - 9320-fstr-cache-plugins.yml - - 9321-fstr-callback-plugins.yml - - 9322-fstr-connection-plugins.yml - - 9323-fstr-inventory-plugins.yml - - 9324-fstr-lookup-plugins.yml - - 9334-qubes-conn.yml - - 9363-dig-nonameservers.yml - - 9379-refactor.yml - - 9387-pacemaker-cluster-cmd.yml - - 9403-redfish-add-get-accountservice.yml - - 9425-gitlab-instance-raw-variable.yml - - 9432-deprecate-pure.yml - - 9443-slack-prepend_hash.yml - - 9449-manageiq-alert-profiles-reqs.yml - - 9451-facter-deprecation.yml - - 9456-yaml-callback-deprecation.yml - - 9457-apache2-mod-proxy-revamp.yml - - 9482-opentelemetry-python-37.yml - - 9483-sensu-deprecation.yml - - 9487-atomic-deprecation.yml - - 9490-htpasswd-permissions.yml - - 9494-keycloak-modules-retry-request-on-authentication-error.yaml - - 9503-opentelemetry-remove-unused-code.yml - - 9539-iocage-inventory-dhcp.yml - - 9546-fix-handling-of-tap-homebrew-packages.yml - - 9547-one_template-filter.yml - - 9554-add-cpanm-option_with-recommends-and-suggests.yml - - 9570-feat-nmcli-add-fail-over-mac-parameter.yml - - 9573-iocage-inventory-sudo.yml - - 9577-mh-delegate-debug.yml - - 9578-redhat_subscription-no-remove-on-unregister.yml - - 9579-with-open.yml - - 9582-add-support-for-vrrp.yml - - 9583-py3-imports-actionbecomecachecallback.yml - - 9584-py3-imports-connectioninventory.yml - - 9585-py3-imports-filter.yml - - 9586-allow-transition-id-jira.yml - - 9598-snap-version.yml - - 9599-apache2-mod-proxy-revamp1.yml - - 9600-apache2-mod-proxy-revamp2.yml - - 9608-apache2-mod-proxy-revamp3.yml - - 9609-apache2-mod-proxy-revamp4.yml - - 9612-apache2-mod-proxy-revamp5.yml - - 9614-apache2-mod-proxy-revamp7.yml - - 9621-keycloak_client-sanitize-saml-encryption-key.yml - - 9623-pipx-global-latest.yml - - 9625-onepassword_doc.yml - - 9633-onepassword_ssh_key.yml - - 9644-kc_client-test-improvement-and-fix.yaml - - 9646-hpilo-fix-idempotency.yml - - 9649-cloudflare_dns-fix-crash-when-deleting-record.yml - - 9651-iocage-inventory-hooks.yml - - 9657-lldp-handling-attributes-defined-multiple-times.yml - - 9658-add-vrf-commands-to-nmcli-module.yml - - 9659-lxd_connection-nonroot-user.yml - - 9665-more-resilient-handling-of-homebrew-packages-names.yml - - 9691-keycloak-module-utils-replace-missing-return-in-get_role_composites.yml - - 9692-update-more-than-10-keycloak-sub-groups.yml - - 9694-ipa-host-certificate-revoked.yml - - 9695-xml-close-file.yml - - 9697-zfs-facts-type.yml - - 9698-lvg-remove-extra-pvs-parameter.yml - - 9728-bitwarden-collection-name-filter.yml - - 9729-redfish-fullpowercycle-command.yml - - 9733-profitbrick-deprecation.yml - - 9739-keycloak_client-compare-before-desired-directly.yml - - 9743-incus_connection-nonroot-user.yml - - 9753-jira-add-client-certificate-auth.yml - - 9762-apache2_mod_proxy.yml - - 9768-keycloak_realm-remove-id-requirement.yaml - - 9774-fix-elasticsearch_plugin-proxy-settings.yml - - 9777-homebrew-fix-crash-when-packages-include-tap.yml - - 9778-redhat_subscription-ensure-to-enable-content.yml - - 9787-xoa_allow_using_names_in_inventory.yml - - 9818-cloudflare-dns-exhausted-response.yml - - 9821-systemd_info-add-wildcards.yml - - 9824-redfish-implement-obtaining-powerrestorepolicy.yml - - 9833-data-tagging.yml - - 9836-option-for-http-agent-for-user-to-callback-slack.yml - - 9837-redfish-implement-setting-powerrestorepolicy.yml - - 9845-consul_token_idempotency.yml - - 9849-nmap_dns_servers.yml - - 9880-nmcli-fix-reorder-same-dns-nameservers-search-suffixes.yml - - 9882-fix-payload-to-match-rocketchat-740-requirement.yml - - 9891-systemd_info-add_timer.yml - - 9892-vmadm-add-new-options.yml - - 9893-cmdrunner-as-fixed-args.yml - - 9898-keycloak_user-supports-subgroups.yaml - - 9950-pacman_key-verify-key-validity.yml - - 9951-mod-php-identifier.yml - - 9953-gitlab-project-members-support-owner-level.yml - - 9959-update-opennebula-onevm-updateconf-params.yml - - 9960-gitlab_project-add-build_timeout-option.yml - - 9962-nmcli-add-infiniband-mac-support.yml - - 9964-redfish-tls.yml - - 9965-fix-duplicate-jsonify-payload-for-rocketchat-pre740.yml - - 9970-pkcs12_alias_cert_alias_optional.yml - - 9972-zypper-skip-post-errors.yml - - 9975-inventory-cobbler-as-rendered.yml - - 9976-keycloak_client-fix-idempotency-regression.yml - - 9987-keycloak-auth-flow-fix-config.yaml - - 9992-filtertypeerror.yml - - ansible-core-support.yml - - deprecations.yml - - dnf_versionlock.yml - - homebrew_cask.yml - - proxmox-removal.yml - - ssh_config_add_dynamicforward_option.yml - - ssh_config_add_other_options.yml - - sudoers.yml - modules: - - description: Manages Android SDK packages. - name: android_sdk - namespace: '' - - description: Decompresses compressed files. - name: decompress - namespace: '' - - description: Use the Modify-Increment LDAP V3 feature to increment an attribute - value. - name: ldap_inc - namespace: '' - - description: Manage LVM Physical Volumes. - name: lvm_pv - namespace: '' - - description: Manage pacemaker resources. - name: pacemaker_resource - namespace: '' - - description: C(systemd)'s C(systemd-creds decrypt) plugin. - name: systemd_creds_decrypt - namespace: '' - - description: C(systemd)'s C(systemd-creds encrypt) plugin. - name: systemd_creds_encrypt - namespace: '' - - description: Gather C(systemd) unit info. - name: systemd_info - namespace: '' - - description: Set default handler for MIME types, for applications using XDG - tools. - name: xdg_mime - namespace: '' - - description: Manage ZFS zpools. - name: zpool - namespace: '' - plugins: - callback: - - description: Prints playbook task snippet to job output. - name: print_task - namespace: null - connection: - - description: Run tasks in WSL distribution using wsl.exe CLI via SSH. - name: wsl - namespace: null - filter: - - description: Produce a list of accumulated sums of the input list contents. - name: accumulate - namespace: null - - description: Create a JSON patch by comparing two JSON files. - name: json_diff - namespace: null - - description: Apply a JSON-Patch (RFC 6902) operation to an object. - name: json_patch - namespace: null - - description: Apply JSON-Patch (RFC 6902) operations to an object. - name: json_patch_recipe - namespace: null - - description: Format a list of dictionaries as an ASCII table. - name: to_prettytable - namespace: null - inventory: - - description: iocage inventory source. - name: iocage - namespace: null - lookup: - - description: Fetch SSH keys stored in 1Password. - name: onepassword_ssh_key - namespace: null - release_date: '2025-06-16' - 11.1.0: - changes: - bugfixes: - - dependent lookup plugin - avoid deprecated ansible-core 2.19 functionality - (https://github.com/ansible-collections/community.general/pull/10359). - - github_release - support multiple types of GitHub tokens; no longer failing - when ``ghs_`` token type is provided (https://github.com/ansible-collections/community.general/issues/10338, - https://github.com/ansible-collections/community.general/pull/10339). - - icinga2 inventory plugin - avoid using deprecated option when templating - options (https://github.com/ansible-collections/community.general/pull/10271). - - incus connection plugin - fix error handling to return more useful Ansible - errors to the user (https://github.com/ansible-collections/community.general/issues/10344, - https://github.com/ansible-collections/community.general/pull/10349). - - linode inventory plugin - avoid using deprecated option when templating - options (https://github.com/ansible-collections/community.general/pull/10271). - - logstash callback plugin - remove reference to Python 2 library (https://github.com/ansible-collections/community.general/pull/10345). - deprecated_features: - - catapult - module is deprecated and will be removed in community.general - 13.0.0 (https://github.com/ansible-collections/community.general/issues/10318, - https://github.com/ansible-collections/community.general/pull/10329). - - pacemaker_cluster - the parameter ``state`` will become a required parameter - in community.general 12.0.0 (https://github.com/ansible-collections/community.general/pull/10227). - minor_changes: - - cloudflare_dns - adds support for PTR records (https://github.com/ansible-collections/community.general/pull/10267). - - cloudflare_dns - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - cloudflare_dns - simplify validations and refactor some code, no functional - changes (https://github.com/ansible-collections/community.general/pull/10269). - - crypttab - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - datadog_monitor - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - dense callback plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). - - gitlab_deploy_key - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - gitlab_group_access_token - remove redundant brackets in conditionals, no - functional changes (https://github.com/ansible-collections/community.general/pull/10328). - - gitlab_hook - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - gitlab_project_access_token - remove redundant brackets in conditionals, - no functional changes (https://github.com/ansible-collections/community.general/pull/10328). - - gitlab_runner - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - iocage inventory plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). - - ipa_group - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - jc filter plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). - - jenkins_build - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - jenkins_build_info - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - keycloak - add support for ``grant_type=client_credentials`` to all keycloak - modules, so that specifying ``auth_client_id`` and ``auth_client_secret`` - is sufficient for authentication (https://github.com/ansible-collections/community.general/pull/10231). - - keycloak module utils - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - logstash callback plugin - remove redundant brackets in conditionals, no - functional changes (https://github.com/ansible-collections/community.general/pull/10328). - - mail callback plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). - - nmcli - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - nmcli - simplify validations and refactor some code, no functional changes - (https://github.com/ansible-collections/community.general/pull/10323). - - oneandone_firewall_policy - remove redundant brackets in conditionals, no - functional changes (https://github.com/ansible-collections/community.general/pull/10328). - - oneandone_load_balancer - remove redundant brackets in conditionals, no - functional changes (https://github.com/ansible-collections/community.general/pull/10328). - - oneandone_monitoring_policy - remove redundant brackets in conditionals, - no functional changes (https://github.com/ansible-collections/community.general/pull/10328). - - onepassword_info - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - osx_defaults - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - ovh_ip_loadbalancing_backend - remove redundant brackets in conditionals, - no functional changes (https://github.com/ansible-collections/community.general/pull/10328). - - pacemaker_cluster - add ``state=maintenance`` for managing pacemaker maintenance - mode (https://github.com/ansible-collections/community.general/issues/10200, - https://github.com/ansible-collections/community.general/pull/10227). - - pacemaker_cluster - rename ``node`` to ``name`` and add ``node`` alias (https://github.com/ansible-collections/community.general/pull/10227). - - pacemaker_resource - enhance module by removing duplicative code (https://github.com/ansible-collections/community.general/pull/10227). - - packet_device - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - pagerduty - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - pingdom - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - python_runner module utils - remove redundant brackets in conditionals, - no functional changes (https://github.com/ansible-collections/community.general/pull/10328). - - rhevm - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - rocketchat - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - sensu_silence - remove redundant brackets in conditionals, no functional - changes (https://github.com/ansible-collections/community.general/pull/10328). - - sl_vm - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - urpmi - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - wsl connection plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). - - xattr - remove redundant brackets in conditionals, no functional changes - (https://github.com/ansible-collections/community.general/pull/10328). - - xen_orchestra inventory plugin - use f-strings instead of concatenation - (https://github.com/ansible-collections/community.general/pull/10285). - - xfconf - minor adjustments the the code (https://github.com/ansible-collections/community.general/pull/10311). - - xml - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). - release_summary: Regular bugfix and feature release. - fragments: - - 10227-pacemaker-cluster-and-resource-enhancement.yml - - 10231-keycloak-add-client-credentials-authentication.yml - - 10267-add-cloudflare-ptr-record-support.yml - - 10269-cloudflare-dns-refactor.yml - - 10271--disable_lookups.yml - - 10285-fstr-plugins.yml - - 10311-xfconf-refactor.yml - - 10323-nmcli-improvements.yml - - 10328-redundant-brackets.yml - - 10329-catapult-deprecation.yml - - 10339-github_app_access_token.yml - - 10349-incus_connection-error-handling.yml - - 10359-dependent.yml - - 11.1.0.yml - - logstash.yml - modules: - - description: Manage Jenkins credentials and domains via API. - name: jenkins_credential - namespace: '' - plugins: - callback: - - description: Only show tasks. - name: tasks_only - namespace: null - release_date: '2025-07-14' +ancestor: 11.0.0 +releases: {} diff --git a/changelogs/config.yaml b/changelogs/config.yaml index 32ffe27f2b..578b8c3765 100644 --- a/changelogs/config.yaml +++ b/changelogs/config.yaml @@ -7,9 +7,9 @@ changelog_filename_template: ../CHANGELOG.rst changelog_filename_version_depth: 0 changes_file: changelog.yaml changes_format: combined +ignore_other_fragment_extensions: true keep_fragments: false mention_ancestor: true -flatmap: true new_plugins_after_name: removed_features notesdir: fragments output_formats: @@ -40,3 +40,4 @@ use_fqcn: true add_plugin_period: true changelog_nice_yaml: true changelog_sort: version +vcs: auto diff --git a/changelogs/fragments/10227-pacemaker-cluster-and-resource-enhancement.yml b/changelogs/fragments/10227-pacemaker-cluster-and-resource-enhancement.yml new file mode 100644 index 0000000000..d1cfee7816 --- /dev/null +++ b/changelogs/fragments/10227-pacemaker-cluster-and-resource-enhancement.yml @@ -0,0 +1,7 @@ +deprecated_features: + - pacemaker_cluster - the parameter ``state`` will become a required parameter in community.general 12.0.0 (https://github.com/ansible-collections/community.general/pull/10227). + +minor_changes: + - pacemaker_cluster - add ``state=maintenance`` for managing pacemaker maintenance mode (https://github.com/ansible-collections/community.general/issues/10200, https://github.com/ansible-collections/community.general/pull/10227). + - pacemaker_cluster - rename ``node`` to ``name`` and add ``node`` alias (https://github.com/ansible-collections/community.general/pull/10227). + - pacemaker_resource - enhance module by removing duplicative code (https://github.com/ansible-collections/community.general/pull/10227). diff --git a/changelogs/fragments/10231-keycloak-add-client-credentials-authentication.yml b/changelogs/fragments/10231-keycloak-add-client-credentials-authentication.yml new file mode 100644 index 0000000000..eec12e8669 --- /dev/null +++ b/changelogs/fragments/10231-keycloak-add-client-credentials-authentication.yml @@ -0,0 +1,2 @@ +minor_changes: + - keycloak - add support for ``grant_type=client_credentials`` to all keycloak modules, so that specifying ``auth_client_id`` and ``auth_client_secret`` is sufficient for authentication (https://github.com/ansible-collections/community.general/pull/10231). diff --git a/changelogs/fragments/10267-add-cloudflare-ptr-record-support.yml b/changelogs/fragments/10267-add-cloudflare-ptr-record-support.yml new file mode 100644 index 0000000000..29d71ca393 --- /dev/null +++ b/changelogs/fragments/10267-add-cloudflare-ptr-record-support.yml @@ -0,0 +1,2 @@ +minor_changes: + - cloudflare_dns - adds support for PTR records (https://github.com/ansible-collections/community.general/pull/10267). diff --git a/changelogs/fragments/10269-cloudflare-dns-refactor.yml b/changelogs/fragments/10269-cloudflare-dns-refactor.yml new file mode 100644 index 0000000000..9f91040d63 --- /dev/null +++ b/changelogs/fragments/10269-cloudflare-dns-refactor.yml @@ -0,0 +1,2 @@ +minor_changes: + - cloudflare_dns - simplify validations and refactor some code, no functional changes (https://github.com/ansible-collections/community.general/pull/10269). diff --git a/changelogs/fragments/10271--disable_lookups.yml b/changelogs/fragments/10271--disable_lookups.yml new file mode 100644 index 0000000000..d28e2ac833 --- /dev/null +++ b/changelogs/fragments/10271--disable_lookups.yml @@ -0,0 +1,3 @@ +bugfixes: + - "icinga2 inventory plugin - avoid using deprecated option when templating options (https://github.com/ansible-collections/community.general/pull/10271)." + - "linode inventory plugin - avoid using deprecated option when templating options (https://github.com/ansible-collections/community.general/pull/10271)." diff --git a/changelogs/fragments/10285-fstr-plugins.yml b/changelogs/fragments/10285-fstr-plugins.yml new file mode 100644 index 0000000000..6fff590fee --- /dev/null +++ b/changelogs/fragments/10285-fstr-plugins.yml @@ -0,0 +1,7 @@ +minor_changes: + - dense callback plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). + - mail callback plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). + - wsl connection plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). + - jc filter plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). + - iocage inventory plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). + - xen_orchestra inventory plugin - use f-strings instead of concatenation (https://github.com/ansible-collections/community.general/pull/10285). diff --git a/changelogs/fragments/10311-xfconf-refactor.yml b/changelogs/fragments/10311-xfconf-refactor.yml new file mode 100644 index 0000000000..9d71bd17d8 --- /dev/null +++ b/changelogs/fragments/10311-xfconf-refactor.yml @@ -0,0 +1,2 @@ +minor_changes: + - xfconf - minor adjustments the the code (https://github.com/ansible-collections/community.general/pull/10311). diff --git a/changelogs/fragments/10323-nmcli-improvements.yml b/changelogs/fragments/10323-nmcli-improvements.yml new file mode 100644 index 0000000000..53436ea7d6 --- /dev/null +++ b/changelogs/fragments/10323-nmcli-improvements.yml @@ -0,0 +1,2 @@ +minor_changes: + - nmcli - simplify validations and refactor some code, no functional changes (https://github.com/ansible-collections/community.general/pull/10323). diff --git a/changelogs/fragments/10328-redundant-brackets.yml b/changelogs/fragments/10328-redundant-brackets.yml new file mode 100644 index 0000000000..f8f74a336c --- /dev/null +++ b/changelogs/fragments/10328-redundant-brackets.yml @@ -0,0 +1,32 @@ +minor_changes: + - logstash callback plugin - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - keycloak module utils - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - python_runner module utils - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - cloudflare_dns - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - crypttab - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - datadog_monitor - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - gitlab_deploy_key - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - gitlab_group_access_token - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - gitlab_hook - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - gitlab_project_access_token - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - gitlab_runner - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - ipa_group - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - jenkins_build - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - jenkins_build_info - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - nmcli - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - oneandone_firewall_policy - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - oneandone_load_balancer - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - oneandone_monitoring_policy - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - onepassword_info - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - osx_defaults - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - ovh_ip_loadbalancing_backend - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - packet_device - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - pagerduty - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - pingdom - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - rhevm - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - rocketchat - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - sensu_silence - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - sl_vm - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - urpmi - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - xattr - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). + - xml - remove redundant brackets in conditionals, no functional changes (https://github.com/ansible-collections/community.general/pull/10328). diff --git a/changelogs/fragments/10329-catapult-deprecation.yml b/changelogs/fragments/10329-catapult-deprecation.yml new file mode 100644 index 0000000000..5e5209edda --- /dev/null +++ b/changelogs/fragments/10329-catapult-deprecation.yml @@ -0,0 +1,2 @@ +deprecated_features: + - catapult - module is deprecated and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/issues/10318, https://github.com/ansible-collections/community.general/pull/10329). diff --git a/changelogs/fragments/10339-github_app_access_token.yml b/changelogs/fragments/10339-github_app_access_token.yml new file mode 100644 index 0000000000..00cd71f559 --- /dev/null +++ b/changelogs/fragments/10339-github_app_access_token.yml @@ -0,0 +1,2 @@ +bugfixes: + - github_release - support multiple types of GitHub tokens; no longer failing when ``ghs_`` token type is provided (https://github.com/ansible-collections/community.general/issues/10338, https://github.com/ansible-collections/community.general/pull/10339). \ No newline at end of file diff --git a/changelogs/fragments/10349-incus_connection-error-handling.yml b/changelogs/fragments/10349-incus_connection-error-handling.yml new file mode 100644 index 0000000000..b35da354d2 --- /dev/null +++ b/changelogs/fragments/10349-incus_connection-error-handling.yml @@ -0,0 +1,2 @@ +bugfixes: + - incus connection plugin - fix error handling to return more useful Ansible errors to the user (https://github.com/ansible-collections/community.general/issues/10344, https://github.com/ansible-collections/community.general/pull/10349). diff --git a/changelogs/fragments/10359-dependent.yml b/changelogs/fragments/10359-dependent.yml new file mode 100644 index 0000000000..e48a6142e8 --- /dev/null +++ b/changelogs/fragments/10359-dependent.yml @@ -0,0 +1,2 @@ +bugfixes: + - "dependent lookup plugin - avoid deprecated ansible-core 2.19 functionality (https://github.com/ansible-collections/community.general/pull/10359)." diff --git a/changelogs/fragments/10417-sysrc-refactor.yml b/changelogs/fragments/10417-sysrc-refactor.yml new file mode 100644 index 0000000000..b1b5db632b --- /dev/null +++ b/changelogs/fragments/10417-sysrc-refactor.yml @@ -0,0 +1,4 @@ +minor_changes: + - sysrc - adjustments to the code (https://github.com/ansible-collections/community.general/pull/10417). +bugfixes: + - sysrc - fixes parsing with multi-line variables (https://github.com/ansible-collections/community.general/issues/10394, https://github.com/ansible-collections/community.general/pull/10417). \ No newline at end of file diff --git a/changelogs/fragments/10442-apk-fix-empty-names.yml b/changelogs/fragments/10442-apk-fix-empty-names.yml new file mode 100644 index 0000000000..24d68b52df --- /dev/null +++ b/changelogs/fragments/10442-apk-fix-empty-names.yml @@ -0,0 +1,3 @@ +bugfixes: + - apk - handle empty name strings properly + (https://github.com/ansible-collections/community.general/issues/10441, https://github.com/ansible-collections/community.general/pull/10442). \ No newline at end of file diff --git a/changelogs/fragments/10445-cronvar-reject-empty-values.yml b/changelogs/fragments/10445-cronvar-reject-empty-values.yml new file mode 100644 index 0000000000..1bf39619cc --- /dev/null +++ b/changelogs/fragments/10445-cronvar-reject-empty-values.yml @@ -0,0 +1,2 @@ +bugfixes: + - "cronvar - handle empty strings on ``value`` properly (https://github.com/ansible-collections/community.general/issues/10439, https://github.com/ansible-collections/community.general/pull/10445)." diff --git a/changelogs/fragments/10455-capabilities-improve-error-detection.yml b/changelogs/fragments/10455-capabilities-improve-error-detection.yml new file mode 100644 index 0000000000..40337a424b --- /dev/null +++ b/changelogs/fragments/10455-capabilities-improve-error-detection.yml @@ -0,0 +1,2 @@ +bugfixes: + - capabilities - using invalid path (symlink/directory/...) returned unrelated and incoherent error messages (https://github.com/ansible-collections/community.general/issues/5649, https://github.com/ansible-collections/community.general/pull/10455). \ No newline at end of file diff --git a/changelogs/fragments/10458-listen_port_facts-prevent-type-error.yml b/changelogs/fragments/10458-listen_port_facts-prevent-type-error.yml new file mode 100644 index 0000000000..70af0932b3 --- /dev/null +++ b/changelogs/fragments/10458-listen_port_facts-prevent-type-error.yml @@ -0,0 +1,2 @@ +bugfixes: + - "listen_port_facts - avoid crash when required commands are missing (https://github.com/ansible-collections/community.general/issues/10457, https://github.com/ansible-collections/community.general/pull/10458)." \ No newline at end of file diff --git a/changelogs/fragments/10459-deprecations.yml b/changelogs/fragments/10459-deprecations.yml new file mode 100644 index 0000000000..4b3f317454 --- /dev/null +++ b/changelogs/fragments/10459-deprecations.yml @@ -0,0 +1,6 @@ +bugfixes: + - "apache2_module - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459)." + - "htpasswd - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459)." + - "syspatch - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459)." + - "sysupgrade - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459)." + - "zypper_repository - avoid ansible-core 2.19 deprecation (https://github.com/ansible-collections/community.general/pull/10459)." diff --git a/changelogs/fragments/10461-cronvar-non-existent-dir-crash-fix.yml b/changelogs/fragments/10461-cronvar-non-existent-dir-crash-fix.yml new file mode 100644 index 0000000000..c4b77299f5 --- /dev/null +++ b/changelogs/fragments/10461-cronvar-non-existent-dir-crash-fix.yml @@ -0,0 +1,2 @@ +bugfixes: + - "cronvar - fix crash on missing ``cron_file`` parent directories (https://github.com/ansible-collections/community.general/issues/10460, https://github.com/ansible-collections/community.general/pull/10461)." diff --git a/changelogs/fragments/10491-irc.yml b/changelogs/fragments/10491-irc.yml new file mode 100644 index 0000000000..74867e71a7 --- /dev/null +++ b/changelogs/fragments/10491-irc.yml @@ -0,0 +1,2 @@ +bugfixes: + - "irc - pass hostname to ``wrap_socket()`` if ``use_tls=true`` and ``validate_certs=true`` (https://github.com/ansible-collections/community.general/issues/10472, https://github.com/ansible-collections/community.general/pull/10491)." diff --git a/changelogs/fragments/10494-rfdn-1.yml b/changelogs/fragments/10494-rfdn-1.yml new file mode 100644 index 0000000000..09a0c442b0 --- /dev/null +++ b/changelogs/fragments/10494-rfdn-1.yml @@ -0,0 +1,27 @@ +minor_changes: + - aerospike_migrations - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - airbrake_deployment - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - bigpanda - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - bootc_manage - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - bower - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - btrfs_subvolume - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - bundler - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - campfire - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - cargo - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - catapult - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - cisco_webex - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - consul_kv - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - consul_policy - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - copr - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - datadog_downtime - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - datadog_monitor - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - dconf - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - dimensiondata_network - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - dimensiondata_vlan - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - dnf_config_manager - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - dnsmadeeasy - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - dpkg_divert - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - easy_install - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - elasticsearch_plugin - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - facter - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). + - filesystem - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10494). diff --git a/changelogs/fragments/10505-rfdn-2.yml b/changelogs/fragments/10505-rfdn-2.yml new file mode 100644 index 0000000000..89aeab9356 --- /dev/null +++ b/changelogs/fragments/10505-rfdn-2.yml @@ -0,0 +1,39 @@ +minor_changes: + - gem - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - git_config_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - github_deploy_key - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - github_repo - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - github_webhook - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - github_webhook_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_branch - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_group_access_token - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_group_variable - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_hook - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_instance_variable - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_issue - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_label - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_merge_request - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_milestone - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_project - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_project_access_token - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - gitlab_project_variable - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - grove - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - hg - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - homebrew - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - homebrew_cask - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - homebrew_tap - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - honeybadger_deployment - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - htpasswd - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - icinga2_host - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - influxdb_user - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - ini_file - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - ipa_dnsrecord - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - ipa_dnszone - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - ipa_service - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - ipbase_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - ipwcli_dns - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - irc - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - jabber - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - jenkins_credential - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - jenkins_job - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). + - jenkins_script - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10505). diff --git a/changelogs/fragments/10507-rfdn-3.yml b/changelogs/fragments/10507-rfdn-3.yml new file mode 100644 index 0000000000..fae9d118bc --- /dev/null +++ b/changelogs/fragments/10507-rfdn-3.yml @@ -0,0 +1,35 @@ +minor_changes: + - keycloak_authz_authorization_scope - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - keycloak_authz_permission - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - keycloak_role - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - keycloak_userprofile - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - keyring - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - kibana_plugin - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - layman - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - ldap_attrs - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - ldap_inc - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - librato_annotation - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - lldp - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - logentries - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - lxca_cmms - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - lxca_nodes - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - macports - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - mail - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - manageiq_alerts - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - manageiq_group - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - manageiq_policies - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - manageiq_policies_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - manageiq_tags - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - manageiq_tenant - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - matrix - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - mattermost - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - maven_artifact - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - memset_dns_reload - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - memset_zone - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - memset_zone_record - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - mqtt - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - mssql_db - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - mssql_script - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - netcup_dns - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - newrelic_deployment - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). + - nsupdate - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10507). diff --git a/changelogs/fragments/10512-rfdn-4.yml b/changelogs/fragments/10512-rfdn-4.yml new file mode 100644 index 0000000000..6d8f9e7d77 --- /dev/null +++ b/changelogs/fragments/10512-rfdn-4.yml @@ -0,0 +1,42 @@ +minor_changes: + - oci_vcn - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - one_image_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - one_template - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - one_vnet - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - onepassword_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - oneview_fc_network_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - opendj_backendprop - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - ovh_monthly_billing - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pagerduty - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pagerduty_change - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pagerduty_user - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pam_limits - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pear - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pkgng - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pnpm - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - portage - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pritunl_org - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pritunl_org_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pritunl_user - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pritunl_user_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pubnub_blocks - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pushbullet - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - pushover - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - redis_data - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - redis_data_incr - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - riak - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - rocketchat - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - rollbar_deployment - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - say - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - scaleway_database_backup - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - sendgrid - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - sensu_silence - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - sorcery - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - ssh_config - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - statusio_maintenance - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - svr4pkg - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - swdepot - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - syslogger - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - sysrc - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - systemd_creds_decrypt - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). + - systemd_creds_encrypt - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10512). diff --git a/changelogs/fragments/10513-rfdn-5.yml b/changelogs/fragments/10513-rfdn-5.yml new file mode 100644 index 0000000000..d930d7345c --- /dev/null +++ b/changelogs/fragments/10513-rfdn-5.yml @@ -0,0 +1,18 @@ +minor_changes: + - taiga_issue - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - twilio - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - utm_aaa_group - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - utm_ca_host_key_cert - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - utm_dns_host - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - utm_network_interface_address - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - utm_proxy_auth_profile - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - utm_proxy_exception - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - utm_proxy_frontend - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - utm_proxy_location - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - vertica_configuration - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - vertica_info - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - vertica_role - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - xbps - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - yarn - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - zypper - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). + - zypper_repository - remove redundant constructs from argument specs (https://github.com/ansible-collections/community.general/pull/10513). diff --git a/changelogs/fragments/10531-wsl-paramiko.yml b/changelogs/fragments/10531-wsl-paramiko.yml new file mode 100644 index 0000000000..08257d6c78 --- /dev/null +++ b/changelogs/fragments/10531-wsl-paramiko.yml @@ -0,0 +1,3 @@ +bugfixes: + - "wsl connection plugin - avoid deprecated ansible-core paramiko import helper, import paramiko directly instead + (https://github.com/ansible-collections/community.general/issues/10515, https://github.com/ansible-collections/community.general/pull/10531)." diff --git a/changelogs/fragments/10532-apk.yml b/changelogs/fragments/10532-apk.yml new file mode 100644 index 0000000000..84c5d985e8 --- /dev/null +++ b/changelogs/fragments/10532-apk.yml @@ -0,0 +1,2 @@ +bugfixes: + - "apk - fix check for empty/whitespace-only package names (https://github.com/ansible-collections/community.general/pull/10532)." diff --git a/changelogs/fragments/10539-json_query.yml b/changelogs/fragments/10539-json_query.yml new file mode 100644 index 0000000000..7e84b7ecb0 --- /dev/null +++ b/changelogs/fragments/10539-json_query.yml @@ -0,0 +1,2 @@ +bugfixes: + - "json_query filter plugin - make compatible with lazy evaluation list and dictionary types of ansible-core 2.19 (https://github.com/ansible-collections/community.general/pull/10539)." diff --git a/changelogs/fragments/10566-merge_variables.yml b/changelogs/fragments/10566-merge_variables.yml new file mode 100644 index 0000000000..c0de6dd845 --- /dev/null +++ b/changelogs/fragments/10566-merge_variables.yml @@ -0,0 +1,2 @@ +bugfixes: + - "merge_variables lookup plugin - avoid deprecated functionality from ansible-core 2.19 (https://github.com/ansible-collections/community.general/pull/10566)." diff --git a/changelogs/fragments/9499-typetalk-deprecation.yml b/changelogs/fragments/9499-typetalk-deprecation.yml new file mode 100644 index 0000000000..8323bbe959 --- /dev/null +++ b/changelogs/fragments/9499-typetalk-deprecation.yml @@ -0,0 +1,2 @@ +deprecated_features: + - typetalk - module is deprecated and will be removed in community.general 13.0.0 (https://github.com/ansible-collections/community.general/pull/9499). diff --git a/changelogs/fragments/become-pipelining.yml b/changelogs/fragments/become-pipelining.yml new file mode 100644 index 0000000000..201d85f71c --- /dev/null +++ b/changelogs/fragments/become-pipelining.yml @@ -0,0 +1,3 @@ +bugfixes: + - "doas become plugin - disable pipelining on ansible-core 2.19+. The plugin does not work with pipelining, and since ansible-core 2.19 become plugins can indicate that they do not work with pipelining (https://github.com/ansible-collections/community.general/issues/9977, https://github.com/ansible-collections/community.general/pull/10537)." + - "machinectl become plugin - disable pipelining on ansible-core 2.19+. The plugin does not work with pipelining, and since ansible-core 2.19 become plugins can indicate that they do not work with pipelining (https://github.com/ansible-collections/community.general/pull/10537)." diff --git a/changelogs/fragments/logstash.yml b/changelogs/fragments/logstash.yml new file mode 100644 index 0000000000..1c7ec89b7d --- /dev/null +++ b/changelogs/fragments/logstash.yml @@ -0,0 +1,3 @@ +--- +bugfixes: + - logstash callback plugin - remove reference to Python 2 library (https://github.com/ansible-collections/community.general/pull/10345). diff --git a/galaxy.yml b/galaxy.yml index b0b9af7d11..a39ffcc7e5 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -5,7 +5,7 @@ namespace: community name: general -version: 11.1.0 +version: 11.2.0 readme: README.md authors: - Ansible (https://github.com/ansible) diff --git a/meta/runtime.yml b/meta/runtime.yml index ed7efb80d9..4efdc68688 100644 --- a/meta/runtime.yml +++ b/meta/runtime.yml @@ -958,6 +958,10 @@ plugin_routing: warning_text: This module relied on HTTPS APIs that do not exist anymore, and any new development in the direction of providing an alternative should happen in the context of the google.cloud collection. + typetalk: + deprecation: + removal_version: 13.0.0 + warning_text: The typetalk service will be discontinued on Dec 2025. vertica_facts: tombstone: removal_version: 3.0.0 diff --git a/plugins/become/doas.py b/plugins/become/doas.py index b7b82a0f80..ca12faea0d 100644 --- a/plugins/become/doas.py +++ b/plugins/become/doas.py @@ -83,6 +83,9 @@ options: - name: ansible_doas_prompt_l10n env: - name: ANSIBLE_DOAS_PROMPT_L10N +notes: + - This become plugin does not work when connection pipelining is enabled. With ansible-core 2.19+, using it automatically + disables pipelining. On ansible-core 2.18 and before, pipelining must explicitly be disabled by the user. """ import re @@ -99,6 +102,10 @@ class BecomeModule(BecomeBase): fail = ('Permission denied',) missing = ('Authorization required',) + # See https://github.com/ansible-collections/community.general/issues/9977, + # https://github.com/ansible/ansible/pull/78111 + pipelining = False + def check_password_prompt(self, b_output): ''' checks if the expected password prompt exists in b_output ''' diff --git a/plugins/become/machinectl.py b/plugins/become/machinectl.py index 4f608939f1..ad3daa916d 100644 --- a/plugins/become/machinectl.py +++ b/plugins/become/machinectl.py @@ -75,6 +75,8 @@ notes: of C(machinectl). This rule must alter the prompt behaviour to ask directly for the user credentials, if the user is allowed to perform the action (take a look at the examples section). If such a rule is not present the plugin only works if it is used in context with the root user, because then no further prompt is shown by C(machinectl). + - This become plugin does not work when connection pipelining is enabled. With ansible-core 2.19+, using it automatically + disables pipelining. On ansible-core 2.18 and before, pipelining must explicitly be disabled by the user. """ EXAMPLES = r""" @@ -107,6 +109,10 @@ class BecomeModule(BecomeBase): success = ('==== AUTHENTICATION COMPLETE ====',) require_tty = True # see https://github.com/ansible-collections/community.general/issues/6932 + # See https://github.com/ansible/ansible/issues/81254, + # https://github.com/ansible/ansible/pull/78111 + pipelining = False + @staticmethod def remove_ansi_codes(line): return ansi_color_codes.sub(b"", line) diff --git a/plugins/connection/wsl.py b/plugins/connection/wsl.py index 1d26cefa18..92ffec52b3 100644 --- a/plugins/connection/wsl.py +++ b/plugins/connection/wsl.py @@ -315,6 +315,7 @@ import pathlib import shlex import socket import tempfile +import traceback import typing as t from ansible.errors import ( @@ -323,9 +324,8 @@ from ansible.errors import ( AnsibleError, ) from ansible_collections.community.general.plugins.module_utils._filelock import FileLock, LockTimeout +from ansible_collections.community.general.plugins.module_utils.version import LooseVersion from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text -from ansible.module_utils.compat.paramiko import PARAMIKO_IMPORT_ERR, paramiko -from ansible.module_utils.compat.version import LooseVersion from ansible.playbook.play_context import PlayContext from ansible.plugins.connection import ConnectionBase from ansible.utils.display import Display @@ -333,8 +333,15 @@ from ansible.utils.path import makedirs_safe from binascii import hexlify from subprocess import list2cmdline +try: + import paramiko + PARAMIKO_IMPORT_ERR = None +except ImportError: + paramiko = None + PARAMIKO_IMPORT_ERR = traceback.format_exc() -if t.TYPE_CHECKING and paramiko: + +if t.TYPE_CHECKING and PARAMIKO_IMPORT_ERR is None: from paramiko import MissingHostKeyPolicy from paramiko.client import SSHClient from paramiko.pkey import PKey @@ -437,7 +444,7 @@ class Connection(ConnectionBase): def _connect(self) -> Connection: """ activates the connection object """ - if paramiko is None: + if PARAMIKO_IMPORT_ERR is not None: raise AnsibleError(f'paramiko is not installed: {to_native(PARAMIKO_IMPORT_ERR)}') port = self.get_option('port') diff --git a/plugins/filter/json_query.py b/plugins/filter/json_query.py index 8976694a94..9c0a83a481 100644 --- a/plugins/filter/json_query.py +++ b/plugins/filter/json_query.py @@ -124,10 +124,17 @@ def json_query(data, expr): 'json_query filter') # Hack to handle Ansible Unsafe text, AnsibleMapping and AnsibleSequence - # See issue: https://github.com/ansible-collections/community.general/issues/320 - jmespath.functions.REVERSE_TYPES_MAP['string'] = jmespath.functions.REVERSE_TYPES_MAP['string'] + ('AnsibleUnicode', 'AnsibleUnsafeText', ) - jmespath.functions.REVERSE_TYPES_MAP['array'] = jmespath.functions.REVERSE_TYPES_MAP['array'] + ('AnsibleSequence', ) - jmespath.functions.REVERSE_TYPES_MAP['object'] = jmespath.functions.REVERSE_TYPES_MAP['object'] + ('AnsibleMapping', ) + # See issues https://github.com/ansible-collections/community.general/issues/320 + # and https://github.com/ansible/ansible/issues/85600. + jmespath.functions.REVERSE_TYPES_MAP['string'] = jmespath.functions.REVERSE_TYPES_MAP['string'] + ( + 'AnsibleUnicode', 'AnsibleUnsafeText', '_AnsibleTaggedStr', + ) + jmespath.functions.REVERSE_TYPES_MAP['array'] = jmespath.functions.REVERSE_TYPES_MAP['array'] + ( + 'AnsibleSequence', '_AnsibleLazyTemplateList', + ) + jmespath.functions.REVERSE_TYPES_MAP['object'] = jmespath.functions.REVERSE_TYPES_MAP['object'] + ( + 'AnsibleMapping', '_AnsibleLazyTemplateDict', + ) try: return jmespath.search(expr, data) except jmespath.exceptions.JMESPathError as e: diff --git a/plugins/lookup/merge_variables.py b/plugins/lookup/merge_variables.py index ffe76c3ea0..aff70f9799 100644 --- a/plugins/lookup/merge_variables.py +++ b/plugins/lookup/merge_variables.py @@ -193,8 +193,8 @@ class LookupModule(LookupBase): result = initial_value for var_name in var_merge_names: - with self._templar.set_temporary_context(available_variables=variables): # tmp. switch renderer to context of current variables - var_value = self._templar.template(variables[var_name]) # Render jinja2 templates + temp_templar = self._templar.copy_with_new_env(available_variables=variables) # tmp. switch renderer to context of current variables + var_value = temp_templar.template(variables[var_name]) # Render jinja2 templates var_type = _verify_and_get_type(var_value) if prev_var_type is None: diff --git a/plugins/modules/aerospike_migrations.py b/plugins/modules/aerospike_migrations.py index 12401cb372..d9440fdb4e 100644 --- a/plugins/modules/aerospike_migrations.py +++ b/plugins/modules/aerospike_migrations.py @@ -29,7 +29,6 @@ options: host: description: - Which host do we use as seed for info connection. - required: false type: str default: localhost port: @@ -180,19 +179,19 @@ else: def run_module(): """run ansible module""" module_args = dict( - host=dict(type='str', required=False, default='localhost'), - port=dict(type='int', required=False, default=3000), - connect_timeout=dict(type='int', required=False, default=1000), - consecutive_good_checks=dict(type='int', required=False, default=3), - sleep_between_checks=dict(type='int', required=False, default=60), - tries_limit=dict(type='int', required=False, default=300), + host=dict(type='str', default='localhost'), + port=dict(type='int', default=3000), + connect_timeout=dict(type='int', default=1000), + consecutive_good_checks=dict(type='int', default=3), + sleep_between_checks=dict(type='int', default=60), + tries_limit=dict(type='int', default=300), local_only=dict(type='bool', required=True), - min_cluster_size=dict(type='int', required=False, default=1), - target_cluster_size=dict(type='int', required=False, default=None), - fail_on_cluster_change=dict(type='bool', required=False, default=True), - migrate_tx_key=dict(type='str', required=False, no_log=False, + min_cluster_size=dict(type='int', default=1), + target_cluster_size=dict(type='int'), + fail_on_cluster_change=dict(type='bool', default=True), + migrate_tx_key=dict(type='str', no_log=False, default="migrate_tx_partitions_remaining"), - migrate_rx_key=dict(type='str', required=False, no_log=False, + migrate_rx_key=dict(type='str', no_log=False, default="migrate_rx_partitions_remaining") ) diff --git a/plugins/modules/airbrake_deployment.py b/plugins/modules/airbrake_deployment.py index 5961154354..0fe04f21d6 100644 --- a/plugins/modules/airbrake_deployment.py +++ b/plugins/modules/airbrake_deployment.py @@ -114,11 +114,11 @@ def main(): project_id=dict(required=True, no_log=True, type='str'), project_key=dict(required=True, no_log=True, type='str'), environment=dict(required=True, type='str'), - user=dict(required=False, type='str'), - repo=dict(required=False, type='str'), - revision=dict(required=False, type='str'), - version=dict(required=False, type='str'), - url=dict(required=False, default='https://api.airbrake.io/api/v4/projects/', type='str'), + user=dict(type='str'), + repo=dict(type='str'), + revision=dict(type='str'), + version=dict(type='str'), + url=dict(default='https://api.airbrake.io/api/v4/projects/', type='str'), validate_certs=dict(default=True, type='bool'), ), supports_check_mode=True, diff --git a/plugins/modules/aix_filesystem.py b/plugins/modules/aix_filesystem.py index d952726310..92a734e8ac 100644 --- a/plugins/modules/aix_filesystem.py +++ b/plugins/modules/aix_filesystem.py @@ -165,16 +165,6 @@ EXAMPLES = r""" state: absent """ -RETURN = r""" -changed: - description: Return changed for aix_filesystems actions as true or false. - returned: always - type: bool -msg: - description: Return message regarding the action. - returned: always - type: str -""" from ansible.module_utils.basic import AnsibleModule from ansible_collections.community.general.plugins.module_utils._mount import ismount diff --git a/plugins/modules/aix_inittab.py b/plugins/modules/aix_inittab.py index 0c32f91e7f..ece4e95547 100644 --- a/plugins/modules/aix_inittab.py +++ b/plugins/modules/aix_inittab.py @@ -112,16 +112,6 @@ name: returned: always type: str sample: startmyservice -msg: - description: Action done with the C(inittab) entry. - returned: changed - type: str - sample: changed inittab entry startmyservice -changed: - description: Whether the C(inittab) changed or not. - returned: always - type: bool - sample: true """ # Import necessary libraries diff --git a/plugins/modules/apache2_module.py b/plugins/modules/apache2_module.py index 2007b5d1f1..99db968670 100644 --- a/plugins/modules/apache2_module.py +++ b/plugins/modules/apache2_module.py @@ -113,22 +113,6 @@ result: description: Message about action taken. returned: always type: str -warnings: - description: List of warning messages. - returned: when needed - type: list -rc: - description: Return code of underlying command. - returned: failed - type: int -stdout: - description: The stdout of underlying command. - returned: failed - type: str -stderr: - description: The stderr of underlying command. - returned: failed - type: str """ import re @@ -164,12 +148,12 @@ def _module_is_enabled(module): if module.params['ignore_configcheck']: if 'AH00534' in stderr and 'mpm_' in module.params['name']: if module.params['warn_mpm_absent']: - module.warnings.append( + module.warn( "No MPM module loaded! apache2 reload AND other module actions" " will fail if no MPM module is loaded immediately." ) else: - module.warnings.append(error_msg) + module.warn(error_msg) return False else: module.fail_json(msg=error_msg) @@ -224,9 +208,7 @@ def _set_state(module, state): if _module_is_enabled(module) != want_enabled: if module.check_mode: - module.exit_json(changed=True, - result=success_msg, - warnings=module.warnings) + module.exit_json(changed=True, result=success_msg) a2mod_binary_path = module.get_bin_path(a2mod_binary) if a2mod_binary_path is None: @@ -241,9 +223,7 @@ def _set_state(module, state): result, stdout, stderr = module.run_command(a2mod_binary_cmd + [name]) if _module_is_enabled(module) == want_enabled: - module.exit_json(changed=True, - result=success_msg, - warnings=module.warnings) + module.exit_json(changed=True, result=success_msg) else: msg = ( 'Failed to set module {name} to {state}:\n' @@ -261,9 +241,7 @@ def _set_state(module, state): stdout=stdout, stderr=stderr) else: - module.exit_json(changed=False, - result=success_msg, - warnings=module.warnings) + module.exit_json(changed=False, result=success_msg) def main(): @@ -279,8 +257,6 @@ def main(): supports_check_mode=True, ) - module.warnings = [] - name = module.params['name'] if name == 'cgi' and _run_threaded(module): module.fail_json(msg="Your MPM seems to be threaded. No automatic actions on module cgi possible.") diff --git a/plugins/modules/apk.py b/plugins/modules/apk.py index dcb70ce72d..e70e51a1f0 100644 --- a/plugins/modules/apk.py +++ b/plugins/modules/apk.py @@ -351,6 +351,9 @@ def main(): p = module.params + if p['name'] and any(not name.strip() for name in p['name']): + module.fail_json(msg="Package name(s) cannot be empty or whitespace-only") + if p['no_cache']: APK_PATH = "%s --no-cache" % (APK_PATH, ) diff --git a/plugins/modules/bigpanda.py b/plugins/modules/bigpanda.py index 808e7bb06b..81e2085b7d 100644 --- a/plugins/modules/bigpanda.py +++ b/plugins/modules/bigpanda.py @@ -150,14 +150,14 @@ def main(): version=dict(required=True), token=dict(required=True, no_log=True), state=dict(required=True, choices=['started', 'finished', 'failed']), - hosts=dict(required=False, aliases=['host']), - env=dict(required=False), - owner=dict(required=False), - description=dict(required=False), - deployment_message=dict(required=False), - source_system=dict(required=False, default='ansible'), + hosts=dict(aliases=['host']), + env=dict(), + owner=dict(), + description=dict(), + deployment_message=dict(), + source_system=dict(default='ansible'), validate_certs=dict(default=True, type='bool'), - url=dict(required=False, default='https://api.bigpanda.io'), + url=dict(default='https://api.bigpanda.io'), ), supports_check_mode=True, ) diff --git a/plugins/modules/bootc_manage.py b/plugins/modules/bootc_manage.py index a0ac5a23d6..da92c02b06 100644 --- a/plugins/modules/bootc_manage.py +++ b/plugins/modules/bootc_manage.py @@ -57,7 +57,7 @@ from ansible.module_utils.common.locale import get_best_parsable_locale def main(): argument_spec = dict( state=dict(type='str', required=True, choices=['switch', 'latest']), - image=dict(type='str', required=False), + image=dict(type='str'), ) module = AnsibleModule( argument_spec=argument_spec, diff --git a/plugins/modules/bower.py b/plugins/modules/bower.py index 3e7ebdaecc..547152fa98 100644 --- a/plugins/modules/bower.py +++ b/plugins/modules/bower.py @@ -187,13 +187,13 @@ class Bower(object): def main(): arg_spec = dict( - name=dict(default=None), + name=dict(), offline=dict(default=False, type='bool'), production=dict(default=False, type='bool'), path=dict(required=True, type='path'), - relative_execpath=dict(default=None, required=False, type='path'), + relative_execpath=dict(type='path'), state=dict(default='present', choices=['present', 'absent', 'latest', ]), - version=dict(default=None), + version=dict(), ) module = AnsibleModule( argument_spec=arg_spec diff --git a/plugins/modules/btrfs_subvolume.py b/plugins/modules/btrfs_subvolume.py index f22a551d8d..3c34ef4680 100644 --- a/plugins/modules/btrfs_subvolume.py +++ b/plugins/modules/btrfs_subvolume.py @@ -644,16 +644,16 @@ class BtrfsSubvolumeModule(object): def run_module(): module_args = dict( - automount=dict(type='bool', required=False, default=False), - default=dict(type='bool', required=False, default=False), - filesystem_device=dict(type='path', required=False), - filesystem_label=dict(type='str', required=False), - filesystem_uuid=dict(type='str', required=False), + automount=dict(type='bool', default=False), + default=dict(type='bool', default=False), + filesystem_device=dict(type='path'), + filesystem_label=dict(type='str'), + filesystem_uuid=dict(type='str'), name=dict(type='str', required=True), recursive=dict(type='bool', default=False), - state=dict(type='str', required=False, default='present', choices=['present', 'absent']), - snapshot_source=dict(type='str', required=False), - snapshot_conflict=dict(type='str', required=False, default='skip', choices=['skip', 'clobber', 'error']) + state=dict(type='str', default='present', choices=['present', 'absent']), + snapshot_source=dict(type='str'), + snapshot_conflict=dict(type='str', default='skip', choices=['skip', 'clobber', 'error']) ) module = AnsibleModule( diff --git a/plugins/modules/bundler.py b/plugins/modules/bundler.py index eee9ee8210..6bf2556110 100644 --- a/plugins/modules/bundler.py +++ b/plugins/modules/bundler.py @@ -131,18 +131,18 @@ def get_bundler_executable(module): def main(): module = AnsibleModule( argument_spec=dict( - executable=dict(default=None, required=False), - state=dict(default='present', required=False, choices=['present', 'latest']), - chdir=dict(default=None, required=False, type='path'), - exclude_groups=dict(default=None, required=False, type='list', elements='str'), - clean=dict(default=False, required=False, type='bool'), - gemfile=dict(default=None, required=False, type='path'), - local=dict(default=False, required=False, type='bool'), - deployment_mode=dict(default=False, required=False, type='bool'), - user_install=dict(default=True, required=False, type='bool'), - gem_path=dict(default=None, required=False, type='path'), - binstub_directory=dict(default=None, required=False, type='path'), - extra_args=dict(default=None, required=False), + executable=dict(), + state=dict(default='present', choices=['present', 'latest']), + chdir=dict(type='path'), + exclude_groups=dict(type='list', elements='str'), + clean=dict(default=False, type='bool'), + gemfile=dict(type='path'), + local=dict(default=False, type='bool'), + deployment_mode=dict(default=False, type='bool'), + user_install=dict(default=True, type='bool'), + gem_path=dict(type='path'), + binstub_directory=dict(type='path'), + extra_args=dict(), ), supports_check_mode=True ) diff --git a/plugins/modules/campfire.py b/plugins/modules/campfire.py index 0281647a69..128790c372 100644 --- a/plugins/modules/campfire.py +++ b/plugins/modules/campfire.py @@ -137,8 +137,7 @@ def main(): token=dict(required=True, no_log=True), room=dict(required=True), msg=dict(required=True), - notify=dict(required=False, - choices=["56k", "bell", "bezos", "bueller", + notify=dict(choices=["56k", "bell", "bezos", "bueller", "clowntown", "cottoneyejoe", "crickets", "dadgummit", "dangerzone", "danielsan", "deeper", "drama", diff --git a/plugins/modules/capabilities.py b/plugins/modules/capabilities.py index b3143df0a4..08bd2e85ff 100644 --- a/plugins/modules/capabilities.py +++ b/plugins/modules/capabilities.py @@ -123,6 +123,8 @@ class CapabilitiesModule(object): if ' =' in stdout: # process output of an older version of libcap caps = stdout.split(' =')[1].strip().split() + elif stdout.strip().endswith(")"): # '/foo (Error Message)' + self.module.fail_json(msg="Unable to get capabilities of %s" % path, stdout=stdout.strip(), stderr=stderr) else: # otherwise, we have a newer version here # see original commit message of cap/v0.2.40-18-g177cd41 in libcap.git diff --git a/plugins/modules/cargo.py b/plugins/modules/cargo.py index 7e30a9000a..c00983fade 100644 --- a/plugins/modules/cargo.py +++ b/plugins/modules/cargo.py @@ -247,14 +247,14 @@ class Cargo(object): def main(): arg_spec = dict( - executable=dict(default=None, type="path"), + executable=dict(type="path"), name=dict(required=True, type="list", elements="str"), - path=dict(default=None, type="path"), + path=dict(type="path"), state=dict(default="present", choices=["present", "absent", "latest"]), - version=dict(default=None, type="str"), + version=dict(type="str"), locked=dict(default=False, type="bool"), - directory=dict(default=None, type="path"), - features=dict(default=[], required=False, type="list", elements="str"), + directory=dict(type="path"), + features=dict(default=[], type="list", elements="str"), ) module = AnsibleModule(argument_spec=arg_spec, supports_check_mode=True) diff --git a/plugins/modules/catapult.py b/plugins/modules/catapult.py index c866bed75b..448de5d13d 100644 --- a/plugins/modules/catapult.py +++ b/plugins/modules/catapult.py @@ -95,14 +95,6 @@ EXAMPLES = r""" api_secret: "{{ api_secret }}" """ -RETURN = r""" -changed: - description: Whether the API accepted the message. - returned: always - type: bool - sample: true -""" - import json @@ -138,7 +130,7 @@ def main(): user_id=dict(required=True), api_token=dict(required=True, no_log=True), api_secret=dict(required=True, no_log=True), - media=dict(default=None, required=False), + media=dict(), ), ) diff --git a/plugins/modules/cisco_webex.py b/plugins/modules/cisco_webex.py index 14b8716846..f957f4121d 100644 --- a/plugins/modules/cisco_webex.py +++ b/plugins/modules/cisco_webex.py @@ -177,7 +177,7 @@ def main(): argument_spec=dict( recipient_type=dict(required=True, choices=['roomId', 'toPersonEmail', 'toPersonId']), recipient_id=dict(required=True, no_log=True), - msg_type=dict(required=False, default='text', aliases=['message_type'], choices=['text', 'markdown']), + msg_type=dict(default='text', aliases=['message_type'], choices=['text', 'markdown']), personal_token=dict(required=True, no_log=True, aliases=['token']), msg=dict(required=True), ), diff --git a/plugins/modules/consul_kv.py b/plugins/modules/consul_kv.py index 9e190d6565..2987e71a86 100644 --- a/plugins/modules/consul_kv.py +++ b/plugins/modules/consul_kv.py @@ -300,7 +300,7 @@ def main(): module = AnsibleModule( argument_spec=dict( cas=dict(type='str'), - datacenter=dict(type='str', default=None), + datacenter=dict(type='str'), flags=dict(type='str'), key=dict(type='str', required=True, no_log=False), host=dict(type='str', default='localhost'), diff --git a/plugins/modules/consul_policy.py b/plugins/modules/consul_policy.py index 26cb34e100..e009e44434 100644 --- a/plugins/modules/consul_policy.py +++ b/plugins/modules/consul_policy.py @@ -132,7 +132,7 @@ from ansible_collections.community.general.plugins.module_utils.consul import ( _ARGUMENT_SPEC = { "name": dict(required=True), - "description": dict(required=False, type="str"), + "description": dict(type="str"), "rules": dict(type="str"), "valid_datacenters": dict(type="list", elements="str"), "state": dict(default="present", choices=["present", "absent"]), diff --git a/plugins/modules/copr.py b/plugins/modules/copr.py index 739092b8af..940fc0eedd 100644 --- a/plugins/modules/copr.py +++ b/plugins/modules/copr.py @@ -494,8 +494,8 @@ def run_module(): name=dict(type="str", required=True), state=dict(type="str", choices=["enabled", "disabled", "absent"], default="enabled"), chroot=dict(type="str"), - includepkgs=dict(type='list', elements="str", required=False), - excludepkgs=dict(type='list', elements="str", required=False), + includepkgs=dict(type='list', elements="str"), + excludepkgs=dict(type='list', elements="str"), ) module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) params = module.params diff --git a/plugins/modules/cronvar.py b/plugins/modules/cronvar.py index e1acedc81d..5f7d02bfc3 100644 --- a/plugins/modules/cronvar.py +++ b/plugins/modules/cronvar.py @@ -135,6 +135,9 @@ class CronVar(object): self.cron_file = cron_file else: self.cron_file = os.path.join('/etc/cron.d', cron_file) + parent_dir = os.path.dirname(self.cron_file) + if parent_dir and not os.path.isdir(parent_dir): + module.fail_json(msg="Parent directory '{}' does not exist for cron_file: '{}'".format(parent_dir, cron_file)) else: self.cron_file = None @@ -393,6 +396,8 @@ def main(): old_value = cronvar.find_variable(name) if ensure_present: + if value == "" and old_value != "": + value = '""' if old_value is None: cronvar.add_variable(name, value, insertbefore, insertafter) changed = True diff --git a/plugins/modules/datadog_downtime.py b/plugins/modules/datadog_downtime.py index 1bc57e2958..9e48410014 100644 --- a/plugins/modules/datadog_downtime.py +++ b/plugins/modules/datadog_downtime.py @@ -175,18 +175,18 @@ def main(): module = AnsibleModule( argument_spec=dict( api_key=dict(required=True, no_log=True), - api_host=dict(required=False, default="https://api.datadoghq.com"), + api_host=dict(default="https://api.datadoghq.com"), app_key=dict(required=True, no_log=True), - state=dict(required=False, choices=["present", "absent"], default="present"), - monitor_tags=dict(required=False, type="list", elements="str"), - scope=dict(required=False, type="list", elements="str"), - monitor_id=dict(required=False, type="int"), - downtime_message=dict(required=False, no_log=True), - start=dict(required=False, type="int"), - end=dict(required=False, type="int"), - timezone=dict(required=False, type="str"), - rrule=dict(required=False, type="str"), - id=dict(required=False, type="int"), + state=dict(choices=["present", "absent"], default="present"), + monitor_tags=dict(type="list", elements="str"), + scope=dict(type="list", elements="str"), + monitor_id=dict(type="int"), + downtime_message=dict(no_log=True), + start=dict(type="int"), + end=dict(type="int"), + timezone=dict(type="str"), + rrule=dict(type="str"), + id=dict(type="int"), ) ) diff --git a/plugins/modules/datadog_monitor.py b/plugins/modules/datadog_monitor.py index 3af8cac3d5..f778d2444d 100644 --- a/plugins/modules/datadog_monitor.py +++ b/plugins/modules/datadog_monitor.py @@ -275,14 +275,14 @@ def main(): renotify_interval=dict(), escalation_message=dict(), notify_audit=dict(default=False, type='bool'), - thresholds=dict(type='dict', default=None), - tags=dict(type='list', elements='str', default=None), + thresholds=dict(type='dict'), + tags=dict(type='list', elements='str'), locked=dict(default=False, type='bool'), require_full_window=dict(type='bool'), new_host_delay=dict(), evaluation_delay=dict(), id=dict(), - include_tags=dict(required=False, default=True, type='bool'), + include_tags=dict(default=True, type='bool'), priority=dict(type='int'), notification_preset_name=dict(choices=['show_all', 'hide_query', 'hide_handles', 'hide_all']), renotify_occurrences=dict(type='int'), diff --git a/plugins/modules/dconf.py b/plugins/modules/dconf.py index 8bb9650a87..762c443130 100644 --- a/plugins/modules/dconf.py +++ b/plugins/modules/dconf.py @@ -398,7 +398,7 @@ def main(): state=dict(default='present', choices=['present', 'absent', 'read']), key=dict(required=True, type='str', no_log=False), # Converted to str below after special handling of bool. - value=dict(required=False, default=None, type='raw'), + value=dict(type='raw'), ), supports_check_mode=True, required_if=[ diff --git a/plugins/modules/dimensiondata_network.py b/plugins/modules/dimensiondata_network.py index 6617d6aef1..04fff21e58 100644 --- a/plugins/modules/dimensiondata_network.py +++ b/plugins/modules/dimensiondata_network.py @@ -140,7 +140,7 @@ class DimensionDataNetworkModule(DimensionDataModule): module=AnsibleModule( argument_spec=DimensionDataModule.argument_spec_with_wait( name=dict(type='str', required=True), - description=dict(type='str', required=False), + description=dict(type='str'), service_plan=dict(default='ESSENTIALS', choices=['ADVANCED', 'ESSENTIALS']), state=dict(default='present', choices=['present', 'absent']) ), diff --git a/plugins/modules/dimensiondata_vlan.py b/plugins/modules/dimensiondata_vlan.py index 4e8f090b32..b28b12d998 100644 --- a/plugins/modules/dimensiondata_vlan.py +++ b/plugins/modules/dimensiondata_vlan.py @@ -186,7 +186,7 @@ class DimensionDataVlanModule(DimensionDataModule): network_domain=dict(required=True, type='str'), private_ipv4_base_address=dict(default='', type='str'), private_ipv4_prefix_size=dict(default=0, type='int'), - allow_expand=dict(required=False, default=False, type='bool'), + allow_expand=dict(default=False, type='bool'), state=dict(default='present', choices=['present', 'absent', 'readonly']) ), required_together=DimensionDataModule.required_together() diff --git a/plugins/modules/dnf_config_manager.py b/plugins/modules/dnf_config_manager.py index c3c0d95c24..eb64bee864 100644 --- a/plugins/modules/dnf_config_manager.py +++ b/plugins/modules/dnf_config_manager.py @@ -175,8 +175,8 @@ def pack_repo_states_for_return(states): def main(): module_args = dict( - name=dict(type='list', elements='str', required=False, default=[]), - state=dict(type='str', required=False, choices=['enabled', 'disabled'], default='enabled') + name=dict(type='list', elements='str', default=[]), + state=dict(type='str', choices=['enabled', 'disabled'], default='enabled') ) result = dict( diff --git a/plugins/modules/dnf_versionlock.py b/plugins/modules/dnf_versionlock.py index adfb636634..b3e2e2bcc9 100644 --- a/plugins/modules/dnf_versionlock.py +++ b/plugins/modules/dnf_versionlock.py @@ -83,12 +83,12 @@ EXAMPLES = r""" - name: Remove lock from nginx to be updated again community.general.dnf_versionlock: - package: nginx + name: nginx state: absent - name: Exclude bind 32:9.11 from installs or updates community.general.dnf_versionlock: - package: bind-32:9.11* + name: bind-32:9.11* state: excluded - name: Keep bash package in major version 4 diff --git a/plugins/modules/dnsmadeeasy.py b/plugins/modules/dnsmadeeasy.py index 3e3fa9dce5..ec17880af7 100644 --- a/plugins/modules/dnsmadeeasy.py +++ b/plugins/modules/dnsmadeeasy.py @@ -553,28 +553,28 @@ def main(): domain=dict(required=True), sandbox=dict(default=False, type='bool'), state=dict(required=True, choices=['present', 'absent']), - record_name=dict(required=False), - record_type=dict(required=False, choices=[ + record_name=dict(), + record_type=dict(choices=[ 'A', 'AAAA', 'CNAME', 'ANAME', 'HTTPRED', 'MX', 'NS', 'PTR', 'SRV', 'TXT']), - record_value=dict(required=False), - record_ttl=dict(required=False, default=1800, type='int'), + record_value=dict(), + record_ttl=dict(default=1800, type='int'), monitor=dict(default=False, type='bool'), systemDescription=dict(default=''), maxEmails=dict(default=1, type='int'), protocol=dict(default='HTTP', choices=['TCP', 'UDP', 'HTTP', 'DNS', 'SMTP', 'HTTPS']), port=dict(default=80, type='int'), sensitivity=dict(default='Medium', choices=['Low', 'Medium', 'High']), - contactList=dict(default=None), - httpFqdn=dict(required=False), - httpFile=dict(required=False), - httpQueryString=dict(required=False), + contactList=dict(), + httpFqdn=dict(), + httpFile=dict(), + httpQueryString=dict(), failover=dict(default=False, type='bool'), autoFailover=dict(default=False, type='bool'), - ip1=dict(required=False), - ip2=dict(required=False), - ip3=dict(required=False), - ip4=dict(required=False), - ip5=dict(required=False), + ip1=dict(), + ip2=dict(), + ip3=dict(), + ip4=dict(), + ip5=dict(), validate_certs=dict(default=True, type='bool'), ), required_together=[ diff --git a/plugins/modules/dpkg_divert.py b/plugins/modules/dpkg_divert.py index df09927ee9..6ef1f394e4 100644 --- a/plugins/modules/dpkg_divert.py +++ b/plugins/modules/dpkg_divert.py @@ -166,11 +166,11 @@ def main(): module = AnsibleModule( argument_spec=dict( path=dict(required=True, type='path'), - state=dict(required=False, type='str', default='present', choices=['absent', 'present']), - holder=dict(required=False, type='str'), - divert=dict(required=False, type='path'), - rename=dict(required=False, type='bool', default=False), - force=dict(required=False, type='bool', default=False), + state=dict(type='str', default='present', choices=['absent', 'present']), + holder=dict(type='str'), + divert=dict(type='path'), + rename=dict(type='bool', default=False), + force=dict(type='bool', default=False), ), supports_check_mode=True, ) diff --git a/plugins/modules/easy_install.py b/plugins/modules/easy_install.py index f73800350c..8d0a39333e 100644 --- a/plugins/modules/easy_install.py +++ b/plugins/modules/easy_install.py @@ -133,14 +133,13 @@ def _get_easy_install(module, env=None, executable=None): def main(): arg_spec = dict( name=dict(required=True), - state=dict(required=False, - default='present', + state=dict(default='present', choices=['present', 'latest'], type='str'), - virtualenv=dict(default=None, required=False), + virtualenv=dict(), virtualenv_site_packages=dict(default=False, type='bool'), - virtualenv_command=dict(default='virtualenv', required=False), - executable=dict(default='easy_install', required=False), + virtualenv_command=dict(default='virtualenv'), + executable=dict(default='easy_install'), ) module = AnsibleModule(argument_spec=arg_spec, supports_check_mode=True) diff --git a/plugins/modules/elasticsearch_plugin.py b/plugins/modules/elasticsearch_plugin.py index c90f8dbde8..8552b55ccd 100644 --- a/plugins/modules/elasticsearch_plugin.py +++ b/plugins/modules/elasticsearch_plugin.py @@ -259,15 +259,15 @@ def main(): argument_spec=dict( name=dict(required=True), state=dict(default="present", choices=list(PACKAGE_STATE_MAP.keys())), - src=dict(default=None), - url=dict(default=None), + src=dict(), + url=dict(), timeout=dict(default="1m"), force=dict(type='bool', default=False), plugin_bin=dict(type="path"), plugin_dir=dict(default="/usr/share/elasticsearch/plugins/", type="path"), - proxy_host=dict(default=None), - proxy_port=dict(default=None), - version=dict(default=None) + proxy_host=dict(), + proxy_port=dict(), + version=dict() ), mutually_exclusive=[("src", "url")], supports_check_mode=True diff --git a/plugins/modules/facter.py b/plugins/modules/facter.py index ce9320282d..20be3d4a4d 100644 --- a/plugins/modules/facter.py +++ b/plugins/modules/facter.py @@ -62,7 +62,7 @@ from ansible.module_utils.basic import AnsibleModule def main(): module = AnsibleModule( argument_spec=dict( - arguments=dict(required=False, type='list', elements='str') + arguments=dict(type='list', elements='str') ) ) diff --git a/plugins/modules/filesystem.py b/plugins/modules/filesystem.py index f23d8d27a7..f14458c337 100644 --- a/plugins/modules/filesystem.py +++ b/plugins/modules/filesystem.py @@ -633,7 +633,7 @@ def main(): opts=dict(type='str'), force=dict(type='bool', default=False), resizefs=dict(type='bool', default=False), - uuid=dict(type='str', required=False), + uuid=dict(type='str'), ), required_if=[ ('state', 'present', ['fstype']) diff --git a/plugins/modules/flatpak_remote.py b/plugins/modules/flatpak_remote.py index bf30f6f85f..641ce930d0 100644 --- a/plugins/modules/flatpak_remote.py +++ b/plugins/modules/flatpak_remote.py @@ -112,26 +112,6 @@ command: returned: When a flatpak command has been executed type: str sample: "/usr/bin/flatpak remote-add --system flatpak-test https://dl.flathub.org/repo/flathub.flatpakrepo" -msg: - description: Module error message. - returned: failure - type: str - sample: "Executable '/usr/local/bin/flatpak' was not found on the system." -rc: - description: Return code from flatpak binary. - returned: When a flatpak command has been executed - type: int - sample: 0 -stderr: - description: Error output from flatpak binary. - returned: When a flatpak command has been executed - type: str - sample: "error: GPG verification enabled, but no summary found (check that the configured URL in remote config is correct)\n" -stdout: - description: Output from flatpak binary. - returned: When a flatpak command has been executed - type: str - sample: "flathub\tFlathub\thttps://dl.flathub.org/repo/\t1\t\n" """ from ansible.module_utils.basic import AnsibleModule diff --git a/plugins/modules/gem.py b/plugins/modules/gem.py index c364785f3e..1ea9c68a94 100644 --- a/plugins/modules/gem.py +++ b/plugins/modules/gem.py @@ -295,22 +295,22 @@ def main(): module = AnsibleModule( argument_spec=dict( - executable=dict(required=False, type='path'), - gem_source=dict(required=False, type='path'), - include_dependencies=dict(required=False, default=True, type='bool'), + executable=dict(type='path'), + gem_source=dict(type='path'), + include_dependencies=dict(default=True, type='bool'), name=dict(required=True, type='str'), - repository=dict(required=False, aliases=['source'], type='str'), - state=dict(required=False, default='present', choices=['present', 'absent', 'latest'], type='str'), - user_install=dict(required=False, default=True, type='bool'), - install_dir=dict(required=False, type='path'), + repository=dict(aliases=['source'], type='str'), + state=dict(default='present', choices=['present', 'absent', 'latest'], type='str'), + user_install=dict(default=True, type='bool'), + install_dir=dict(type='path'), bindir=dict(type='path'), norc=dict(type='bool', default=True), - pre_release=dict(required=False, default=False, type='bool'), - include_doc=dict(required=False, default=False, type='bool'), - env_shebang=dict(required=False, default=False, type='bool'), - version=dict(required=False, type='str'), - build_flags=dict(required=False, type='str'), - force=dict(required=False, default=False, type='bool'), + pre_release=dict(default=False, type='bool'), + include_doc=dict(default=False, type='bool'), + env_shebang=dict(default=False, type='bool'), + version=dict(type='str'), + build_flags=dict(type='str'), + force=dict(default=False, type='bool'), ), supports_check_mode=True, mutually_exclusive=[['gem_source', 'repository'], ['gem_source', 'version']], diff --git a/plugins/modules/gio_mime.py b/plugins/modules/gio_mime.py index f81e065612..b8864ea3e3 100644 --- a/plugins/modules/gio_mime.py +++ b/plugins/modules/gio_mime.py @@ -61,18 +61,6 @@ handler: returned: success type: str sample: google-chrome.desktop -stdout: - description: - - The output of the C(gio) command. - returned: success - type: str - sample: Set google-chrome.desktop as the default for x-scheme-handler/https -stderr: - description: - - The error output of the C(gio) command. - returned: failure - type: str - sample: 'gio: Failed to load info for handler "never-existed.desktop"' version: description: Version of gio. type: str diff --git a/plugins/modules/git_config_info.py b/plugins/modules/git_config_info.py index acedaf718a..29922382de 100644 --- a/plugins/modules/git_config_info.py +++ b/plugins/modules/git_config_info.py @@ -113,7 +113,7 @@ def main(): argument_spec=dict( name=dict(type="str"), path=dict(type="path"), - scope=dict(required=False, type="str", default="system", choices=["global", "system", "local", "file"]), + scope=dict(type="str", default="system", choices=["global", "system", "local", "file"]), ), required_if=[ ("scope", "local", ["path"]), diff --git a/plugins/modules/github_deploy_key.py b/plugins/modules/github_deploy_key.py index bbf6e711f3..4ec7fbb769 100644 --- a/plugins/modules/github_deploy_key.py +++ b/plugins/modules/github_deploy_key.py @@ -301,18 +301,18 @@ class GithubDeployKey(object): def main(): module = AnsibleModule( argument_spec=dict( - github_url=dict(required=False, type='str', default="https://api.github.com"), + github_url=dict(type='str', default="https://api.github.com"), owner=dict(required=True, type='str', aliases=['account', 'organization']), repo=dict(required=True, type='str', aliases=['repository']), name=dict(required=True, type='str', aliases=['title', 'label']), key=dict(required=True, type='str', no_log=False), - read_only=dict(required=False, type='bool', default=True), + read_only=dict(type='bool', default=True), state=dict(default='present', choices=['present', 'absent']), - force=dict(required=False, type='bool', default=False), - username=dict(required=False, type='str'), - password=dict(required=False, type='str', no_log=True), - otp=dict(required=False, type='int', no_log=True), - token=dict(required=False, type='str', no_log=True) + force=dict(type='bool', default=False), + username=dict(type='str'), + password=dict(type='str', no_log=True), + otp=dict(type='int', no_log=True), + token=dict(type='str', no_log=True) ), mutually_exclusive=[ ['password', 'token'] diff --git a/plugins/modules/github_repo.py b/plugins/modules/github_repo.py index d5091cde3d..abaddb3c28 100644 --- a/plugins/modules/github_repo.py +++ b/plugins/modules/github_repo.py @@ -246,12 +246,12 @@ def main(): password=dict(type='str', no_log=True), access_token=dict(type='str', no_log=True), name=dict(type='str', required=True), - state=dict(type='str', required=False, default="present", + state=dict(type='str', default="present", choices=["present", "absent"]), - organization=dict(type='str', required=False, default=None), + organization=dict(type='str', ), private=dict(type='bool'), description=dict(type='str'), - api_url=dict(type='str', required=False, default='https://api.github.com'), + api_url=dict(type='str', default='https://api.github.com'), force_defaults=dict(type='bool', default=True), ) module = AnsibleModule( diff --git a/plugins/modules/github_webhook.py b/plugins/modules/github_webhook.py index 0a6272c7b5..1ae2e71aaa 100644 --- a/plugins/modules/github_webhook.py +++ b/plugins/modules/github_webhook.py @@ -208,25 +208,16 @@ def main(): argument_spec=dict( repository=dict(type='str', required=True, aliases=['repo']), url=dict(type='str', required=True), - content_type=dict( - type='str', - choices=('json', 'form'), - required=False, - default='form'), - secret=dict(type='str', required=False, no_log=True), - insecure_ssl=dict(type='bool', required=False, default=False), - events=dict(type='list', elements='str', required=False), - active=dict(type='bool', required=False, default=True), - state=dict( - type='str', - required=False, - choices=('absent', 'present'), - default='present'), + content_type=dict(type='str', choices=('json', 'form'), default='form'), + secret=dict(type='str', no_log=True), + insecure_ssl=dict(type='bool', default=False), + events=dict(type='list', elements='str', ), + active=dict(type='bool', default=True), + state=dict(type='str', choices=('absent', 'present'), default='present'), user=dict(type='str', required=True), - password=dict(type='str', required=False, no_log=True), - token=dict(type='str', required=False, no_log=True), - github_url=dict( - type='str', required=False, default="https://api.github.com")), + password=dict(type='str', no_log=True), + token=dict(type='str', no_log=True), + github_url=dict(type='str', default="https://api.github.com")), mutually_exclusive=(('password', 'token'),), required_one_of=(("password", "token"),), required_if=(("state", "present", ("events",)),), diff --git a/plugins/modules/github_webhook_info.py b/plugins/modules/github_webhook_info.py index 648095b3fa..75315c77aa 100644 --- a/plugins/modules/github_webhook_info.py +++ b/plugins/modules/github_webhook_info.py @@ -124,10 +124,10 @@ def main(): argument_spec=dict( repository=dict(type='str', required=True, aliases=["repo"]), user=dict(type='str', required=True), - password=dict(type='str', required=False, no_log=True), - token=dict(type='str', required=False, no_log=True), + password=dict(type='str', no_log=True), + token=dict(type='str', no_log=True), github_url=dict( - type='str', required=False, default="https://api.github.com")), + type='str', default="https://api.github.com")), mutually_exclusive=(('password', 'token'), ), required_one_of=(("password", "token"), ), supports_check_mode=True) diff --git a/plugins/modules/gitlab_branch.py b/plugins/modules/gitlab_branch.py index b32169ef5a..6ed6e6a0c5 100644 --- a/plugins/modules/gitlab_branch.py +++ b/plugins/modules/gitlab_branch.py @@ -118,7 +118,7 @@ def main(): argument_spec.update( project=dict(type='str', required=True), branch=dict(type='str', required=True), - ref_branch=dict(type='str', required=False), + ref_branch=dict(type='str'), state=dict(type='str', default="present", choices=["absent", "present"]), ) diff --git a/plugins/modules/gitlab_group_access_token.py b/plugins/modules/gitlab_group_access_token.py index ad3a528ba5..0fe6c14af2 100644 --- a/plugins/modules/gitlab_group_access_token.py +++ b/plugins/modules/gitlab_group_access_token.py @@ -245,7 +245,7 @@ def main(): 'create_runner', 'ai_features', 'k8s_proxy']), - access_level=dict(type='str', required=False, default='maintainer', choices=['guest', 'reporter', 'developer', 'maintainer', 'owner']), + access_level=dict(type='str', default='maintainer', choices=['guest', 'reporter', 'developer', 'maintainer', 'owner']), expires_at=dict(type='str', required=True), recreate=dict(type='str', default='never', choices=['never', 'always', 'state_change']) )) diff --git a/plugins/modules/gitlab_group_variable.py b/plugins/modules/gitlab_group_variable.py index 3bda53ee94..10ca467bcd 100644 --- a/plugins/modules/gitlab_group_variable.py +++ b/plugins/modules/gitlab_group_variable.py @@ -372,11 +372,11 @@ def main(): argument_spec.update(auth_argument_spec()) argument_spec.update( group=dict(type='str', required=True), - purge=dict(type='bool', required=False, default=False), - vars=dict(type='dict', required=False, default=dict(), no_log=True), + purge=dict(type='bool', default=False), + vars=dict(type='dict', default=dict(), no_log=True), # please mind whenever changing the variables dict to also change module_utils/gitlab.py's # KNOWN dict in filter_returned_variables or bad evil will happen - variables=dict(type='list', elements='dict', required=False, default=list(), options=dict( + variables=dict(type='list', elements='dict', default=list(), options=dict( name=dict(type='str', required=True), value=dict(type='str', no_log=True), masked=dict(type='bool', default=False), diff --git a/plugins/modules/gitlab_hook.py b/plugins/modules/gitlab_hook.py index d6a188146d..87c8aa635a 100644 --- a/plugins/modules/gitlab_hook.py +++ b/plugins/modules/gitlab_hook.py @@ -307,7 +307,7 @@ def main(): job_events=dict(type='bool', default=False), pipeline_events=dict(type='bool', default=False), wiki_page_events=dict(type='bool', default=False), - releases_events=dict(type='bool', default=None), + releases_events=dict(type='bool'), hook_validate_certs=dict(type='bool', default=False, aliases=['enable_ssl_verification']), token=dict(type='str', no_log=True), )) diff --git a/plugins/modules/gitlab_instance_variable.py b/plugins/modules/gitlab_instance_variable.py index e167b60fc7..0f2c9b7752 100644 --- a/plugins/modules/gitlab_instance_variable.py +++ b/plugins/modules/gitlab_instance_variable.py @@ -301,8 +301,8 @@ def main(): argument_spec = basic_auth_argument_spec() argument_spec.update(auth_argument_spec()) argument_spec.update( - purge=dict(type='bool', required=False, default=False), - variables=dict(type='list', elements='dict', required=False, default=list(), options=dict( + purge=dict(type='bool', default=False), + variables=dict(type='list', elements='dict', default=list(), options=dict( name=dict(type='str', required=True), value=dict(type='str', no_log=True), masked=dict(type='bool', default=False), diff --git a/plugins/modules/gitlab_issue.py b/plugins/modules/gitlab_issue.py index b76c633226..c6bf6f8328 100644 --- a/plugins/modules/gitlab_issue.py +++ b/plugins/modules/gitlab_issue.py @@ -284,13 +284,13 @@ def main(): argument_spec = basic_auth_argument_spec() argument_spec.update(auth_argument_spec()) argument_spec.update( - assignee_ids=dict(type='list', elements='str', required=False), - description=dict(type='str', required=False), - description_path=dict(type='path', required=False), - issue_type=dict(type='str', default='issue', choices=["issue", "incident", "test_case"], required=False), - labels=dict(type='list', elements='str', required=False), - milestone_search=dict(type='str', required=False), - milestone_group_id=dict(type='str', required=False), + assignee_ids=dict(type='list', elements='str'), + description=dict(type='str'), + description_path=dict(type='path'), + issue_type=dict(type='str', default='issue', choices=["issue", "incident", "test_case"]), + labels=dict(type='list', elements='str'), + milestone_search=dict(type='str'), + milestone_group_id=dict(type='str'), project=dict(type='str', required=True), state=dict(type='str', default="present", choices=["absent", "present"]), state_filter=dict(type='str', default="opened", choices=["opened", "closed"]), diff --git a/plugins/modules/gitlab_label.py b/plugins/modules/gitlab_label.py index 2fe8d8d567..a139d1fcbd 100644 --- a/plugins/modules/gitlab_label.py +++ b/plugins/modules/gitlab_label.py @@ -410,16 +410,16 @@ def main(): argument_spec = basic_auth_argument_spec() argument_spec.update(auth_argument_spec()) argument_spec.update( - project=dict(type='str', required=False, default=None), - group=dict(type='str', required=False, default=None), - purge=dict(type='bool', required=False, default=False), - labels=dict(type='list', elements='dict', required=False, default=list(), + project=dict(type='str'), + group=dict(type='str'), + purge=dict(type='bool', default=False), + labels=dict(type='list', elements='dict', default=list(), options=dict( name=dict(type='str', required=True), - color=dict(type='str', required=False), - description=dict(type='str', required=False), - priority=dict(type='int', required=False), - new_name=dict(type='str', required=False),) + color=dict(type='str'), + description=dict(type='str'), + priority=dict(type='int'), + new_name=dict(type='str'),) ), state=dict(type='str', default="present", choices=["absent", "present"]), ) diff --git a/plugins/modules/gitlab_merge_request.py b/plugins/modules/gitlab_merge_request.py index 126c0e66f3..922b224c1f 100644 --- a/plugins/modules/gitlab_merge_request.py +++ b/plugins/modules/gitlab_merge_request.py @@ -287,13 +287,13 @@ def main(): source_branch=dict(type='str', required=True), target_branch=dict(type='str', required=True), title=dict(type='str', required=True), - description=dict(type='str', required=False), - labels=dict(type='str', default="", required=False), - description_path=dict(type='path', required=False), - remove_source_branch=dict(type='bool', default=False, required=False), + description=dict(type='str'), + labels=dict(type='str', default=""), + description_path=dict(type='path'), + remove_source_branch=dict(type='bool', default=False), state_filter=dict(type='str', default="opened", choices=["opened", "closed", "locked", "merged"]), - assignee_ids=dict(type='str', required=False), - reviewer_ids=dict(type='str', required=False), + assignee_ids=dict(type='str'), + reviewer_ids=dict(type='str'), state=dict(type='str', default="present", choices=["absent", "present"]), ) diff --git a/plugins/modules/gitlab_milestone.py b/plugins/modules/gitlab_milestone.py index 2e3ac23e75..1406f96ffb 100644 --- a/plugins/modules/gitlab_milestone.py +++ b/plugins/modules/gitlab_milestone.py @@ -411,15 +411,15 @@ def main(): argument_spec = basic_auth_argument_spec() argument_spec.update(auth_argument_spec()) argument_spec.update( - project=dict(type='str', required=False, default=None), - group=dict(type='str', required=False, default=None), - purge=dict(type='bool', required=False, default=False), - milestones=dict(type='list', elements='dict', required=False, default=list(), + project=dict(type='str'), + group=dict(type='str'), + purge=dict(type='bool', default=False), + milestones=dict(type='list', elements='dict', default=list(), options=dict( title=dict(type='str', required=True), - description=dict(type='str', required=False), - due_date=dict(type='str', required=False), - start_date=dict(type='str', required=False),) + description=dict(type='str'), + due_date=dict(type='str'), + start_date=dict(type='str'),) ), state=dict(type='str', default="present", choices=["absent", "present"]), ) diff --git a/plugins/modules/gitlab_project.py b/plugins/modules/gitlab_project.py index 16efadc738..1e2140e24a 100644 --- a/plugins/modules/gitlab_project.py +++ b/plugins/modules/gitlab_project.py @@ -600,7 +600,7 @@ def main(): builds_access_level=dict(type='str', choices=['private', 'disabled', 'enabled']), build_timeout=dict(type='int'), ci_config_path=dict(type='str'), - container_expiration_policy=dict(type='dict', default=None, options=dict( + container_expiration_policy=dict(type='dict', options=dict( cadence=dict(type='str', choices=["1d", "7d", "14d", "1month", "3month"]), enabled=dict(type='bool'), keep_n=dict(type='int', choices=[0, 1, 5, 10, 25, 50, 100]), diff --git a/plugins/modules/gitlab_project_access_token.py b/plugins/modules/gitlab_project_access_token.py index 82e9e0733f..3747870d9a 100644 --- a/plugins/modules/gitlab_project_access_token.py +++ b/plugins/modules/gitlab_project_access_token.py @@ -243,7 +243,7 @@ def main(): 'create_runner', 'ai_features', 'k8s_proxy']), - access_level=dict(type='str', required=False, default='maintainer', choices=['guest', 'reporter', 'developer', 'maintainer', 'owner']), + access_level=dict(type='str', default='maintainer', choices=['guest', 'reporter', 'developer', 'maintainer', 'owner']), expires_at=dict(type='str', required=True), recreate=dict(type='str', default='never', choices=['never', 'always', 'state_change']) )) diff --git a/plugins/modules/gitlab_project_variable.py b/plugins/modules/gitlab_project_variable.py index 21cec19217..4c261f5978 100644 --- a/plugins/modules/gitlab_project_variable.py +++ b/plugins/modules/gitlab_project_variable.py @@ -394,11 +394,11 @@ def main(): argument_spec.update(auth_argument_spec()) argument_spec.update( project=dict(type='str', required=True), - purge=dict(type='bool', required=False, default=False), - vars=dict(type='dict', required=False, default=dict(), no_log=True), + purge=dict(type='bool', default=False), + vars=dict(type='dict', default=dict(), no_log=True), # please mind whenever changing the variables dict to also change module_utils/gitlab.py's # KNOWN dict in filter_returned_variables or bad evil will happen - variables=dict(type='list', elements='dict', required=False, default=list(), options=dict( + variables=dict(type='list', elements='dict', default=list(), options=dict( name=dict(type='str', required=True), value=dict(type='str', no_log=True), masked=dict(type='bool', default=False), diff --git a/plugins/modules/grove.py b/plugins/modules/grove.py index 7d9b5c8213..81417657c8 100644 --- a/plugins/modules/grove.py +++ b/plugins/modules/grove.py @@ -101,8 +101,8 @@ def main(): channel_token=dict(type='str', required=True, no_log=True), message_content=dict(type='str', required=True), service=dict(type='str', default='ansible'), - url=dict(type='str', default=None), - icon_url=dict(type='str', default=None), + url=dict(type='str'), + icon_url=dict(type='str'), validate_certs=dict(default=True, type='bool'), ) ) diff --git a/plugins/modules/hg.py b/plugins/modules/hg.py index 9d51b3f198..982364504c 100644 --- a/plugins/modules/hg.py +++ b/plugins/modules/hg.py @@ -222,12 +222,12 @@ def main(): argument_spec=dict( repo=dict(type='str', required=True, aliases=['name']), dest=dict(type='path'), - revision=dict(type='str', default=None, aliases=['version']), + revision=dict(type='str', aliases=['version']), force=dict(type='bool', default=False), purge=dict(type='bool', default=False), update=dict(type='bool', default=True), clone=dict(type='bool', default=True), - executable=dict(type='str', default=None), + executable=dict(type='str'), ), ) repo = module.params['repo'] diff --git a/plugins/modules/homebrew.py b/plugins/modules/homebrew.py index cf00619180..021f990e67 100644 --- a/plugins/modules/homebrew.py +++ b/plugins/modules/homebrew.py @@ -807,13 +807,11 @@ def main(): argument_spec=dict( name=dict( aliases=["pkg", "package", "formula"], - required=False, type='list', elements='str', ), path=dict( default="/usr/local/bin:/opt/homebrew/bin:/home/linuxbrew/.linuxbrew/bin", - required=False, type='path', ), state=dict( @@ -835,13 +833,11 @@ def main(): type='bool', ), install_options=dict( - default=None, aliases=['options'], type='list', elements='str', ), upgrade_options=dict( - default=None, type='list', elements='str', ), diff --git a/plugins/modules/homebrew_cask.py b/plugins/modules/homebrew_cask.py index 7455a61d69..948f5c1fd1 100644 --- a/plugins/modules/homebrew_cask.py +++ b/plugins/modules/homebrew_cask.py @@ -734,13 +734,11 @@ def main(): argument_spec=dict( name=dict( aliases=["pkg", "package", "cask"], - required=False, type='list', elements='str', ), path=dict( default="/usr/local/bin:/opt/homebrew/bin", - required=False, type='path', ), state=dict( @@ -753,7 +751,6 @@ def main(): ), sudo_password=dict( type="str", - required=False, no_log=True, ), update_homebrew=dict( @@ -761,7 +758,6 @@ def main(): type='bool', ), install_options=dict( - default=None, aliases=['options'], type='list', elements='str', diff --git a/plugins/modules/homebrew_tap.py b/plugins/modules/homebrew_tap.py index f070ccccc7..f50472f90d 100644 --- a/plugins/modules/homebrew_tap.py +++ b/plugins/modules/homebrew_tap.py @@ -220,11 +220,10 @@ def main(): module = AnsibleModule( argument_spec=dict( name=dict(aliases=['tap'], type='list', required=True, elements='str'), - url=dict(default=None, required=False), + url=dict(), state=dict(default='present', choices=['present', 'absent']), path=dict( default="/usr/local/bin:/opt/homebrew/bin:/home/linuxbrew/.linuxbrew/bin", - required=False, type='path', ), ), diff --git a/plugins/modules/honeybadger_deployment.py b/plugins/modules/honeybadger_deployment.py index cc8147371f..2512fc2642 100644 --- a/plugins/modules/honeybadger_deployment.py +++ b/plugins/modules/honeybadger_deployment.py @@ -88,9 +88,9 @@ def main(): token=dict(required=True, no_log=True), environment=dict(required=True), user=dict(required=False), - repo=dict(required=False), - revision=dict(required=False), - url=dict(required=False, default='https://api.honeybadger.io/v1/deploys'), + repo=dict(), + revision=dict(), + url=dict(default='https://api.honeybadger.io/v1/deploys'), validate_certs=dict(default=True, type='bool'), ), supports_check_mode=True diff --git a/plugins/modules/htpasswd.py b/plugins/modules/htpasswd.py index 514e7bac56..d8a755476f 100644 --- a/plugins/modules/htpasswd.py +++ b/plugins/modules/htpasswd.py @@ -191,9 +191,9 @@ def main(): arg_spec = dict( path=dict(type='path', required=True, aliases=["dest", "destfile"]), name=dict(type='str', required=True, aliases=["username"]), - password=dict(type='str', required=False, default=None, no_log=True), - hash_scheme=dict(type='str', required=False, default="apr_md5_crypt", aliases=["crypt_scheme"]), - state=dict(type='str', required=False, default="present", choices=["present", "absent"]), + password=dict(type='str', no_log=True), + hash_scheme=dict(type='str', default="apr_md5_crypt", aliases=["crypt_scheme"]), + state=dict(type='str', default="present", choices=["present", "absent"]), create=dict(type='bool', default=True), ) @@ -241,8 +241,8 @@ def main(): (msg, changed) = present(path, username, password, hash_scheme, create, check_mode) elif state == 'absent': if not os.path.exists(path): - module.exit_json(msg="%s not present" % username, - warnings="%s does not exist" % path, changed=False) + module.warn("%s does not exist" % path) + module.exit_json(msg="%s not present" % username, changed=False) (msg, changed) = absent(path, username, check_mode) else: module.fail_json(msg="Invalid state: %s" % state) diff --git a/plugins/modules/icinga2_host.py b/plugins/modules/icinga2_host.py index 83ef73c8c7..d78f607aae 100644 --- a/plugins/modules/icinga2_host.py +++ b/plugins/modules/icinga2_host.py @@ -235,11 +235,11 @@ def main(): state=dict(default="present", choices=["absent", "present"]), name=dict(required=True, aliases=['host']), zone=dict(), - template=dict(default=None), + template=dict(), check_command=dict(default="hostalive"), - display_name=dict(default=None), + display_name=dict(), ip=dict(), - variables=dict(type='dict', default=None), + variables=dict(type='dict'), ) # Define the main module diff --git a/plugins/modules/influxdb_user.py b/plugins/modules/influxdb_user.py index 234bdafab6..45410e76a5 100644 --- a/plugins/modules/influxdb_user.py +++ b/plugins/modules/influxdb_user.py @@ -217,7 +217,7 @@ def main(): argument_spec.update( state=dict(default='present', type='str', choices=['present', 'absent']), user_name=dict(required=True, type='str'), - user_password=dict(required=False, type='str', no_log=True), + user_password=dict(type='str', no_log=True), admin=dict(default='False', type='bool'), grants=dict(type='list', elements='dict'), ) diff --git a/plugins/modules/ini_file.py b/plugins/modules/ini_file.py index e8b5916667..04fe92fa08 100644 --- a/plugins/modules/ini_file.py +++ b/plugins/modules/ini_file.py @@ -584,7 +584,7 @@ def main(): option=dict(type='str', required=True), value=dict(type='str'), values=dict(type='list', elements='str') - ), default=None, mutually_exclusive=[['value', 'values']]), + ), mutually_exclusive=[['value', 'values']]), option=dict(type='str'), value=dict(type='str'), values=dict(type='list', elements='str'), diff --git a/plugins/modules/ipa_dnsrecord.py b/plugins/modules/ipa_dnsrecord.py index f4051b66ac..3cba35b11c 100644 --- a/plugins/modules/ipa_dnsrecord.py +++ b/plugins/modules/ipa_dnsrecord.py @@ -353,7 +353,7 @@ def main(): record_value=dict(type='str'), record_values=dict(type='list', elements='str'), state=dict(type='str', default='present', choices=['present', 'absent']), - record_ttl=dict(type='int', required=False), + record_ttl=dict(type='int'), ) module = AnsibleModule( diff --git a/plugins/modules/ipa_dnszone.py b/plugins/modules/ipa_dnszone.py index b536c258d2..81a99bc54b 100644 --- a/plugins/modules/ipa_dnszone.py +++ b/plugins/modules/ipa_dnszone.py @@ -173,8 +173,8 @@ def main(): argument_spec = ipa_argument_spec() argument_spec.update(zone_name=dict(type='str', required=True), state=dict(type='str', default='present', choices=['present', 'absent']), - dynamicupdate=dict(type='bool', required=False, default=False), - allowsyncptr=dict(type='bool', required=False, default=False), + dynamicupdate=dict(type='bool', default=False), + allowsyncptr=dict(type='bool', default=False), ) module = AnsibleModule(argument_spec=argument_spec, diff --git a/plugins/modules/ipa_service.py b/plugins/modules/ipa_service.py index 54c5575950..51ace78760 100644 --- a/plugins/modules/ipa_service.py +++ b/plugins/modules/ipa_service.py @@ -197,10 +197,10 @@ def main(): argument_spec = ipa_argument_spec() argument_spec.update( krbcanonicalname=dict(type='str', required=True, aliases=['name']), - force=dict(type='bool', required=False), - skip_host_check=dict(type='bool', default=False, required=False), - hosts=dict(type='list', required=False, elements='str'), - state=dict(type='str', required=False, default='present', + force=dict(type='bool'), + skip_host_check=dict(type='bool', default=False), + hosts=dict(type='list', elements='str'), + state=dict(type='str', default='present', choices=['present', 'absent'])) module = AnsibleModule(argument_spec=argument_spec, diff --git a/plugins/modules/ipbase_info.py b/plugins/modules/ipbase_info.py index 6bbd6df1e9..7a2dde13d6 100644 --- a/plugins/modules/ipbase_info.py +++ b/plugins/modules/ipbase_info.py @@ -285,10 +285,10 @@ class IpbaseInfo(object): def main(): module_args = dict( - ip=dict(type='str', required=False, no_log=False), - apikey=dict(type='str', required=False, no_log=True), - hostname=dict(type='bool', required=False, no_log=False, default=False), - language=dict(type='str', required=False, no_log=False, default='en'), + ip=dict(type='str', no_log=False), + apikey=dict(type='str', no_log=True), + hostname=dict(type='bool', no_log=False, default=False), + language=dict(type='str', no_log=False, default='en'), ) module = AnsibleModule( diff --git a/plugins/modules/ipwcli_dns.py b/plugins/modules/ipwcli_dns.py index 58ff5fef28..604eb82b5f 100644 --- a/plugins/modules/ipwcli_dns.py +++ b/plugins/modules/ipwcli_dns.py @@ -271,18 +271,18 @@ def run_module(): dnsname=dict(type='str', required=True), type=dict(type='str', required=True, choices=['A', 'AAAA', 'SRV', 'NAPTR']), container=dict(type='str', required=True), - address=dict(type='str', required=False), - ttl=dict(type='int', required=False, default=3600), + address=dict(type='str'), + ttl=dict(type='int', default=3600), state=dict(type='str', default='present', choices=['absent', 'present']), - priority=dict(type='int', required=False, default=10), - weight=dict(type='int', required=False, default=10), - port=dict(type='int', required=False), - target=dict(type='str', required=False), - order=dict(type='int', required=False), - preference=dict(type='int', required=False), - flags=dict(type='str', required=False, choices=['S', 'A', 'U', 'P']), - service=dict(type='str', required=False), - replacement=dict(type='str', required=False), + priority=dict(type='int', default=10), + weight=dict(type='int', default=10), + port=dict(type='int'), + target=dict(type='str'), + order=dict(type='int'), + preference=dict(type='int'), + flags=dict(type='str', choices=['S', 'A', 'U', 'P']), + service=dict(type='str'), + replacement=dict(type='str'), username=dict(type='str', required=True), password=dict(type='str', required=True, no_log=True) ) diff --git a/plugins/modules/irc.py b/plugins/modules/irc.py index 1318804fcd..d18c9fd85f 100644 --- a/plugins/modules/irc.py +++ b/plugins/modules/irc.py @@ -232,9 +232,11 @@ def send_msg(msg, server='localhost', port='6667', channel=None, nick_to=None, k irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if use_tls: + kwargs = {} if validate_certs: try: context = ssl.create_default_context() + kwargs["server_hostname"] = server except AttributeError: raise Exception('Need at least Python 2.7.9 for SSL certificate validation') else: @@ -244,7 +246,7 @@ def send_msg(msg, server='localhost', port='6667', channel=None, nick_to=None, k else: context = ssl.SSLContext() context.verify_mode = ssl.CERT_NONE - irc = context.wrap_socket(irc) + irc = context.wrap_socket(irc, **kwargs) irc.connect((server, int(port))) if passwd: @@ -309,7 +311,7 @@ def main(): server=dict(default='localhost'), port=dict(type='int', default=6667), nick=dict(default='ansible'), - nick_to=dict(required=False, type='list', elements='str'), + nick_to=dict(type='list', elements='str'), msg=dict(required=True), color=dict(default="none", aliases=['colour'], choices=["white", "black", "blue", "green", "red", "brown", @@ -318,7 +320,7 @@ def main(): "light_blue", "pink", "gray", "light_gray", "none"]), style=dict(default="none", choices=["underline", "reverse", "bold", "italic", "none"]), - channel=dict(required=False), + channel=dict(), key=dict(no_log=True), topic=dict(), passwd=dict(no_log=True), diff --git a/plugins/modules/jabber.py b/plugins/modules/jabber.py index 01a34ff9f5..ab73672410 100644 --- a/plugins/modules/jabber.py +++ b/plugins/modules/jabber.py @@ -108,9 +108,9 @@ def main(): password=dict(required=True, no_log=True), to=dict(required=True), msg=dict(required=True), - host=dict(required=False), - port=dict(required=False, default=5222, type='int'), - encoding=dict(required=False), + host=dict(), + port=dict(default=5222, type='int'), + encoding=dict(), ), supports_check_mode=True ) diff --git a/plugins/modules/java_cert.py b/plugins/modules/java_cert.py index b75021fc57..13cfea9324 100644 --- a/plugins/modules/java_cert.py +++ b/plugins/modules/java_cert.py @@ -32,7 +32,7 @@ options: cert_port: description: - Port to connect to URL. - - This will be used to create server URL:PORT. + - This is used to create server URL:PORT. type: int default: 443 cert_path: @@ -98,8 +98,8 @@ options: state: description: - Defines action which can be either certificate import or removal. - - When state is present, the certificate will always idempotently be inserted into the keystore, even if there already - exists a cert alias that is different. + - When O(state=present), the certificate is always inserted into the keystore, even if there already exists a cert alias + that is different. type: str choices: [absent, present] default: present @@ -197,18 +197,6 @@ EXAMPLES = r""" """ RETURN = r""" -msg: - description: Output from stdout of keytool command after execution of given command. - returned: success - type: str - sample: "Module require existing keystore at keystore_path '/tmp/test/cacerts'" - -rc: - description: Keytool command execution return value. - returned: success - type: int - sample: "0" - cmd: description: Executed command to get action done. returned: success diff --git a/plugins/modules/java_keystore.py b/plugins/modules/java_keystore.py index df7e71abbe..c826c9af4c 100644 --- a/plugins/modules/java_keystore.py +++ b/plugins/modules/java_keystore.py @@ -24,8 +24,8 @@ options: name: description: - Name of the certificate in the keystore. - - If the provided name does not exist in the keystore, the module will re-create the keystore. This behavior changed - in community.general 3.0.0, before that the module would fail when the name did not match. + - If the provided name does not exist in the keystore, the module re-creates the keystore. This behavior changed in + community.general 3.0.0, before that the module would fail when the name did not match. type: str required: true certificate: @@ -62,7 +62,7 @@ options: password: description: - Password that should be used to secure the keystore. - - If the provided password fails to unlock the keystore, the module will re-create the keystore with the new passphrase. + - If the provided password fails to unlock the keystore, the module re-creates the keystore with the new passphrase. This behavior changed in community.general 3.0.0, before that the module would fail when the password did not match. type: str required: true @@ -130,7 +130,7 @@ notes: or with the P(ansible.builtin.file#lookup) lookup), while O(certificate_path) and O(private_key_path) require that the files are available on the target host. - By design, any change of a value of options O(keystore_type), O(name) or O(password), as well as changes of key or certificate - materials will cause the existing O(dest) to be overwritten. + materials causes the existing O(dest) to be overwritten. """ EXAMPLES = r""" @@ -166,24 +166,12 @@ EXAMPLES = r""" """ RETURN = r""" -msg: - description: Output from stdout of keytool/openssl command after execution of given command or an error. - returned: changed and failure - type: str - sample: "Unable to find the current certificate fingerprint in ..." - err: description: Output from stderr of keytool/openssl command after error of given command. returned: failure type: str sample: "Keystore password is too short - must be at least 6 characters\n" -rc: - description: Keytool/openssl command execution return value. - returned: changed and failure - type: int - sample: "0" - cmd: description: Executed command to get action done. returned: changed and failure diff --git a/plugins/modules/jenkins_build_info.py b/plugins/modules/jenkins_build_info.py index 7d08ec91ce..85cb22ad2c 100644 --- a/plugins/modules/jenkins_build_info.py +++ b/plugins/modules/jenkins_build_info.py @@ -30,7 +30,7 @@ options: build_number: description: - An integer which specifies a build of a job. - - If not specified the last build information will be returned. + - If not specified the last build information is returned. type: int password: description: diff --git a/plugins/modules/jenkins_credential.py b/plugins/modules/jenkins_credential.py index 3aff19c96d..3bd8a9dd7a 100644 --- a/plugins/modules/jenkins_credential.py +++ b/plugins/modules/jenkins_credential.py @@ -10,13 +10,13 @@ from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = r""" ---- module: jenkins_credential -short_description: Manage Jenkins credentials and domains via API +short_description: Manage Jenkins credentials and domains through API version_added: 11.1.0 description: - - This module allows managing Jenkins credentials and domain scopes via the Jenkins HTTP API. - - Create, update, and delete different credential types such as C(username/password), C(secret text), C(SSH key), C(certificates), C(GitHub App), and domains. + - This module allows managing Jenkins credentials and domain scopes through the Jenkins HTTP API. + - Create, update, and delete different credential types such as C(username/password), C(secret text), C(SSH key), C(certificates), + C(GitHub App), and domains. - For scoped domains (O(type=scope)), it supports restrictions based on V(hostname), V(hostname:port), V(path), and V(scheme). requirements: - urllib3 >= 1.26.0 @@ -170,7 +170,7 @@ options: inc_path: description: - List of URL paths to include when matching credentials to domains. - - "B(Matching is hierarchical): subpaths of excluded paths are also excluded, even if explicitly included." + - 'B(Matching is hierarchical): subpaths of excluded paths are also excluded, even if explicitly included.' type: list elements: str exc_path: @@ -565,7 +565,7 @@ def run_module(): name=dict(type="str"), username=dict(type="str"), password=dict(type="str", no_log=True), - file_path=dict(type="path", default=None), + file_path=dict(type="path"), secret=dict(type="str", no_log=True), appID=dict(type="str"), api_uri=dict(type="str", default="https://api.github.com"), diff --git a/plugins/modules/jenkins_job.py b/plugins/modules/jenkins_job.py index 93d922ed22..8362a40255 100644 --- a/plugins/modules/jenkins_job.py +++ b/plugins/modules/jenkins_job.py @@ -76,8 +76,8 @@ options: type: bool default: true description: - - If set to V(false), the SSL certificates will not be validated. This should only set to V(false) used on personally - controlled sites using self-signed certificates as it avoids verifying the source site. + - If set to V(false), the SSL certificates are not validated. This should only set to V(false) used on personally controlled + sites using self-signed certificates as it avoids verifying the source site. - The C(python-jenkins) library only handles this by using the environment variable E(PYTHONHTTPSVERIFY). version_added: 2.3.0 """ @@ -350,14 +350,14 @@ def job_config_to_string(xml_str): def main(): module = AnsibleModule( argument_spec=dict( - config=dict(type='str', required=False), + config=dict(type='str'), name=dict(type='str', required=True), - password=dict(type='str', required=False, no_log=True), - state=dict(type='str', required=False, choices=['present', 'absent'], default="present"), - enabled=dict(required=False, type='bool'), - token=dict(type='str', required=False, no_log=True), - url=dict(type='str', required=False, default="http://localhost:8080"), - user=dict(type='str', required=False), + password=dict(type='str', no_log=True), + state=dict(type='str', choices=['present', 'absent'], default="present"), + enabled=dict(type='bool'), + token=dict(type='str', no_log=True), + url=dict(type='str', default="http://localhost:8080"), + user=dict(type='str'), validate_certs=dict(type='bool', default=True), ), mutually_exclusive=[ diff --git a/plugins/modules/jenkins_job_info.py b/plugins/modules/jenkins_job_info.py index 638158fb44..37d9af3f56 100644 --- a/plugins/modules/jenkins_job_info.py +++ b/plugins/modules/jenkins_job_info.py @@ -53,7 +53,7 @@ options: - User to authenticate with the Jenkins server. validate_certs: description: - - If set to V(false), the SSL certificates will not be validated. + - If set to V(false), the SSL certificates are not validated. - This should only set to V(false) used on personally controlled sites using self-signed certificates. default: true type: bool diff --git a/plugins/modules/jenkins_node.py b/plugins/modules/jenkins_node.py index affd462659..aa75100168 100644 --- a/plugins/modules/jenkins_node.py +++ b/plugins/modules/jenkins_node.py @@ -65,9 +65,9 @@ options: offline_message: description: - Specifies the offline reason message to be set when configuring the Jenkins node state. - - If O(offline_message) is given and requested O(state) is not V(disabled), an error will be raised. + - If O(offline_message) is given and requested O(state) is not V(disabled), an error is raised. - Internally O(offline_message) is set using the V(toggleOffline) API, so updating the message when the node is already - offline (current state V(disabled)) is not possible. In this case, a warning will be issued. + offline (current state V(disabled)) is not possible. In this case, a warning is issued. type: str version_added: 10.0.0 """ diff --git a/plugins/modules/jenkins_plugin.py b/plugins/modules/jenkins_plugin.py index 73ff40c725..f47dcfe92f 100644 --- a/plugins/modules/jenkins_plugin.py +++ b/plugins/modules/jenkins_plugin.py @@ -51,7 +51,7 @@ options: type: str description: - Desired plugin state. - - If set to V(latest), the check for new version will be performed every time. This is suitable to keep the plugin up-to-date. + - If set to V(latest), the check for new version is performed every time. This is suitable to keep the plugin up-to-date. choices: [absent, present, pinned, unpinned, enabled, disabled, latest] default: present timeout: @@ -64,8 +64,8 @@ options: description: - Number of seconds after which a new copy of the C(update-center.json) file is downloaded. This is used to avoid the need to download the plugin to calculate its checksum when O(state=latest) is specified. - - Set it to V(0) if no cache file should be used. In that case, the plugin file will always be downloaded to calculate - its checksum when O(state=latest) is specified. + - Set it to V(0) if no cache file should be used. In that case, the plugin file is always downloaded to calculate its + checksum when O(state=latest) is specified. default: 86400 updates_url: type: list diff --git a/plugins/modules/jenkins_script.py b/plugins/modules/jenkins_script.py index bd30f9daa7..5a00581366 100644 --- a/plugins/modules/jenkins_script.py +++ b/plugins/modules/jenkins_script.py @@ -39,8 +39,8 @@ options: default: http://localhost:8080 validate_certs: description: - - If set to V(false), the SSL certificates will not be validated. This should only set to V(false) used on personally - controlled sites using self-signed certificates as it avoids verifying the source site. + - If set to V(false), the SSL certificates are not validated. This should only set to V(false) used on personally controlled + sites using self-signed certificates as it avoids verifying the source site. type: bool default: true user: @@ -142,12 +142,12 @@ def main(): module = AnsibleModule( argument_spec=dict( script=dict(required=True, type="str"), - url=dict(required=False, type="str", default="http://localhost:8080"), - validate_certs=dict(required=False, type="bool", default=True), - user=dict(required=False, type="str", default=None), - password=dict(required=False, no_log=True, type="str", default=None), - timeout=dict(required=False, type="int", default=10), - args=dict(required=False, type="dict", default=None) + url=dict(type="str", default="http://localhost:8080"), + validate_certs=dict(type="bool", default=True), + user=dict(type="str"), + password=dict(no_log=True, type="str"), + timeout=dict(type="int", default=10), + args=dict(type="dict") ) ) diff --git a/plugins/modules/jira.py b/plugins/modules/jira.py index 580177d64d..f99c252675 100644 --- a/plugins/modules/jira.py +++ b/plugins/modules/jira.py @@ -117,14 +117,13 @@ options: suboptions: type: description: - - Use type to specify which of the JIRA visibility restriction types will be used. + - Use O(comment_visibility.type) to specify which of the JIRA visibility restriction types is used. type: str required: true choices: [group, role] value: description: - - Use value to specify value corresponding to the type of visibility restriction. For example name of the group - or role. + - Specify value corresponding to the type of visibility restriction. For example name of the group or role. type: str required: true version_added: '3.2.0' @@ -165,12 +164,12 @@ options: type: str required: false description: - - Set issue from which link will be created. + - Set issue from which link is created. outwardissue: type: str required: false description: - - Set issue to which link will be created. + - Set issue to which link is created. fields: type: dict required: false @@ -192,7 +191,7 @@ options: maxresults: required: false description: - - Limit the result of O(operation=search). If no value is specified, the default jira limit will be used. + - Limit the result of O(operation=search). If no value is specified, the default JIRA limit is used. - Used when O(operation=search) only, ignored otherwise. type: int version_added: '0.2.0' @@ -226,12 +225,12 @@ options: content: type: str description: - - The Base64 encoded contents of the file to attach. If not specified, the contents of O(attachment.filename) will - be used instead. + - The Base64 encoded contents of the file to attach. If not specified, the contents of O(attachment.filename) is + used instead. mimetype: type: str description: - - The MIME type to supply for the upload. If not specified, best-effort detection will be done. + - The MIME type to supply for the upload. If not specified, best-effort detection is performed. notes: - Currently this only works with basic-auth, or tokens. - To use with JIRA Cloud, pass the login e-mail as the O(username) and the API token as O(password). diff --git a/plugins/modules/kdeconfig.py b/plugins/modules/kdeconfig.py index 4cc0fcf166..ac542d04e8 100644 --- a/plugins/modules/kdeconfig.py +++ b/plugins/modules/kdeconfig.py @@ -17,12 +17,12 @@ description: options: path: description: - - Path to the config file. If the file does not exist it will be created. + - Path to the config file. If the file does not exist it is created. type: path required: true kwriteconfig_path: description: - - Path to the kwriteconfig executable. If not specified, Ansible will try to discover it. + - Path to the kwriteconfig executable. If not specified, Ansible tries to discover it. type: path values: description: diff --git a/plugins/modules/keycloak_authentication_required_actions.py b/plugins/modules/keycloak_authentication_required_actions.py index 246963202f..69183ce605 100644 --- a/plugins/modules/keycloak_authentication_required_actions.py +++ b/plugins/modules/keycloak_authentication_required_actions.py @@ -49,7 +49,7 @@ options: type: dict defaultAction: description: - - Indicates, if any new user will have the required action assigned to it. + - Indicates whether new users have the required action assigned to them. type: bool enabled: description: @@ -149,7 +149,7 @@ end_state: type: dict defaultAction: description: - - Indicates, if any new user will have the required action assigned to it. + - Indicates whether new users have the required action assigned to them. sample: false type: bool enabled: diff --git a/plugins/modules/keycloak_authz_authorization_scope.py b/plugins/modules/keycloak_authz_authorization_scope.py index ef094830f5..78d70c7ee6 100644 --- a/plugins/modules/keycloak_authz_authorization_scope.py +++ b/plugins/modules/keycloak_authz_authorization_scope.py @@ -37,8 +37,8 @@ options: state: description: - State of the authorization scope. - - On V(present), the authorization scope will be created (or updated if it exists already). - - On V(absent), the authorization scope will be removed if it exists. + - On V(present), the authorization scope is created (or updated if it exists already). + - On V(absent), the authorization scope is removed if it exists. choices: ['present', 'absent'] default: 'present' type: str @@ -142,8 +142,8 @@ def main(): state=dict(type='str', default='present', choices=['present', 'absent']), name=dict(type='str', required=True), - display_name=dict(type='str', required=False), - icon_uri=dict(type='str', required=False), + display_name=dict(type='str'), + icon_uri=dict(type='str'), client_id=dict(type='str', required=True), realm=dict(type='str', required=True) ) diff --git a/plugins/modules/keycloak_authz_custom_policy.py b/plugins/modules/keycloak_authz_custom_policy.py index 132119f53f..9607c0172c 100644 --- a/plugins/modules/keycloak_authz_custom_policy.py +++ b/plugins/modules/keycloak_authz_custom_policy.py @@ -38,8 +38,8 @@ options: state: description: - State of the custom policy. - - On V(present), the custom policy will be created (or updated if it exists already). - - On V(absent), the custom policy will be removed if it exists. + - On V(present), the custom policy is created (or updated if it exists already). + - On V(absent), the custom policy is removed if it exists. choices: ['present', 'absent'] default: 'present' type: str diff --git a/plugins/modules/keycloak_authz_permission.py b/plugins/modules/keycloak_authz_permission.py index e931fd72f9..74bc6cf956 100644 --- a/plugins/modules/keycloak_authz_permission.py +++ b/plugins/modules/keycloak_authz_permission.py @@ -43,8 +43,8 @@ options: state: description: - State of the authorization permission. - - On V(present), the authorization permission will be created (or updated if it exists already). - - On V(absent), the authorization permission will be removed if it exists. + - On V(present), the authorization permission is created (or updated if it exists already). + - On V(absent), the authorization permission is removed if it exists. choices: ['present', 'absent'] default: 'present' type: str @@ -237,13 +237,13 @@ def main(): state=dict(type='str', default='present', choices=['present', 'absent']), name=dict(type='str', required=True), - description=dict(type='str', required=False), + description=dict(type='str'), permission_type=dict(type='str', choices=['scope', 'resource'], required=True), decision_strategy=dict(type='str', default='UNANIMOUS', choices=['UNANIMOUS', 'AFFIRMATIVE', 'CONSENSUS']), - resources=dict(type='list', elements='str', default=[], required=False), - scopes=dict(type='list', elements='str', default=[], required=False), - policies=dict(type='list', elements='str', default=[], required=False), + resources=dict(type='list', elements='str', default=[]), + scopes=dict(type='list', elements='str', default=[]), + policies=dict(type='list', elements='str', default=[]), client_id=dict(type='str', required=True), realm=dict(type='str', required=True) ) diff --git a/plugins/modules/keycloak_client.py b/plugins/modules/keycloak_client.py index 0a7f3fe73f..6c8a7b1383 100644 --- a/plugins/modules/keycloak_client.py +++ b/plugins/modules/keycloak_client.py @@ -37,8 +37,8 @@ options: state: description: - State of the client. - - On V(present), the client will be created (or updated if it exists already). - - On V(absent), the client will be removed if it exists. + - On V(present), the client are created (or updated if it exists already). + - On V(absent), the client are removed if it exists. choices: ['present', 'absent'] default: 'present' type: str @@ -116,8 +116,8 @@ options: secret: description: - When using O(client_authenticator_type=client-secret) (the default), you can specify a secret here (otherwise one - will be generated if it does not exit). If changing this secret, the module will not register a change currently (but - the changed secret will be saved). + is generated if it does not exit). If changing this secret, the module does not register a change currently (but the + changed secret is saved). type: str registration_access_token: @@ -130,8 +130,8 @@ options: default_roles: description: - - List of default roles for this client. If the client roles referenced do not exist yet, they will be created. This - is C(defaultRoles) in the Keycloak REST API. + - List of default roles for this client. If the client roles referenced do not exist yet, they are created. This is + C(defaultRoles) in the Keycloak REST API. aliases: - defaultRoles type: list @@ -232,7 +232,7 @@ options: protocol: description: - Type of client. - - At creation only, default value will be V(openid-connect) if O(protocol) is omitted. + - At creation only, default value is V(openid-connect) if O(protocol) is omitted. - The V(docker-v2) value was added in community.general 8.6.0. type: str choices: ['openid-connect', 'saml', 'docker-v2'] @@ -261,7 +261,7 @@ options: client_template: description: - - Client template to use for this client. If it does not exist this field will silently be dropped. This is C(clientTemplate) + - Client template to use for this client. If it does not exist this field is silently dropped. This is C(clientTemplate) in the Keycloak REST API. type: str aliases: @@ -454,7 +454,7 @@ options: - A dict of further attributes for this client. This can contain various configuration settings; an example is given in the examples section. While an exhaustive list of permissible options is not available; possible options as of Keycloak 3.4 are listed below. The Keycloak API does not validate whether a given option is appropriate for the protocol - used; if specified anyway, Keycloak will simply not use it. + used; if specified anyway, Keycloak does not use it. type: dict suboptions: saml.authnstatement: @@ -532,7 +532,7 @@ options: - For OpenID-Connect clients, client certificate for validating JWT issued by client and signed by its key, base64-encoded. x509.subjectdn: description: - - For OpenID-Connect clients, subject which will be used to authenticate the client. + - For OpenID-Connect clients, subject which is used to authenticate the client. type: str version_added: 9.5.0 @@ -704,19 +704,31 @@ proposed: description: Representation of proposed client. returned: always type: dict - sample: {clientId: "test"} + sample: {"clientId": "test"} existing: description: Representation of existing client (sample is truncated). returned: always type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } end_state: description: Representation of client after module execution (sample is truncated). returned: on success type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import KeycloakAPI, camel, \ diff --git a/plugins/modules/keycloak_client_rolemapping.py b/plugins/modules/keycloak_client_rolemapping.py index ff41486873..1700c99cc1 100644 --- a/plugins/modules/keycloak_client_rolemapping.py +++ b/plugins/modules/keycloak_client_rolemapping.py @@ -22,9 +22,9 @@ description: the scope tailored to your needs and a user having the expected roles. - The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at U(https://www.keycloak.org/docs-api/8.0/rest-api/index.html). - - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and will be returned that - way by this module. You may pass single values for attributes when calling the module, and this will be translated into - a list suitable for the API. + - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and are returned that way + by this module. You may pass single values for attributes when calling the module, and this is translated into a list + suitable for the API. - When updating a client_rolemapping, where possible provide the role ID to the module. This removes a lookup to the API to translate the name into the role ID. attributes: @@ -39,9 +39,9 @@ options: state: description: - State of the client_rolemapping. - - On V(present), the client_rolemapping will be created if it does not yet exist, or updated with the parameters you - provide. - - On V(absent), the client_rolemapping will be removed if it exists. + - On V(present), the client_rolemapping is created if it does not yet exist, or updated with the parameters + you provide. + - On V(absent), the client_rolemapping is removed if it exists. default: 'present' type: str choices: @@ -87,8 +87,8 @@ options: type: str description: - ID of the group to be mapped. - - This parameter is not required for updating or deleting the rolemapping but providing it will reduce the number of - API calls required. + - This parameter is not required for updating or deleting the rolemapping but providing it reduces the number of API + calls required. client_id: type: str description: @@ -98,8 +98,8 @@ options: type: str description: - ID of the client to be mapped. - - This parameter is not required for updating or deleting the rolemapping but providing it will reduce the number of - API calls required. + - This parameter is not required for updating or deleting the rolemapping but providing it reduces the number of API + calls required. roles: description: - Roles to be mapped to the group. @@ -115,8 +115,8 @@ options: type: str description: - The unique identifier for this role_representation. - - This parameter is not required for updating or deleting a role_representation but providing it will reduce the - number of API calls required. + - This parameter is not required for updating or deleting a role_representation but providing it reduces the number + of API calls required. extends_documentation_fragment: - community.general.keycloak - community.general.keycloak.actiongroup_keycloak @@ -209,7 +209,7 @@ proposed: description: Representation of proposed client role mapping. returned: always type: dict - sample: {clientId: "test"} + sample: {"clientId": "test"} existing: description: @@ -217,7 +217,13 @@ existing: - The sample is truncated. returned: always type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } end_state: description: @@ -225,7 +231,13 @@ end_state: - The sample is truncated. returned: on success type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import ( diff --git a/plugins/modules/keycloak_client_rolescope.py b/plugins/modules/keycloak_client_rolescope.py index db11f37098..fcf57c2e4a 100644 --- a/plugins/modules/keycloak_client_rolescope.py +++ b/plugins/modules/keycloak_client_rolescope.py @@ -22,9 +22,9 @@ description: In a default Keycloak installation, admin-cli and an admin user would work, as would a separate client definition with the scope tailored to your needs and a user having the expected roles. - Client O(client_id) must have O(community.general.keycloak_client#module:full_scope_allowed) set to V(false). - - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and will be returned that - way by this module. You may pass single values for attributes when calling the module, and this will be translated into - a list suitable for the API. + - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and are returned that way + by this module. You may pass single values for attributes when calling the module, and this is translated into a list + suitable for the API. attributes: check_mode: support: full @@ -37,8 +37,8 @@ options: state: description: - State of the role mapping. - - On V(present), all roles in O(role_names) will be mapped if not exists yet. - - On V(absent), all roles mapping in O(role_names) will be removed if it exists. + - On V(present), all roles in O(role_names) are mapped if not exist yet. + - On V(absent), all roles mapping in O(role_names) are removed if it exists. default: 'present' type: str choices: diff --git a/plugins/modules/keycloak_clientscope.py b/plugins/modules/keycloak_clientscope.py index ed9fe97043..ddb4e1b04b 100644 --- a/plugins/modules/keycloak_clientscope.py +++ b/plugins/modules/keycloak_clientscope.py @@ -22,9 +22,9 @@ description: the scope tailored to your needs and a user having the expected roles. - The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at U(https://www.keycloak.org/docs-api/8.0/rest-api/index.html). - - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and will be returned that - way by this module. You may pass single values for attributes when calling the module, and this will be translated into - a list suitable for the API. + - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and are returned that way + by this module. You may pass single values for attributes when calling the module, and this is translated into a list + suitable for the API. - When updating a client_scope, where possible provide the client_scope ID to the module. This removes a lookup to the API to translate the name into the client_scope ID. attributes: @@ -39,8 +39,8 @@ options: state: description: - State of the client_scope. - - On V(present), the client_scope will be created if it does not yet exist, or updated with the parameters you provide. - - On V(absent), the client_scope will be removed if it exists. + - On V(present), the client_scope is created if it does not yet exist, or updated with the parameters you provide. + - On V(absent), the client_scope is removed if it exists. default: 'present' type: str choices: @@ -62,8 +62,8 @@ options: type: str description: - The unique identifier for this client_scope. - - This parameter is not required for updating or deleting a client_scope but providing it will reduce the number of - API calls required. + - This parameter is not required for updating or deleting a client_scope but providing it reduces the number of API + calls required. description: type: str description: @@ -263,19 +263,31 @@ proposed: description: Representation of proposed client scope. returned: always type: dict - sample: {clientId: "test"} + sample: {"clientId": "test"} existing: description: Representation of existing client scope (sample is truncated). returned: always type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } end_state: description: Representation of client scope after module execution (sample is truncated). returned: on success type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import KeycloakAPI, camel, \ diff --git a/plugins/modules/keycloak_clientscope_type.py b/plugins/modules/keycloak_clientscope_type.py index 493363f391..85308f1a22 100644 --- a/plugins/modules/keycloak_clientscope_type.py +++ b/plugins/modules/keycloak_clientscope_type.py @@ -99,20 +99,43 @@ proposed: description: Representation of proposed client-scope types mapping. returned: always type: dict - sample: {default_clientscopes: ["profile", "role"], optional_clientscopes: []} + sample: + { + "default_clientscopes": [ + "profile", + "role" + ], + "optional_clientscopes": [] + } existing: description: - Representation of client scopes before module execution. returned: always type: dict - sample: {default_clientscopes: ["profile", "role"], optional_clientscopes: ["phone"]} + sample: + { + "default_clientscopes": [ + "profile", + "role" + ], + "optional_clientscopes": [ + "phone" + ] + } end_state: description: - Representation of client scopes after module execution. - The sample is truncated. returned: on success type: dict - sample: {default_clientscopes: ["profile", "role"], optional_clientscopes: []} + sample: + { + "default_clientscopes": [ + "profile", + "role" + ], + "optional_clientscopes": [] + } """ from ansible.module_utils.basic import AnsibleModule diff --git a/plugins/modules/keycloak_clientsecret_info.py b/plugins/modules/keycloak_clientsecret_info.py index da07d03248..0ea48f6a33 100644 --- a/plugins/modules/keycloak_clientsecret_info.py +++ b/plugins/modules/keycloak_clientsecret_info.py @@ -39,8 +39,8 @@ options: id: description: - The unique identifier for this client. - - This parameter is not required for getting or generating a client secret but providing it will reduce the number of - API calls required. + - This parameter is not required for getting or generating a client secret but providing it reduces the number of API + calls required. type: str client_id: diff --git a/plugins/modules/keycloak_clientsecret_regenerate.py b/plugins/modules/keycloak_clientsecret_regenerate.py index bb449abc10..2bcaeb3705 100644 --- a/plugins/modules/keycloak_clientsecret_regenerate.py +++ b/plugins/modules/keycloak_clientsecret_regenerate.py @@ -43,8 +43,8 @@ options: id: description: - The unique identifier for this client. - - This parameter is not required for getting or generating a client secret but providing it will reduce the number of - API calls required. + - This parameter is not required for getting or generating a client secret but providing it reduces the number of API + calls required. type: str client_id: diff --git a/plugins/modules/keycloak_clienttemplate.py b/plugins/modules/keycloak_clienttemplate.py index 53b1266c7c..ee357605f1 100644 --- a/plugins/modules/keycloak_clienttemplate.py +++ b/plugins/modules/keycloak_clienttemplate.py @@ -35,8 +35,8 @@ options: state: description: - State of the client template. - - On V(present), the client template will be created (or updated if it exists already). - - On V(absent), the client template will be removed if it exists. + - On V(present), the client template is created (or updated if it exists already). + - On V(absent), the client template is removed if it exists. choices: ['present', 'absent'] default: 'present' type: str @@ -238,10 +238,7 @@ proposed: description: Representation of proposed client template. returned: always type: dict - sample: - { - "name": "test01" - } + sample: {"name": "test01"} existing: description: Representation of existing client template (sample is truncated). diff --git a/plugins/modules/keycloak_component.py b/plugins/modules/keycloak_component.py index 15c3c8e731..8b0c67b321 100644 --- a/plugins/modules/keycloak_component.py +++ b/plugins/modules/keycloak_component.py @@ -35,8 +35,8 @@ options: state: description: - State of the Keycloak component. - - On V(present), the component will be created (or updated if it exists already). - - On V(absent), the component will be removed if it exists. + - On V(present), the component is created (or updated if it exists already). + - On V(absent), the component is removed if it exists. choices: ['present', 'absent'] default: 'present' type: str diff --git a/plugins/modules/keycloak_group.py b/plugins/modules/keycloak_group.py index 865b52213a..7053b33a35 100644 --- a/plugins/modules/keycloak_group.py +++ b/plugins/modules/keycloak_group.py @@ -20,9 +20,9 @@ description: scope tailored to your needs and a user having the expected roles. - The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at U(https://www.keycloak.org/docs-api/20.0.2/rest-api/index.html). - - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and will be returned that - way by this module. You may pass single values for attributes when calling the module, and this will be translated into - a list suitable for the API. + - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and are returned that way + by this module. You may pass single values for attributes when calling the module, and this is translated into a list + suitable for the API. - When updating a group, where possible provide the group ID to the module. This removes a lookup to the API to translate the name into the group ID. attributes: @@ -37,9 +37,9 @@ options: state: description: - State of the group. - - On V(present), the group will be created if it does not yet exist, or updated with the parameters you provide. - - On V(absent), the group will be removed if it exists. Be aware that absenting a group with subgroups will automatically - delete all its subgroups too. + - On V(present), the group is created if it does not yet exist, or updated with the parameters you provide. + - On V(absent), the group is removed if it exists. Be aware that absenting a group with subgroups automatically deletes + all its subgroups too. default: 'present' type: str choices: @@ -61,8 +61,7 @@ options: type: str description: - The unique identifier for this group. - - This parameter is not required for updating or deleting a group but providing it will reduce the number of API calls - required. + - This parameter is not required for updating or deleting a group but providing it reduces the number of API calls required. attributes: type: dict description: @@ -282,8 +281,7 @@ end_state: returned: always sample: [] subGroups: - description: A list of groups that are children of this group. These groups will have the same parameters as documented - here. + description: A list of groups that are children of this group. These groups have the same parameters as documented here. type: list returned: always clientRoles: diff --git a/plugins/modules/keycloak_identity_provider.py b/plugins/modules/keycloak_identity_provider.py index eea168a14b..40a06846d6 100644 --- a/plugins/modules/keycloak_identity_provider.py +++ b/plugins/modules/keycloak_identity_provider.py @@ -34,9 +34,8 @@ options: state: description: - State of the identity provider. - - On V(present), the identity provider will be created if it does not yet exist, or updated with the parameters you - provide. - - On V(absent), the identity provider will be removed if it exists. + - On V(present), the identity provider is created if it does not yet exist, or updated with the parameters you provide. + - On V(absent), the identity provider is removed if it exists. default: 'present' type: str choices: @@ -148,14 +147,14 @@ options: sync_mode: description: - - Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. + - Default sync mode for all mappers. The sync mode determines when user data is synced using the mappers. aliases: - syncMode type: str issuer: description: - - The issuer identifier for the issuer of the response. If not provided, no validation will be performed. + - The issuer identifier for the issuer of the response. If not provided, no validation is performed. type: str authorizationUrl: @@ -205,7 +204,7 @@ options: useJwksUrl: description: - - If the switch is on, identity provider public keys will be downloaded from given JWKS URL. + - If V(true), identity provider public keys are downloaded from given JWKS URL. type: bool jwksUrl: @@ -215,7 +214,7 @@ options: entityId: description: - - The Entity ID that will be used to uniquely identify this SAML Service Provider. + - The Entity ID that is used to uniquely identify this SAML Service Provider. type: str singleSignOnServiceUrl: diff --git a/plugins/modules/keycloak_realm.py b/plugins/modules/keycloak_realm.py index c2d4dceb21..c8bc7dc7df 100644 --- a/plugins/modules/keycloak_realm.py +++ b/plugins/modules/keycloak_realm.py @@ -39,8 +39,8 @@ options: state: description: - State of the realm. - - On V(present), the realm will be created (or updated if it exists already). - - On V(absent), the realm will be removed if it exists. + - On V(present), the realm is created (or updated if it exists already). + - On V(absent), the realm is removed if it exists. choices: ['present', 'absent'] default: 'present' type: str @@ -553,19 +553,31 @@ proposed: description: Representation of proposed realm. returned: always type: dict - sample: {realm: "test"} + sample: {"realm": "test"} existing: description: Representation of existing realm (sample is truncated). returned: always type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } end_state: description: Representation of realm after module execution (sample is truncated). returned: on success type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import KeycloakAPI, camel, \ diff --git a/plugins/modules/keycloak_realm_info.py b/plugins/modules/keycloak_realm_info.py index 838b19513d..501ca48c21 100644 --- a/plugins/modules/keycloak_realm_info.py +++ b/plugins/modules/keycloak_realm_info.py @@ -19,9 +19,9 @@ description: - This module allows you to get Keycloak realm public information using the Keycloak REST API. - The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at U(https://www.keycloak.org/docs-api/8.0/rest-api/index.html). - - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and will be returned that - way by this module. You may pass single values for attributes when calling the module, and this will be translated into - a list suitable for the API. + - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and are returned that way + by this module. You may pass single values for attributes when calling the module, and this is translated into a list + suitable for the API. extends_documentation_fragment: - community.general.attributes - community.general.attributes.info_module diff --git a/plugins/modules/keycloak_realm_key.py b/plugins/modules/keycloak_realm_key.py index 4f6caa4464..dbb284ec4b 100644 --- a/plugins/modules/keycloak_realm_key.py +++ b/plugins/modules/keycloak_realm_key.py @@ -25,11 +25,9 @@ description: at U(https://www.keycloak.org/docs-api/8.0/rest-api/index.html). Aliases are provided so camelCased versions can be used as well. - This module is unable to detect changes to the actual cryptographic key after importing it. However, if some other property - is changed alongside the cryptographic key, then the key will also get changed as a side-effect, as the JSON payload needs - to include the private key. This can be considered either a bug or a feature, as the alternative would be to always update - the realm key whether it has changed or not. - - If certificate is not explicitly provided it will be dynamically created by Keycloak. Therefore comparing the current - state of the certificate to the desired state (which may be empty) is not possible. + is changed alongside the cryptographic key, then the key also changes as a side-effect, as the JSON payload needs to include + the private key. This can be considered either a bug or a feature, as the alternative would be to always update the realm + key whether it has changed or not. attributes: check_mode: support: full @@ -42,8 +40,8 @@ options: state: description: - State of the keycloak realm key. - - On V(present), the realm key will be created (or updated if it exists already). - - On V(absent), the realm key will be removed if it exists. + - On V(present), the realm key is created (or updated if it exists already). + - On V(absent), the realm key is removed if it exists. choices: ['present', 'absent'] default: 'present' type: str @@ -119,10 +117,10 @@ options: notes: - Current value of the private key cannot be fetched from Keycloak. Therefore comparing its desired state to the current state is not possible. - - If certificate is not explicitly provided it will be dynamically created by Keycloak. Therefore comparing the current + - If O(config.certificate) is not explicitly provided it is dynamically created by Keycloak. Therefore comparing the current state of the certificate to the desired state (which may be empty) is not possible. - Due to the private key and certificate options the module is B(not fully idempotent). You can use O(force=true) to force - the module to always update if you know that the private key might have changed. + the module to ensure updating if you know that the private key might have changed. extends_documentation_fragment: - community.general.keycloak - community.general.keycloak.actiongroup_keycloak @@ -208,7 +206,21 @@ end_state: description: Realm key configuration. type: dict returned: when O(state=present) - sample: {"active": ["true"], "algorithm": ["RS256"], "enabled": ["true"], "priority": ["140"]} + sample: + { + "active": [ + "true" + ], + "algorithm": [ + "RS256" + ], + "enabled": [ + "true" + ], + "priority": [ + "140" + ] + } """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import KeycloakAPI, camel, \ diff --git a/plugins/modules/keycloak_realm_rolemapping.py b/plugins/modules/keycloak_realm_rolemapping.py index 2e3366d422..2b6b6a4eda 100644 --- a/plugins/modules/keycloak_realm_rolemapping.py +++ b/plugins/modules/keycloak_realm_rolemapping.py @@ -22,9 +22,9 @@ description: definition with the scope tailored to your needs and a user having the expected roles. - The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at U(https://www.keycloak.org/docs-api/18.0/rest-api/index.html). - - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and will be returned that - way by this module. You may pass single values for attributes when calling the module, and this will be translated into - a list suitable for the API. + - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and are returned that way + by this module. You may pass single values for attributes when calling the module, and this is translated into a list + suitable for the API. - When updating a group_rolemapping, where possible provide the role ID to the module. This removes a lookup to the API to translate the name into the role ID. attributes: @@ -39,9 +39,8 @@ options: state: description: - State of the realm_rolemapping. - - On C(present), the realm_rolemapping will be created if it does not yet exist, or updated with the parameters you - provide. - - On C(absent), the realm_rolemapping will be removed if it exists. + - On C(present), the realm_rolemapping is created if it does not yet exist, or updated with the parameters you provide. + - On C(absent), the realm_rolemapping is removed if it exists. default: 'present' type: str choices: @@ -86,8 +85,8 @@ options: type: str description: - ID of the group to be mapped. - - This parameter is not required for updating or deleting the rolemapping but providing it will reduce the number of - API calls required. + - This parameter is not required for updating or deleting the rolemapping but providing it reduces the number of API + calls required. roles: description: - Roles to be mapped to the group. @@ -103,8 +102,8 @@ options: type: str description: - The unique identifier for this role_representation. - - This parameter is not required for updating or deleting a role_representation but providing it will reduce the - number of API calls required. + - This parameter is not required for updating or deleting a role_representation but providing it reduces the number + of API calls required. extends_documentation_fragment: - community.general.keycloak - community.general.keycloak.actiongroup_keycloak @@ -195,7 +194,7 @@ proposed: description: Representation of proposed client role mapping. returned: always type: dict - sample: {clientId: "test"} + sample: {"clientId": "test"} existing: description: @@ -203,7 +202,13 @@ existing: - The sample is truncated. returned: always type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } end_state: description: @@ -211,7 +216,13 @@ end_state: - The sample is truncated. returned: on success type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import ( diff --git a/plugins/modules/keycloak_role.py b/plugins/modules/keycloak_role.py index c9979653c5..5b706354ed 100644 --- a/plugins/modules/keycloak_role.py +++ b/plugins/modules/keycloak_role.py @@ -22,9 +22,9 @@ description: scope tailored to your needs and a user having the expected roles. - The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at U(https://www.keycloak.org/docs-api/8.0/rest-api/index.html). - - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and will be returned that - way by this module. You may pass single values for attributes when calling the module, and this will be translated into - a list suitable for the API. + - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and are returned that way + by this module. You may pass single values for attributes when calling the module, and this is translated into a list + suitable for the API. attributes: check_mode: support: full @@ -37,8 +37,8 @@ options: state: description: - State of the role. - - On V(present), the role will be created if it does not yet exist, or updated with the parameters you provide. - - On V(absent), the role will be removed if it exists. + - On V(present), the role is created if it does not yet exist, or updated with the parameters you provide. + - On V(absent), the role is removed if it exists. default: 'present' type: str choices: @@ -195,10 +195,7 @@ proposed: description: Representation of proposed role. returned: always type: dict - sample: - { - "description": "My updated test description" - } + sample: {"description": "My updated test description"} existing: description: Representation of existing role. @@ -247,7 +244,7 @@ def main(): composites_spec = dict( name=dict(type='str', required=True), - client_id=dict(type='str', aliases=['clientId'], required=False), + client_id=dict(type='str', aliases=['clientId']), state=dict(type='str', default='present', choices=['present', 'absent']) ) diff --git a/plugins/modules/keycloak_user.py b/plugins/modules/keycloak_user.py index 83bf8f5d02..2b3c838483 100644 --- a/plugins/modules/keycloak_user.py +++ b/plugins/modules/keycloak_user.py @@ -101,9 +101,9 @@ options: groups: description: - List of groups for the user. - Groups can be referenced by their name, like V(staff), or their path, like V(/staff/engineering). - The path syntax allows you to reference subgroups, which is not possible otherwise. - This is possible since community.general 10.6.0. + - Groups can be referenced by their name, like V(staff), or their path, like V(/staff/engineering). The path syntax + allows you to reference subgroups, which is not possible otherwise. + - Using the path is possible since community.general 10.6.0. type: list elements: dict default: [] @@ -332,11 +332,6 @@ EXAMPLES = r""" """ RETURN = r""" -msg: - description: Message as to what action was taken. - returned: always - type: str - sample: User f18c709c-03d6-11ee-970b-c74bf2721112 created proposed: description: Representation of the proposed user. returned: on success @@ -349,10 +344,6 @@ end_state: description: Representation of the user after module execution. returned: on success type: dict -changed: - description: Return V(true) if the operation changed the user on the keycloak server, V(false) otherwise. - returned: always - type: bool """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import KeycloakAPI, camel, \ diff --git a/plugins/modules/keycloak_user_federation.py b/plugins/modules/keycloak_user_federation.py index b3b86111c0..3290ab8dd9 100644 --- a/plugins/modules/keycloak_user_federation.py +++ b/plugins/modules/keycloak_user_federation.py @@ -34,8 +34,8 @@ options: state: description: - State of the user federation. - - On V(present), the user federation will be created if it does not yet exist, or updated with the parameters you provide. - - On V(absent), the user federation will be removed if it exists. + - On V(present), the user federation is created if it does not yet exist, or updated with the parameters you provide. + - On V(absent), the user federation is removed if it exists. default: 'present' type: str choices: @@ -50,7 +50,7 @@ options: id: description: - - The unique ID for this user federation. If left empty, the user federation will be searched by its O(name). + - The unique ID for this user federation. If left empty, the user federation is searched by its O(name). type: str name: @@ -76,7 +76,7 @@ options: parent_id: description: - - Unique ID for the parent of this user federation. Realm ID will be automatically used if left blank. + - Unique ID for the parent of this user federation. Realm ID is automatically used if left blank. aliases: - parentId type: str @@ -95,11 +95,11 @@ options: value with the desired value always evaluates to not equal. This means the before and desired states are never equal if the parameter is set. - Set to V(always) to include O(config.bindCredential) in the comparison of before and desired state. Because of the - redacted value returned by Keycloak the module will always detect a change and make an update if a O(config.bindCredential) + redacted value returned by Keycloak the module always detects a change and make an update if a O(config.bindCredential) value is set. - Set to V(only_indirect) to exclude O(config.bindCredential) when comparing the before state with the desired state. - The value of O(config.bindCredential) will only be updated if there are other changes to the user federation that - require an update. + The value of O(config.bindCredential) is only updated if there are other changes to the user federation that require + an update. type: str default: always choices: @@ -129,14 +129,14 @@ options: importEnabled: description: - - If V(true), LDAP users will be imported into Keycloak DB and synced by the configured sync policies. + - If V(true), LDAP users are imported into Keycloak DB and synced by the configured sync policies. default: true type: bool editMode: description: - - V(READ_ONLY) is a read-only LDAP store. V(WRITABLE) means data will be synced back to LDAP on demand. V(UNSYNCED) - means user data will be imported, but not synced back to LDAP. + - V(READ_ONLY) is a read-only LDAP store. V(WRITABLE) means data is synced back to LDAP on demand. V(UNSYNCED) means + user data is imported, but not synced back to LDAP. type: str choices: - READ_ONLY @@ -181,7 +181,7 @@ options: userObjectClasses: description: - All values of LDAP objectClass attribute for users in LDAP divided by comma. For example V(inetOrgPerson, organizationalPerson). - Newly created Keycloak users will be written to LDAP with all those object classes and existing LDAP user records + Newly created Keycloak users are written to LDAP with all those object classes and existing LDAP user records are found just if they contain all those object classes. type: str @@ -222,7 +222,7 @@ options: bindDn: description: - - DN of LDAP user which will be used by Keycloak to access LDAP server. + - DN of LDAP user which is used by Keycloak to access LDAP server. type: str bindCredential: @@ -232,7 +232,7 @@ options: startTls: description: - - Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling. + - Encrypts the connection to LDAP using STARTTLS, which disables connection pooling. default: false type: bool @@ -258,11 +258,11 @@ options: useTruststoreSpi: description: - - Specifies whether LDAP connection will use the truststore SPI with the truststore configured in standalone.xml/domain.xml. - V(always) means that it will always use it. V(never) means that it will not use it. V(ldapsOnly) means that it - will use if your connection URL use ldaps. + - Specifies whether LDAP connection uses the truststore SPI with the truststore configured in standalone.xml/domain.xml. + V(always) means that it always uses it. V(never) means that it does not use it. V(ldapsOnly) means that it uses + if your connection URL use ldaps. - Note even if standalone.xml/domain.xml is not configured, the default Java cacerts or certificate specified by - C(javax.net.ssl.trustStore) property will be used. + C(javax.net.ssl.trustStore) property is used. default: ldapsOnly type: str choices: @@ -335,8 +335,8 @@ options: allowKerberosAuthentication: description: - - Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will - be provisioned from this LDAP server. + - Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users is + provisioned from this LDAP server. default: false type: bool @@ -348,9 +348,9 @@ options: krbPrincipalAttribute: description: - Name of the LDAP attribute, which refers to Kerberos principal. This is used to lookup appropriate LDAP user after - successful Kerberos/SPNEGO authentication in Keycloak. When this is empty, the LDAP user will be looked based - on LDAP username corresponding to the first part of his Kerberos principal. For instance, for principal C(john@KEYCLOAK.ORG), - it will assume that LDAP username is V(john). + successful Kerberos/SPNEGO authentication in Keycloak. When this is empty, the LDAP user is looked up based on + LDAP username corresponding to the first part of his Kerberos principal. For instance, for principal C(john@KEYCLOAK.ORG), + it assumes that LDAP username is V(john). type: str version_added: 8.1.0 @@ -419,17 +419,17 @@ options: evictionDay: description: - - Day of the week the entry will become invalid on. + - Day of the week the entry is set to become invalid on. type: str evictionHour: description: - - Hour of day the entry will become invalid on. + - Hour of day the entry is set to become invalid on. type: str evictionMinute: description: - - Minute of day the entry will become invalid on. + - Minute of day the entry is set to become invalid on. type: str maxLifespan: @@ -461,12 +461,12 @@ options: name: description: - - Name of the mapper. If no ID is given, the mapper will be searched by name. + - Name of the mapper. If no ID is given, the mapper is searched by name. type: str parentId: description: - - Unique ID for the parent of this mapper. ID of the user federation will automatically be used if left blank. + - Unique ID for the parent of this mapper. ID of the user federation is automatically used if left blank. type: str providerId: diff --git a/plugins/modules/keycloak_user_rolemapping.py b/plugins/modules/keycloak_user_rolemapping.py index 794ea369d7..49d71e2ca9 100644 --- a/plugins/modules/keycloak_user_rolemapping.py +++ b/plugins/modules/keycloak_user_rolemapping.py @@ -21,9 +21,9 @@ description: the scope tailored to your needs and a user having the expected roles. - The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at U(https://www.keycloak.org/docs-api/8.0/rest-api/index.html). - - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and will be returned that - way by this module. You may pass single values for attributes when calling the module, and this will be translated into - a list suitable for the API. + - Attributes are multi-valued in the Keycloak API. All attributes are lists of individual values and are returned that way + by this module. You may pass single values for attributes when calling the module, and this is translated into a list + suitable for the API. - When updating a user_rolemapping, where possible provide the role ID to the module. This removes a lookup to the API to translate the name into the role ID. attributes: @@ -38,8 +38,8 @@ options: state: description: - State of the user_rolemapping. - - On V(present), the user_rolemapping will be created if it does not yet exist, or updated with the parameters you provide. - - On V(absent), the user_rolemapping will be removed if it exists. + - On V(present), the user_rolemapping is created if it does not yet exist, or updated with the parameters you provide. + - On V(absent), the user_rolemapping is removed if it exists. default: 'present' type: str choices: @@ -61,14 +61,14 @@ options: type: str description: - ID of the user to be mapped. - - This parameter is not required for updating or deleting the rolemapping but providing it will reduce the number of - API calls required. + - This parameter is not required for updating or deleting the rolemapping but providing it reduces the number of API + calls required. service_account_user_client_id: type: str description: - Client ID of the service-account-user to be mapped. - - This parameter is not required for updating or deleting the rolemapping but providing it will reduce the number of - API calls required. + - This parameter is not required for updating or deleting the rolemapping but providing it reduces the number of API + calls required. client_id: type: str description: @@ -79,8 +79,8 @@ options: type: str description: - ID of the client to be mapped. - - This parameter is not required for updating or deleting the rolemapping but providing it will reduce the number of - API calls required. + - This parameter is not required for updating or deleting the rolemapping but providing it reduces the number of API + calls required. roles: description: - Roles to be mapped to the user. @@ -96,8 +96,8 @@ options: type: str description: - The unique identifier for this role_representation. - - This parameter is not required for updating or deleting a role_representation but providing it will reduce the - number of API calls required. + - This parameter is not required for updating or deleting a role_representation but providing it reduces the number + of API calls required. extends_documentation_fragment: - community.general.keycloak - community.general.keycloak.actiongroup_keycloak @@ -190,7 +190,7 @@ proposed: description: Representation of proposed client role mapping. returned: always type: dict - sample: {clientId: "test"} + sample: {"clientId": "test"} existing: description: @@ -198,7 +198,13 @@ existing: - The sample is truncated. returned: always type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } end_state: description: @@ -206,7 +212,13 @@ end_state: - The sample is truncated. returned: on success type: dict - sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}} + sample: + { + "adminUrl": "http://www.example.com/admin_url", + "attributes": { + "request.object.signature.alg": "RS256" + } + } """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import KeycloakAPI, \ diff --git a/plugins/modules/keycloak_userprofile.py b/plugins/modules/keycloak_userprofile.py index a79ca93890..9760a17ecf 100644 --- a/plugins/modules/keycloak_userprofile.py +++ b/plugins/modules/keycloak_userprofile.py @@ -33,9 +33,8 @@ options: state: description: - State of the User Profile provider. - - On V(present), the User Profile provider will be created if it does not yet exist, or updated with the parameters - you provide. - - On V(absent), the User Profile provider will be removed if it exists. + - On V(present), the User Profile provider is created if it does not yet exist, or updated with the parameters you provide. + - On V(absent), the User Profile provider is removed if it exists. default: 'present' type: str choices: @@ -171,7 +170,7 @@ options: group: description: - - Specifies the User Profile group where this attribute will be added. + - Specifies the User Profile group where this attribute is added. type: str permissions: @@ -406,7 +405,6 @@ data: description: The data returned by the Keycloak API. returned: when state is present type: dict - sample: {'...': '...'} """ from ansible_collections.community.general.plugins.module_utils.identity.keycloak.keycloak import KeycloakAPI, camel, \ @@ -456,7 +454,6 @@ def main(): ), config=dict( type='dict', - required=False, options={ 'kc_user_profile_config': dict( type='list', @@ -466,7 +463,6 @@ def main(): 'attributes': dict( type='list', elements='dict', - required=False, options={ 'name': dict(type='str', required=True), 'display_name': dict(type='str', aliases=['displayName'], required=True), @@ -476,17 +472,17 @@ def main(): 'length': dict( type='dict', options={ - 'min': dict(type='int', required=False), + 'min': dict(type='int'), 'max': dict(type='int', required=True) } ), - 'email': dict(type='dict', required=False), - 'username_prohibited_characters': dict(type='dict', aliases=['usernameProhibitedCharacters'], required=False), - 'up_username_not_idn_homograph': dict(type='dict', aliases=['upUsernameNotIdnHomograph'], required=False), - 'person_name_prohibited_characters': dict(type='dict', aliases=['personNameProhibitedCharacters'], required=False), - 'uri': dict(type='dict', required=False), - 'pattern': dict(type='dict', required=False), - 'options': dict(type='dict', required=False) + 'email': dict(type='dict'), + 'username_prohibited_characters': dict(type='dict', aliases=['usernameProhibitedCharacters']), + 'up_username_not_idn_homograph': dict(type='dict', aliases=['upUsernameNotIdnHomograph']), + 'person_name_prohibited_characters': dict(type='dict', aliases=['personNameProhibitedCharacters']), + 'uri': dict(type='dict'), + 'pattern': dict(type='dict'), + 'options': dict(type='dict') } ), 'annotations': dict(type='dict'), @@ -513,15 +509,15 @@ def main(): options={ 'name': dict(type='str', required=True), 'display_header': dict(type='str', aliases=['displayHeader'], required=True), - 'display_description': dict(type='str', aliases=['displayDescription'], required=False), - 'annotations': dict(type='dict', required=False) + 'display_description': dict(type='str', aliases=['displayDescription']), + 'annotations': dict(type='dict') } ), 'unmanaged_attribute_policy': dict( type='str', aliases=['unmanagedAttributePolicy'], choices=['ENABLED', 'ADMIN_EDIT', 'ADMIN_VIEW'], - required=False + ) } ) diff --git a/plugins/modules/keyring.py b/plugins/modules/keyring.py index 3a8cbcae02..eef59dd10a 100644 --- a/plugins/modules/keyring.py +++ b/plugins/modules/keyring.py @@ -206,10 +206,10 @@ def run_module(): username=dict(type="str", required=True), keyring_password=dict(type="str", required=True, no_log=True), user_password=dict( - type="str", required=False, no_log=True, aliases=["password"] + type="str", no_log=True, aliases=["password"] ), state=dict( - type="str", required=False, default="present", choices=["absent", "present"] + type="str", default="present", choices=["absent", "present"] ), ) diff --git a/plugins/modules/kibana_plugin.py b/plugins/modules/kibana_plugin.py index 09703b504c..b975e2dcea 100644 --- a/plugins/modules/kibana_plugin.py +++ b/plugins/modules/kibana_plugin.py @@ -59,11 +59,11 @@ options: version: description: - Version of the plugin to be installed. - - If plugin exists with previous version, plugin will B(not) be updated unless O(force) is set to V(true). + - If the plugin is installed with in a previous version, it is B(not) updated unless O(force=true). type: str force: description: - - Delete and re-install the plugin. Can be useful for plugins update. + - Delete and re-install the plugin. It can be useful for plugins update. type: bool default: false allow_root: @@ -109,14 +109,6 @@ timeout: description: The timeout for plugin download. returned: success type: str -stdout: - description: The command stdout. - returned: success - type: str -stderr: - description: The command stderr. - returned: success - type: str state: description: The state for the managed plugin. returned: success @@ -236,11 +228,11 @@ def main(): argument_spec=dict( name=dict(required=True), state=dict(default="present", choices=list(PACKAGE_STATE_MAP.keys())), - url=dict(default=None), + url=dict(), timeout=dict(default="1m"), plugin_bin=dict(default="/opt/kibana/bin/kibana", type="path"), plugin_dir=dict(default="/opt/kibana/installedPlugins/", type="path"), - version=dict(default=None), + version=dict(), force=dict(default=False, type="bool"), allow_root=dict(default=False, type="bool"), ), diff --git a/plugins/modules/krb_ticket.py b/plugins/modules/krb_ticket.py index e021050c22..3a01944535 100644 --- a/plugins/modules/krb_ticket.py +++ b/plugins/modules/krb_ticket.py @@ -30,7 +30,7 @@ options: principal: description: - The principal name. - - If not set, the user running this module will be used. + - If not set, the user running this module is used. type: str state: description: @@ -50,17 +50,17 @@ options: - Use O(cache_name) as the ticket cache name and location. - If this option is not used, the default cache name and location are used. - The default credentials cache may vary between systems. - - If not set the the value of E(KRB5CCNAME) environment variable will be used instead, its value is used to name the - default ticket cache. + - If not set the the value of E(KRB5CCNAME) environment variable is used instead, its value is used to name the default + ticket cache. type: str lifetime: description: - Requests a ticket with the lifetime, if the O(lifetime) is not specified, the default ticket lifetime is used. - - Specifying a ticket lifetime longer than the maximum ticket lifetime (configured by each site) will not override the + - Specifying a ticket lifetime longer than the maximum ticket lifetime (configured by each site) does not override the configured maximum ticket lifetime. - 'The value for O(lifetime) must be followed by one of the following suffixes: V(s) - seconds, V(m) - minutes, V(h) - hours, V(d) - days.' - - You cannot mix units; a value of V(3h30m) will result in an error. + - You cannot mix units; a value of V(3h30m) results in an error. - See U(https://web.mit.edu/kerberos/krb5-1.12/doc/basic/date_format.html) for reference. type: str start_time: @@ -78,7 +78,7 @@ options: - Requests renewable tickets, with a total lifetime equal to O(renewable). - 'The value for O(renewable) must be followed by one of the following delimiters: V(s) - seconds, V(m) - minutes, V(h) - hours, V(d) - days.' - - You cannot mix units; a value of V(3h30m) will result in an error. + - You cannot mix units; a value of V(3h30m) results in an error. - See U(https://web.mit.edu/kerberos/krb5-1.12/doc/basic/date_format.html) for reference. type: str forwardable: @@ -119,7 +119,7 @@ options: keytab: description: - Requests a ticket, obtained from a key in the local host's keytab. - - If O(keytab_path) is not specified will try to use default client keytab path (C(-i) option). + - If O(keytab_path) is not specified it tries to use default client keytab path (C(-i) option). type: bool keytab_path: description: diff --git a/plugins/modules/launchd.py b/plugins/modules/launchd.py index 0f770f47a5..310e1af9b1 100644 --- a/plugins/modules/launchd.py +++ b/plugins/modules/launchd.py @@ -37,9 +37,9 @@ options: version_added: 10.1.0 state: description: - - V(started)/V(stopped) are idempotent actions that will not run commands unless necessary. - - Launchd does not support V(restarted) nor V(reloaded) natively. These will trigger a stop/start (restarted) or an - unload/load (reloaded). + - V(started)/V(stopped) are idempotent actions that do not run commands unless necessary. + - C(launchd) does not support V(restarted) nor V(reloaded) natively. These states trigger a stop/start (restarted) or + an unload/load (reloaded). - V(restarted) unloads and loads the service before start to ensure that the latest job definition (plist) is used. - V(reloaded) unloads and loads the service to ensure that the latest job definition (plist) is used. Whether a service is started or stopped depends on the content of the definition file. @@ -53,8 +53,8 @@ options: force_stop: description: - Whether the service should not be restarted automatically by launchd. - - Services might have the 'KeepAlive' attribute set to true in a launchd configuration. In case this is set to true, - stopping a service will cause that launchd starts the service again. + - Services might have the C(KeepAlive) attribute set to V(true) in a launchd configuration. In case this is set to V(true), + stopping a service causes that C(launchd) starts the service again. - Set this option to V(true) to let this module change the C(KeepAlive) attribute to V(false). type: bool default: false diff --git a/plugins/modules/layman.py b/plugins/modules/layman.py index b0fab39233..b19428d9f9 100644 --- a/plugins/modules/layman.py +++ b/plugins/modules/layman.py @@ -35,7 +35,7 @@ options: type: str list_url: description: - - An URL of the alternative overlays list that defines the overlay to install. This list will be fetched and saved under + - An URL of the alternative overlays list that defines the overlay to install. This list is fetched and saved under C(${overlay_defs}/${name}.xml), where C(overlay_defs) is read from the Layman's configuration. aliases: [url] type: str @@ -47,7 +47,7 @@ options: type: str validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be set to V(false) when no other option exists. + - If V(false), SSL certificates are not validated. This should only be set to V(false) when no other option exists. type: bool default: true """ @@ -236,7 +236,7 @@ def main(): name=dict(required=True), list_url=dict(aliases=['url']), state=dict(default="present", choices=['present', 'absent', 'updated']), - validate_certs=dict(required=False, default=True, type='bool'), + validate_certs=dict(default=True, type='bool'), ), supports_check_mode=True ) diff --git a/plugins/modules/ldap_attrs.py b/plugins/modules/ldap_attrs.py index c7ccd42154..592da93a63 100644 --- a/plugins/modules/ldap_attrs.py +++ b/plugins/modules/ldap_attrs.py @@ -43,10 +43,9 @@ options: choices: [present, absent, exact] default: present description: - - The state of the attribute values. If V(present), all given attribute values will be added if they are missing. If - V(absent), all given attribute values will be removed if present. If V(exact), the set of attribute values will be - forced to exactly those provided and no others. If O(state=exact) and the attribute value is empty, all values for - this attribute will be removed. + - The state of the attribute values. If V(present), all given attribute values are added if they are missing. If V(absent), + all given attribute values are removed if present. If V(exact), the set of attribute values is forced to exactly those + provided and no others. If O(state=exact) and the attribute value is empty, all values for this attribute are removed. attributes: required: true type: dict @@ -297,7 +296,7 @@ def main(): module = AnsibleModule( argument_spec=gen_specs( attributes=dict(type='dict', required=True), - ordered=dict(type='bool', default=False, required=False), + ordered=dict(type='bool', default=False), state=dict(type='str', default='present', choices=['absent', 'exact', 'present']), ), supports_check_mode=True, diff --git a/plugins/modules/ldap_inc.py b/plugins/modules/ldap_inc.py index ea6788de66..224027f666 100644 --- a/plugins/modules/ldap_inc.py +++ b/plugins/modules/ldap_inc.py @@ -26,8 +26,8 @@ notes: and the control PostRead. This extension and the control are implemented in OpenLdap but not all directory servers implement them. In this case, the module automatically uses a more classic method based on two phases, first the current value is read then the modify operation remove the old value and add the new one in a single request. If the value has changed - by a concurrent call then the remove action will fail. Then the sequence is retried 3 times before raising an error to - the playbook. In an heavy modification environment, the module does not guarante to be systematically successful. + by a concurrent call then the remove action fails. Then the sequence is retried 3 times before raising an error to the + playbook. In an heavy modification environment, the module does not guarante to be systematically successful. - This only deals with integer attribute of an existing entry. To modify attributes of an entry, see M(community.general.ldap_attrs) or to add or remove whole entries, see M(community.general.ldap_entry). author: @@ -153,7 +153,7 @@ def main(): module = AnsibleModule( argument_spec=gen_specs( attribute=dict(type='str', required=True), - increment=dict(type='int', default=1, required=False), + increment=dict(type='int', default=1), method=dict(type='str', default='auto', choices=['auto', 'rfc4525', 'legacy']), ), supports_check_mode=True, diff --git a/plugins/modules/ldap_search.py b/plugins/modules/ldap_search.py index 155e9859d5..47c4d8d64d 100644 --- a/plugins/modules/ldap_search.py +++ b/plugins/modules/ldap_search.py @@ -64,10 +64,10 @@ options: version_added: 7.1.0 base64_attributes: description: - - If provided, all attribute values returned that are listed in this option will be Base64 encoded. - - If the special value V(*) appears in this list, all attributes will be Base64 encoded. - - All other attribute values will be converted to UTF-8 strings. If they contain binary data, please note that invalid - UTF-8 bytes will be omitted. + - If provided, all attribute values returned that are listed in this option are Base64 encoded. + - If the special value V(*) appears in this list, all attributes are Base64 encoded. + - All other attribute values are converted to UTF-8 strings. If they contain binary data, please note that invalid UTF-8 + bytes are omitted. type: list elements: str version_added: 7.0.0 @@ -91,15 +91,16 @@ EXAMPLES = r""" register: ldap_group_gids """ +# @FIXME RV 'results' is meant to be used when 'loop:' was used with the module. RESULTS = r""" results: description: - - For every entry found, one dictionary will be returned. + - For every entry found, one dictionary is returned. - Every dictionary contains a key C(dn) with the entry's DN as a value. - Every attribute of the entry found is added to the dictionary. If the key has precisely one value, that value is taken directly, otherwise the key's value is a list. - - Note that all values (for single-element lists) and list elements (for multi-valued lists) will be UTF-8 strings. Some - might contain Base64-encoded binary data; which ones is determined by the O(base64_attributes) option. + - Note that all values (for single-element lists) and list elements (for multi-valued lists) are UTF-8 strings. Some might + contain Base64-encoded binary data; which ones is determined by the O(base64_attributes) option. type: list elements: dict """ diff --git a/plugins/modules/librato_annotation.py b/plugins/modules/librato_annotation.py index 35fc810c65..1087cb426c 100644 --- a/plugins/modules/librato_annotation.py +++ b/plugins/modules/librato_annotation.py @@ -13,8 +13,8 @@ DOCUMENTATION = r""" module: librato_annotation short_description: Create an annotation in Librato description: - - Create an annotation event on the given annotation stream :name. If the annotation stream does not exist, it will be created - automatically. + - Create an annotation event on the given annotation stream O(name). If the annotation stream does not exist, it creates + one automatically. author: "Seth Edwards (@Sedward)" requirements: [] extends_documentation_fragment: @@ -39,7 +39,7 @@ options: type: str description: - The annotation stream name. - - If the annotation stream does not exist, it will be created automatically. + - If the annotation stream does not exist, it creates one automatically. required: false title: type: str @@ -160,12 +160,12 @@ def main(): argument_spec=dict( user=dict(required=True), api_key=dict(required=True, no_log=True), - name=dict(required=False), + name=dict(), title=dict(required=True), - source=dict(required=False), - description=dict(required=False), - start_time=dict(required=False, default=None, type='int'), - end_time=dict(required=False, default=None, type='int'), + source=dict(), + description=dict(), + start_time=dict(type='int'), + end_time=dict(type='int'), links=dict(type='list', elements='dict') ) ) diff --git a/plugins/modules/linode.py b/plugins/modules/linode.py index fcfcce4d0a..d2c5714d47 100644 --- a/plugins/modules/linode.py +++ b/plugins/modules/linode.py @@ -47,8 +47,8 @@ options: linode_id: description: - Unique ID of a Linode server. This value is read-only in the sense that if you specify it on creation of a Linode - it will not be used. The Linode API generates these IDs and we can those generated value here to reference a Linode - more specifically. This is useful for idempotence. + it is not used. The Linode API generates these IDs and we can those generated value here to reference a Linode more + specifically. This is useful for idempotency. aliases: [lid] type: int additional_disks: @@ -103,7 +103,7 @@ options: type: int backupwindow: description: - - The time window in which backups will be taken. + - The time window in which backups are taken. type: int plan: description: diff --git a/plugins/modules/linode_v4.py b/plugins/modules/linode_v4.py index b650f7f104..0095cb9002 100644 --- a/plugins/modules/linode_v4.py +++ b/plugins/modules/linode_v4.py @@ -17,7 +17,7 @@ requirements: author: - Luke Murphy (@decentral1se) notes: - - No Linode resizing is currently implemented. This module will, in time, replace the current Linode module which uses deprecated + - No Linode resizing is currently implemented. This module aims to replace the current Linode module which uses deprecated API bindings on the Linode side. extends_documentation_fragment: - community.general.attributes @@ -43,7 +43,7 @@ options: type: str label: description: - - The instance label. This label is used as the main determiner for idempotence for the module and is therefore mandatory. + - The instance label. This label is used as the main determiner for idempotency for the module and is therefore mandatory. type: str required: true group: @@ -53,7 +53,7 @@ options: type: str private_ip: description: - - If V(true), the created Linode will have private networking enabled and assigned a private IPv4 address. + - If V(true), the created Linode instance has private networking enabled and assigned a private IPv4 address. type: bool default: false version_added: 3.0.0 @@ -65,8 +65,8 @@ options: elements: str root_pass: description: - - The password for the root user. If not specified, one will be generated. This generated password will be available - in the task success JSON. + - The password for the root user. If not specified, it generates a new one. This generated password is available in + the task success JSON. type: str authorized_keys: description: @@ -128,45 +128,46 @@ instance: description: The instance description in JSON serialized form. returned: Always. type: dict - sample: { - "root_pass": "foobar", # if auto-generated - "alerts": { - "cpu": 90, - "io": 10000, - "network_in": 10, - "network_out": 10, - "transfer_quota": 80 - }, - "backups": { - "enabled": false, - "schedule": { - "day": null, - "window": null - } - }, - "created": "2018-09-26T08:12:33", - "group": "Foobar Group", - "hypervisor": "kvm", - "id": 10480444, - "image": "linode/centos7", - "ipv4": [ - "130.132.285.233" - ], - "ipv6": "2a82:7e00::h03c:46ff:fe04:5cd2/64", - "label": "lin-foo", - "region": "eu-west", - "specs": { - "disk": 25600, - "memory": 1024, - "transfer": 1000, - "vcpus": 1 - }, - "status": "running", - "tags": [], - "type": "g6-nanode-1", - "updated": "2018-09-26T10:10:14", - "watchdog_enabled": true - } + sample: + { + "root_pass": "foobar", # if auto-generated + "alerts": { + "cpu": 90, + "io": 10000, + "network_in": 10, + "network_out": 10, + "transfer_quota": 80 + }, + "backups": { + "enabled": false, + "schedule": { + "day": null, + "window": null + } + }, + "created": "2018-09-26T08:12:33", + "group": "Foobar Group", + "hypervisor": "kvm", + "id": 10480444, + "image": "linode/centos7", + "ipv4": [ + "130.132.285.233" + ], + "ipv6": "2a82:7e00::h03c:46ff:fe04:5cd2/64", + "label": "lin-foo", + "region": "eu-west", + "specs": { + "disk": 25600, + "memory": 1024, + "transfer": 1000, + "vcpus": 1 + }, + "status": "running", + "tags": [], + "type": "g6-nanode-1", + "updated": "2018-09-26T10:10:14", + "watchdog_enabled": true + } """ import traceback diff --git a/plugins/modules/listen_ports_facts.py b/plugins/modules/listen_ports_facts.py index 9f9eb66481..a33c78be3c 100644 --- a/plugins/modules/listen_ports_facts.py +++ b/plugins/modules/listen_ports_facts.py @@ -20,7 +20,7 @@ requirements: short_description: Gather facts on processes listening on TCP and UDP ports notes: - C(ss) returns all processes for each listen address and port. - - This plugin will return each of them, so multiple entries for the same listen address and port are likely in results. + - This plugin returns each of them, so multiple entries for the same listen address and port are likely in results. extends_documentation_fragment: - community.general.attributes - community.general.attributes.facts @@ -29,7 +29,7 @@ options: command: description: - Override which command to use for fetching listen ports. - - By default module will use first found supported command on the system (in alphanumerical order). + - By default module uses first found supported command on the system (in alphanumerical order). type: str choices: - netstat @@ -397,7 +397,7 @@ def main(): break if bin_path is None: - raise EnvironmentError(msg='Unable to find any of the supported commands in PATH: {0}'.format(", ".join(sorted(commands_map)))) + raise EnvironmentError('Unable to find any of the supported commands in PATH: {0}'.format(", ".join(sorted(commands_map)))) # which ports are listening for connections? args = commands_map[command]['args'] diff --git a/plugins/modules/lldp.py b/plugins/modules/lldp.py index 7f4a820257..018d9fc307 100644 --- a/plugins/modules/lldp.py +++ b/plugins/modules/lldp.py @@ -98,7 +98,7 @@ def gather_lldp(module): def main(): module_args = dict( - multivalues=dict(type='bool', required=False, default=False) + multivalues=dict(type='bool', default=False) ) module = AnsibleModule(module_args) diff --git a/plugins/modules/locale_gen.py b/plugins/modules/locale_gen.py index 23e9d33485..2e1932c204 100644 --- a/plugins/modules/locale_gen.py +++ b/plugins/modules/locale_gen.py @@ -37,10 +37,10 @@ options: choices: [absent, present] default: present notes: - - If C(/etc/locale.gen) exists, the module will assume to be using the B(glibc) mechanism, else if C(/var/lib/locales/supported.d/) - exists it will assume to be using the B(ubuntu_legacy) mechanism, else it will raise an error. - - When using glibc mechanism, it will manage locales by editing C(/etc/locale.gen) and running C(locale-gen). - - When using ubuntu_legacy mechanism, it will manage locales by editing C(/var/lib/locales/supported.d/local) and then running + - If C(/etc/locale.gen) exists, the module assumes to be using the B(glibc) mechanism, else if C(/var/lib/locales/supported.d/) + exists it assumes to be using the B(ubuntu_legacy) mechanism, else it raises an error. + - When using glibc mechanism, it manages locales by editing C(/etc/locale.gen) and running C(locale-gen). + - When using ubuntu_legacy mechanism, it manages locales by editing C(/var/lib/locales/supported.d/local) and then running C(locale-gen). - Please note that the code path that uses ubuntu_legacy mechanism has not been tested for a while, because Ubuntu is already using the glibc mechanism. There is no support for that, given our inability to test it. Therefore, that mechanism is diff --git a/plugins/modules/logentries.py b/plugins/modules/logentries.py index 420f054fac..69e83f5e49 100644 --- a/plugins/modules/logentries.py +++ b/plugins/modules/logentries.py @@ -139,8 +139,8 @@ def main(): argument_spec=dict( path=dict(required=True), state=dict(default="present", choices=["present", "followed", "absent", "unfollowed"]), - name=dict(required=False, default=None, type='str'), - logtype=dict(required=False, default=None, type='str', aliases=['type']) + name=dict(type='str'), + logtype=dict(type='str', aliases=['type']) ), supports_check_mode=True ) diff --git a/plugins/modules/logstash_plugin.py b/plugins/modules/logstash_plugin.py index ba7bdc2cc5..afacf7767f 100644 --- a/plugins/modules/logstash_plugin.py +++ b/plugins/modules/logstash_plugin.py @@ -49,7 +49,7 @@ options: version: type: str description: - - Specify plugin Version of the plugin to install. If plugin exists with previous version, it will NOT be updated. + - Specify version of the plugin to install. If the plugin exists with a previous version, it is B(not) updated. """ EXAMPLES = r""" diff --git a/plugins/modules/lvg.py b/plugins/modules/lvg.py index 1051664dd3..42d4c9182e 100644 --- a/plugins/modules/lvg.py +++ b/plugins/modules/lvg.py @@ -33,7 +33,7 @@ options: description: - List of comma-separated devices to use as physical devices in this volume group. - Required when creating or resizing volume group. - - The module will take care of running pvcreate if needed. + - The module runs C(pvcreate) if needed. - O(remove_extra_pvs) controls whether or not unspecified physical devices are removed from the volume group. type: list elements: str diff --git a/plugins/modules/lxc_container.py b/plugins/modules/lxc_container.py index 8d5face301..cbd643efdb 100644 --- a/plugins/modules/lxc_container.py +++ b/plugins/modules/lxc_container.py @@ -129,13 +129,13 @@ options: archive: description: - Create an archive of a container. - - This will create a tarball of the running container. + - This creates a tarball of the running container. type: bool default: false archive_path: description: - Path the save the archived container. - - If the path does not exist the archive method will attempt to create it. + - If the path does not exist the archive method attempts to create it. type: path archive_compression: choices: @@ -157,8 +157,8 @@ options: description: - Define the state of a container. - If you clone a container using O(clone_name) the newly cloned container created in a stopped state. - - The running container will be stopped while the clone operation is happening and upon completion of the clone the - original container state will be restored. + - The running container is stopped while the clone operation is happening and upon completion of the clone the original + container state is restored. type: str default: started container_config: @@ -172,15 +172,15 @@ requirements: - 'python3-lxc # OS Package' notes: - Containers must have a unique name. If you attempt to create a container with a name that already exists in the users - namespace the module will simply return as "unchanged". - - The O(container_command) can be used with any state except V(absent). If used with state V(stopped) the container will - be V(started), the command executed, and then the container V(stopped) again. Likewise if O(state=stopped) and the container - does not exist it will be first created, V(started), the command executed, and then V(stopped). If you use a C(|) in the - variable you can use common script formatting within the variable itself. The O(container_command) option will always - execute as C(bash). When using O(container_command), a log file is created in the C(/tmp/) directory which contains both - C(stdout) and C(stderr) of any command executed. - - If O(archive=true) the system will attempt to create a compressed tarball of the running container. The O(archive) option - supports LVM backed containers and will create a snapshot of the running container when creating the archive. + namespace the module simply returns as "unchanged". + - The O(container_command) can be used with any state except V(absent). If used with state V(stopped) the container is V(started), + the command executed, and then the container V(stopped) again. Likewise if O(state=stopped) and the container does not + exist it is first created, V(started), the command executed, and then V(stopped). If you use a C(|) in the variable you + can use common script formatting within the variable itself. The O(container_command) option always execute as C(bash). + When using O(container_command), a log file is created in the C(/tmp/) directory which contains both C(stdout) and C(stderr) + of any command executed. + - If O(archive=true) the system attempts to create a compressed tarball of the running container. The O(archive) option + supports LVM backed containers and creates a snapshot of the running container when creating the archive. - If your distro does not have a package for C(python3-lxc), which is a requirement for this module, it can be installed from source at U(https://github.com/lxc/python3-lxc) or installed using C(pip install lxc). """ diff --git a/plugins/modules/lxca_cmms.py b/plugins/modules/lxca_cmms.py index 8ece67470b..87b0e2e125 100644 --- a/plugins/modules/lxca_cmms.py +++ b/plugins/modules/lxca_cmms.py @@ -144,8 +144,8 @@ FUNC_DICT = { INPUT_ARG_SPEC = dict( command_options=dict(default='cmms', choices=['cmms', 'cmms_by_uuid', 'cmms_by_chassis_uuid']), - uuid=dict(default=None), - chassis=dict(default=None) + uuid=dict(), + chassis=dict() ) diff --git a/plugins/modules/lxca_nodes.py b/plugins/modules/lxca_nodes.py index f133671114..91d3337b27 100644 --- a/plugins/modules/lxca_nodes.py +++ b/plugins/modules/lxca_nodes.py @@ -175,7 +175,7 @@ INPUT_ARG_SPEC = dict( 'nodes_by_chassis_uuid', 'nodes_status_managed', 'nodes_status_unmanaged']), - uuid=dict(default=None), chassis=dict(default=None) + uuid=dict(), chassis=dict() ) diff --git a/plugins/modules/lxd_container.py b/plugins/modules/lxd_container.py index f347df7492..4abec5acaa 100644 --- a/plugins/modules/lxd_container.py +++ b/plugins/modules/lxd_container.py @@ -101,9 +101,9 @@ options: type: str target: description: - - For cluster deployments. Will attempt to create an instance on a target node. If the instance exists elsewhere in - a cluster, then it will not be replaced or moved. The name should respond to same name of the node you see in C(lxc - cluster list). + - For cluster deployments. It attempts to create an instance on a target node. If the instance exists elsewhere in a + cluster, then it is not replaced nor moved. The name should respond to same name of the node you see in C(lxc cluster + list). type: str required: false version_added: 1.0.0 @@ -134,7 +134,7 @@ options: type: bool wait_for_container: description: - - If set to V(true), the tasks will wait till the task reports a success status when performing container operations. + - If set to V(true), the tasks wait until the task reports a success status when performing container operations. default: false type: bool version_added: 4.4.0 @@ -180,7 +180,7 @@ options: type: str notes: - Instances can be a container or a virtual machine, both of them must have unique name. If you attempt to create an instance - with a name that already existed in the users namespace the module will simply return as "unchanged". + with a name that already existed in the users namespace, the module simply returns as "unchanged". - There are two ways to run commands inside a container or virtual machine, using the command module or using the ansible lxd connection plugin bundled in Ansible >= 2.1, the later requires python to be installed in the instance which can be done with the command module. @@ -262,7 +262,7 @@ EXAMPLES = r""" source: type: image mode: pull - # Provides Ubuntu minimal images + # Provides Ubuntu minimal images server: https://cloud-images.ubuntu.com/minimal/releases/ protocol: simplestreams alias: "22.04" @@ -393,7 +393,12 @@ addresses: description: Mapping from the network device name to a list of IPv4 addresses in the instance. returned: when state is started or restarted type: dict - sample: {"eth0": ["10.155.92.191"]} + sample: + { + "eth0": [ + "10.155.92.191" + ] + } old_state: description: The old state of the instance. returned: when state is started or restarted diff --git a/plugins/modules/lxd_profile.py b/plugins/modules/lxd_profile.py index efdf50ea90..2525889968 100644 --- a/plugins/modules/lxd_profile.py +++ b/plugins/modules/lxd_profile.py @@ -57,7 +57,7 @@ options: new_name: description: - A new name of a profile. - - If this parameter is specified a profile will be renamed to this name. + - If this parameter is specified a profile is renamed to this name. - See U(https://documentation.ubuntu.com/lxd/en/latest/api/#/profiles/profile_post). required: false type: str @@ -113,7 +113,7 @@ options: type: str notes: - Profiles must have a unique name. If you attempt to create a profile with a name that already existed in the users namespace - the module will simply return as "unchanged". + the module simply returns as "unchanged". """ EXAMPLES = r""" diff --git a/plugins/modules/lxd_project.py b/plugins/modules/lxd_project.py index 98068175aa..20804f8b38 100644 --- a/plugins/modules/lxd_project.py +++ b/plugins/modules/lxd_project.py @@ -42,14 +42,14 @@ options: new_name: description: - A new name of a project. - - If this parameter is specified a project will be renamed to this name. + - If this parameter is specified a project is renamed to this name. - See U(https://documentation.ubuntu.com/lxd/en/latest/api/#/projects/project_post). required: false type: str merge_project: description: - Merge the configuration of the present project with the new desired configuration, instead of replacing it. If configuration - is the same after merged, no change will be made. + is the same after merged, no change is made. required: false default: false type: bool @@ -98,7 +98,7 @@ options: type: str notes: - Projects must have a unique name. If you attempt to create a project with a name that already existed in the users namespace - the module will simply return as "unchanged". + the module simply returns as "unchanged". """ EXAMPLES = r""" diff --git a/plugins/modules/macports.py b/plugins/modules/macports.py index 3f02eeb411..c328e45904 100644 --- a/plugins/modules/macports.py +++ b/plugins/modules/macports.py @@ -280,7 +280,7 @@ def main(): selfupdate=dict(aliases=["update_cache", "update_ports"], default=False, type='bool'), state=dict(default="present", choices=["present", "installed", "absent", "removed", "active", "inactive"]), upgrade=dict(default=False, type='bool'), - variant=dict(aliases=["variants"], default=None, type='str') + variant=dict(aliases=["variants"], type='str') ) ) diff --git a/plugins/modules/mail.py b/plugins/modules/mail.py index 03192e5bf8..7c8bdb69b3 100644 --- a/plugins/modules/mail.py +++ b/plugins/modules/mail.py @@ -90,7 +90,7 @@ options: attach: description: - A list of pathnames of files to attach to the message. - - Attached files will have their content-type set to C(application/octet-stream). + - Attached files have their content-type set to C(application/octet-stream). type: list elements: path default: [] @@ -115,12 +115,12 @@ options: default: plain secure: description: - - If V(always), the connection will only send email if the connection is Encrypted. If the server does not accept the - encrypted connection it will fail. - - If V(try), the connection will attempt to setup a secure SSL/TLS session, before trying to send. - - If V(never), the connection will not attempt to setup a secure SSL/TLS session, before sending. - - If V(starttls), the connection will try to upgrade to a secure SSL/TLS connection, before sending. If it is unable - to do so it will fail. + - If V(always), the connection only sends email if the connection is Encrypted. If the server does not accept the encrypted + connection it fails. + - If V(try), the connection attempts to setup a secure SSL/TLS session, before trying to send. + - If V(never), the connection does not attempt to setup a secure SSL/TLS session, before sending. + - If V(starttls), the connection tries to upgrade to a secure SSL/TLS connection, before sending. If it is unable to + do so it fails. type: str choices: [always, never, starttls, try] default: try @@ -137,7 +137,7 @@ options: message_id_domain: description: - The domain name to use for the L(Message-ID header, https://en.wikipedia.org/wiki/Message-ID). - - Note that this is only available on Python 3+. On Python 2, this value will be ignored. + - Note that this is only available on Python 3+. On Python 2, this value is ignored. type: str default: ansible version_added: 8.2.0 @@ -242,7 +242,7 @@ def main(): password=dict(type='str', no_log=True), host=dict(type='str', default='localhost'), port=dict(type='int', default=25), - ehlohost=dict(type='str', default=None), + ehlohost=dict(type='str'), sender=dict(type='str', default='root', aliases=['from']), to=dict(type='list', elements='str', default=['root'], aliases=['recipients']), cc=dict(type='list', elements='str', default=[]), diff --git a/plugins/modules/make.py b/plugins/modules/make.py index a574560f7f..57ee525db5 100644 --- a/plugins/modules/make.py +++ b/plugins/modules/make.py @@ -48,7 +48,7 @@ options: params: description: - Any extra parameters to pass to make. - - If the value is empty, only the key will be used. For example, V(FOO:) will produce V(FOO), not V(FOO=). + - If the value is empty, only the key is used. For example, V(FOO:) produces V(FOO), not V(FOO=). type: dict target: description: diff --git a/plugins/modules/manageiq_alerts.py b/plugins/modules/manageiq_alerts.py index 87fafcf10b..d1b3fdba69 100644 --- a/plugins/modules/manageiq_alerts.py +++ b/plugins/modules/manageiq_alerts.py @@ -300,7 +300,7 @@ def main(): expression=dict(type='dict'), options=dict(type='dict'), enabled=dict(type='bool'), - state=dict(required=False, default='present', + state=dict(default='present', choices=['present', 'absent']), ) # add the manageiq connection arguments to the arguments diff --git a/plugins/modules/manageiq_group.py b/plugins/modules/manageiq_group.py index 9781ebfc98..68170ea733 100644 --- a/plugins/modules/manageiq_group.py +++ b/plugins/modules/manageiq_group.py @@ -75,8 +75,8 @@ options: managed_filters_merge_mode: type: str description: - - In merge mode existing categories are kept or updated, new categories are added. - - In replace mode all categories will be replaced with the supplied O(managed_filters). + - In V(merge) mode existing categories are kept or updated, new categories are added. + - In V(replace) mode all categories are replaced with the supplied O(managed_filters). choices: [merge, replace] default: replace belongsto_filters: @@ -570,14 +570,14 @@ def main(): argument_spec = dict( description=dict(required=True, type='str'), state=dict(choices=['absent', 'present'], default='present'), - role_id=dict(required=False, type='int'), - role=dict(required=False, type='str'), - tenant_id=dict(required=False, type='int'), - tenant=dict(required=False, type='str'), - managed_filters=dict(required=False, type='dict'), - managed_filters_merge_mode=dict(required=False, choices=['merge', 'replace'], default='replace'), - belongsto_filters=dict(required=False, type='list', elements='str'), - belongsto_filters_merge_mode=dict(required=False, choices=['merge', 'replace'], default='replace'), + role_id=dict(type='int'), + role=dict(type='str'), + tenant_id=dict(type='int'), + tenant=dict(type='str'), + managed_filters=dict(type='dict'), + managed_filters_merge_mode=dict(choices=['merge', 'replace'], default='replace'), + belongsto_filters=dict(type='list', elements='str'), + belongsto_filters_merge_mode=dict(choices=['merge', 'replace'], default='replace'), ) # add the manageiq connection arguments to the arguments argument_spec.update(manageiq_argument_spec()) diff --git a/plugins/modules/manageiq_policies.py b/plugins/modules/manageiq_policies.py index 4256f89d07..247e2dc94c 100644 --- a/plugins/modules/manageiq_policies.py +++ b/plugins/modules/manageiq_policies.py @@ -147,7 +147,7 @@ def main(): resource_name=dict(type='str'), resource_type=dict(required=True, type='str', choices=list(manageiq_entities().keys())), - state=dict(required=False, type='str', + state=dict(type='str', choices=['present', 'absent'], default='present'), ) # add the manageiq connection arguments to the arguments diff --git a/plugins/modules/manageiq_policies_info.py b/plugins/modules/manageiq_policies_info.py index c7c20418b2..2db694f11c 100644 --- a/plugins/modules/manageiq_policies_info.py +++ b/plugins/modules/manageiq_policies_info.py @@ -96,8 +96,8 @@ from ansible_collections.community.general.plugins.module_utils.manageiq import def main(): argument_spec = dict( - resource_id=dict(required=False, type='int'), - resource_name=dict(required=False, type='str'), + resource_id=dict(type='int'), + resource_name=dict(type='str'), resource_type=dict(required=True, type='str', choices=list(manageiq_entities().keys())), ) diff --git a/plugins/modules/manageiq_provider.py b/plugins/modules/manageiq_provider.py index 7f7049fa65..334555c29a 100644 --- a/plugins/modules/manageiq_provider.py +++ b/plugins/modules/manageiq_provider.py @@ -31,7 +31,7 @@ options: description: - V(absent) - provider should not exist, - V(present) - provider should be present, - - V(refresh) - provider will be refreshed. + - V(refresh) - provider is refreshed. choices: ['absent', 'present', 'refresh'] default: 'present' name: @@ -44,7 +44,7 @@ options: choices: ['Openshift', 'Amazon', 'oVirt', 'VMware', 'Azure', 'Director', 'OpenStack', 'GCE'] zone: type: str - description: The ManageIQ zone name that will manage the provider. + description: The ManageIQ zone name that manages the provider. default: 'default' provider_region: type: str diff --git a/plugins/modules/manageiq_tags.py b/plugins/modules/manageiq_tags.py index 6833b70355..efd135393d 100644 --- a/plugins/modules/manageiq_tags.py +++ b/plugins/modules/manageiq_tags.py @@ -63,11 +63,11 @@ options: resource_name: type: str description: - - The name of the resource at which tags will be controlled. + - The name of the resource at which tags are be controlled. - Must be specified if O(resource_id) is not set. Both options are mutually exclusive. resource_id: description: - - The ID of the resource at which tags will be controlled. + - The ID of the resource at which tags are controlled. - Must be specified if O(resource_name) is not set. Both options are mutually exclusive. type: int version_added: 2.2.0 @@ -138,7 +138,7 @@ def main(): resource_name=dict(type='str'), resource_type=dict(required=True, type='str', choices=list(manageiq_entities().keys())), - state=dict(required=False, type='str', + state=dict(type='str', choices=['present', 'absent'], default='present'), ) # add the manageiq connection arguments to the arguments diff --git a/plugins/modules/manageiq_tags_info.py b/plugins/modules/manageiq_tags_info.py index c5b6fcd451..2a742f69c5 100644 --- a/plugins/modules/manageiq_tags_info.py +++ b/plugins/modules/manageiq_tags_info.py @@ -45,11 +45,11 @@ options: resource_name: type: str description: - - The name of the resource at which tags will be controlled. + - The name of the resource at which tags are controlled. - Must be specified if O(resource_id) is not set. Both options are mutually exclusive. resource_id: description: - - The ID of the resource at which tags will be controlled. + - The ID of the resource at which tags are controlled. - Must be specified if O(resource_name) is not set. Both options are mutually exclusive. type: int """ diff --git a/plugins/modules/manageiq_tenant.py b/plugins/modules/manageiq_tenant.py index deb2fc452d..fda97509ce 100644 --- a/plugins/modules/manageiq_tenant.py +++ b/plugins/modules/manageiq_tenant.py @@ -482,8 +482,8 @@ def main(): argument_spec = dict( name=dict(required=True, type='str'), description=dict(required=True, type='str'), - parent_id=dict(required=False, type='int'), - parent=dict(required=False, type='str'), + parent_id=dict(type='int'), + parent=dict(type='str'), state=dict(choices=['absent', 'present'], default='present'), quotas=dict(type='dict', default={}) ) diff --git a/plugins/modules/manageiq_user.py b/plugins/modules/manageiq_user.py index a4d5c21dfc..475086c823 100644 --- a/plugins/modules/manageiq_user.py +++ b/plugins/modules/manageiq_user.py @@ -59,8 +59,8 @@ options: default: always choices: ['always', 'on_create'] description: - - V(always) will update passwords unconditionally. - - V(on_create) will only set the password for a newly created user. + - V(always) updates passwords unconditionally. + - V(on_create) only sets the password for a newly created user. """ EXAMPLES = r""" diff --git a/plugins/modules/matrix.py b/plugins/modules/matrix.py index 186c57dd31..fb6c797bff 100644 --- a/plugins/modules/matrix.py +++ b/plugins/modules/matrix.py @@ -13,7 +13,7 @@ author: "Jan Christian Grünhage (@jcgruenhage)" module: matrix short_description: Send notifications to matrix description: - - This module sends html formatted notifications to matrix rooms. + - This module sends HTML formatted notifications to matrix rooms. extends_documentation_fragment: - community.general.attributes attributes: @@ -99,9 +99,9 @@ def run_module(): msg_html=dict(type='str', required=True), room_id=dict(type='str', required=True), hs_url=dict(type='str', required=True), - token=dict(type='str', required=False, no_log=True), - user_id=dict(type='str', required=False), - password=dict(type='str', required=False, no_log=True), + token=dict(type='str', no_log=True), + user_id=dict(type='str'), + password=dict(type='str', no_log=True), ) result = dict( diff --git a/plugins/modules/mattermost.py b/plugins/modules/mattermost.py index ed046e6481..4cb32c1f3b 100644 --- a/plugins/modules/mattermost.py +++ b/plugins/modules/mattermost.py @@ -38,7 +38,7 @@ options: type: str description: - Mattermost webhook API key. Log into your Mattermost site, go to Menu -> Integration -> Incoming Webhook -> Add Incoming - Webhook. This will give you full URL. O(api_key) is the last part. U(http://mattermost.example.com/hooks/API_KEY). + Webhook. This gives you a full URL. O(api_key) is the last part. U(http://mattermost.example.com/hooks/API_KEY). required: true text: type: str @@ -75,8 +75,8 @@ options: version_added: 10.0.0 validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. default: true type: bool """ @@ -137,10 +137,10 @@ def main(): url=dict(type='str', required=True), api_key=dict(type='str', required=True, no_log=True), text=dict(type='str'), - channel=dict(type='str', default=None), + channel=dict(type='str'), username=dict(type='str', default='Ansible'), icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'), - priority=dict(type='str', default=None, choices=['important', 'urgent']), + priority=dict(type='str', choices=['important', 'urgent']), validate_certs=dict(default=True, type='bool'), attachments=dict(type='list', elements='dict'), ), diff --git a/plugins/modules/maven_artifact.py b/plugins/modules/maven_artifact.py index fb294797f0..af3be70f39 100644 --- a/plugins/modules/maven_artifact.py +++ b/plugins/modules/maven_artifact.py @@ -16,8 +16,7 @@ module: maven_artifact short_description: Downloads an Artifact from a Maven Repository description: - Downloads an artifact from a maven repository given the maven coordinates provided to the module. - - Can retrieve snapshots or release versions of the artifact and will resolve the latest available version if one is not - available. + - Can retrieve snapshots or release versions of the artifact and resolve the latest available version if one is not available. author: "Chris Schmidt (@chrisisbeef)" requirements: - lxml @@ -85,8 +84,8 @@ options: type: dict force_basic_auth: description: - - C(httplib2), the library used by the URI module only sends authentication information when a webservice responds to an - initial request with a 401 status. Since some basic auth services do not properly send a 401, logins will fail. This + - C(httplib2), the library used by the URI module only sends authentication information when a webservice responds to + an initial request with a 401 status. Since some basic auth services do not properly send a 401, logins fail. This option forces the sending of the Basic authentication header upon initial request. default: false type: bool @@ -110,7 +109,7 @@ options: default: 10 validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be set to V(false) when no other option exists. + - If V(false), SSL certificates are not validated. This should only be set to V(false) when no other option exists. type: bool default: true client_cert: @@ -135,13 +134,13 @@ options: verify_checksum: type: str description: - - If V(never), the MD5/SHA1 checksum will never be downloaded and verified. - - If V(download), the MD5/SHA1 checksum will be downloaded and verified only after artifact download. This is the default. - - If V(change), the MD5/SHA1 checksum will be downloaded and verified if the destination already exist, to verify if - they are identical. This was the behaviour before 2.6. Since it downloads the checksum before (maybe) downloading - the artifact, and since some repository software, when acting as a proxy/cache, return a 404 error if the artifact - has not been cached yet, it may fail unexpectedly. If you still need it, you should consider using V(always) instead - - if you deal with a checksum, it is better to use it to verify integrity after download. + - If V(never), the MD5/SHA1 checksum is never downloaded and verified. + - If V(download), the MD5/SHA1 checksum is downloaded and verified only after artifact download. This is the default. + - If V(change), the MD5/SHA1 checksum is downloaded and verified if the destination already exist, to verify if they + are identical. This was the behaviour before 2.6. Since it downloads the checksum before (maybe) downloading the artifact, + and since some repository software, when acting as a proxy/cache, return a 404 error if the artifact has not been + cached yet, it may fail unexpectedly. If you still need it, you should consider using V(always) instead - if you deal + with a checksum, it is better to use it to verify integrity after download. - V(always) combines V(download) and V(change). required: false default: 'download' @@ -149,9 +148,9 @@ options: checksum_alg: type: str description: - - If V(md5), checksums will use the MD5 algorithm. This is the default. - - If V(sha1), checksums will use the SHA1 algorithm. This can be used on systems configured to use FIPS-compliant algorithms, - since MD5 will be blocked on such systems. + - If V(md5), checksums use the MD5 algorithm. This is the default. + - If V(sha1), checksums use the SHA1 algorithm. This can be used on systems configured to use FIPS-compliant algorithms, + since MD5 is blocked on such systems. default: 'md5' choices: ['md5', 'sha1'] version_added: 3.2.0 @@ -622,25 +621,25 @@ def main(): argument_spec=dict( group_id=dict(required=True), artifact_id=dict(required=True), - version=dict(default=None), - version_by_spec=dict(default=None), + version=dict(), + version_by_spec=dict(), classifier=dict(default=''), extension=dict(default='jar'), repository_url=dict(default='https://repo1.maven.org/maven2'), - username=dict(default=None, aliases=['aws_secret_key']), - password=dict(default=None, no_log=True, aliases=['aws_secret_access_key']), + username=dict(aliases=['aws_secret_key']), + password=dict(no_log=True, aliases=['aws_secret_access_key']), headers=dict(type='dict'), force_basic_auth=dict(default=False, type='bool'), state=dict(default="present", choices=["present", "absent"]), # TODO - Implement a "latest" state timeout=dict(default=10, type='int'), dest=dict(type="path", required=True), - validate_certs=dict(required=False, default=True, type='bool'), - client_cert=dict(type="path", required=False), - client_key=dict(type="path", required=False), - keep_name=dict(required=False, default=False, type='bool'), - verify_checksum=dict(required=False, default='download', choices=['never', 'download', 'change', 'always']), - checksum_alg=dict(required=False, default='md5', choices=['md5', 'sha1']), - unredirected_headers=dict(type='list', elements='str', required=False), + validate_certs=dict(default=True, type='bool'), + client_cert=dict(type="path"), + client_key=dict(type="path"), + keep_name=dict(default=False, type='bool'), + verify_checksum=dict(default='download', choices=['never', 'download', 'change', 'always']), + checksum_alg=dict(default='md5', choices=['md5', 'sha1']), + unredirected_headers=dict(type='list', elements='str'), directory_mode=dict(type='str'), ), add_file_common_args=True, diff --git a/plugins/modules/memset_dns_reload.py b/plugins/modules/memset_dns_reload.py index 7781abbf76..cb8ebe9191 100644 --- a/plugins/modules/memset_dns_reload.py +++ b/plugins/modules/memset_dns_reload.py @@ -36,9 +36,9 @@ options: default: false type: bool description: - - Boolean value, if set will poll the reload job's status and return when the job has completed (unless the 30 second - timeout is reached first). If the timeout is reached then the task will not be marked as failed, but stderr will indicate - that the polling failed. + - If V(true), it polls the reload job's status and return when the job has completed (unless the 30 second timeout is + reached first). If the timeout is reached then the task does not return as failed, but stderr indicates that the polling + failed. """ EXAMPLES = r""" @@ -167,7 +167,7 @@ def main(): module = AnsibleModule( argument_spec=dict( api_key=dict(required=True, type='str', no_log=True), - poll=dict(required=False, default=False, type='bool') + poll=dict(default=False, type='bool') ), supports_check_mode=False ) diff --git a/plugins/modules/memset_server_info.py b/plugins/modules/memset_server_info.py index df7ecb712f..59d395a161 100644 --- a/plugins/modules/memset_server_info.py +++ b/plugins/modules/memset_server_info.py @@ -148,7 +148,7 @@ memset_api: description: The network zone(s) the server is in. returned: always type: list - sample: ['reading'] + sample: ["reading"] nickname: description: Customer-set nickname for the server. returned: always diff --git a/plugins/modules/memset_zone.py b/plugins/modules/memset_zone.py index 2c80503bec..553328909d 100644 --- a/plugins/modules/memset_zone.py +++ b/plugins/modules/memset_zone.py @@ -289,8 +289,8 @@ def main(): state=dict(required=True, choices=['present', 'absent'], type='str'), api_key=dict(required=True, type='str', no_log=True), name=dict(required=True, aliases=['nickname'], type='str'), - ttl=dict(required=False, default=0, choices=[0, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400], type='int'), - force=dict(required=False, default=False, type='bool') + ttl=dict(default=0, choices=[0, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400], type='int'), + force=dict(default=False, type='bool') ), supports_check_mode=True ) diff --git a/plugins/modules/memset_zone_record.py b/plugins/modules/memset_zone_record.py index 7c16ee31eb..fd87c35fa0 100644 --- a/plugins/modules/memset_zone_record.py +++ b/plugins/modules/memset_zone_record.py @@ -356,15 +356,15 @@ def main(): global module module = AnsibleModule( argument_spec=dict( - state=dict(required=False, default='present', choices=['present', 'absent'], type='str'), + state=dict(default='present', choices=['present', 'absent'], type='str'), api_key=dict(required=True, type='str', no_log=True), zone=dict(required=True, type='str'), type=dict(required=True, choices=['A', 'AAAA', 'CNAME', 'MX', 'NS', 'SRV', 'TXT'], type='str'), address=dict(required=True, aliases=['ip', 'data'], type='str'), - record=dict(required=False, default='', type='str'), - ttl=dict(required=False, default=0, choices=[0, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400], type='int'), - priority=dict(required=False, default=0, type='int'), - relative=dict(required=False, default=False, type='bool') + record=dict(default='', type='str'), + ttl=dict(default=0, choices=[0, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400], type='int'), + priority=dict(default=0, type='int'), + relative=dict(default=False, type='bool') ), supports_check_mode=True ) diff --git a/plugins/modules/mksysb.py b/plugins/modules/mksysb.py index 3b6d322f23..7e188ec844 100644 --- a/plugins/modules/mksysb.py +++ b/plugins/modules/mksysb.py @@ -77,7 +77,7 @@ options: storage_path: type: str description: - - Storage path where the mksysb will stored. + - Storage path where the mksysb backup is stored. required: true use_snapshot: description: @@ -96,10 +96,6 @@ EXAMPLES = r""" """ RETURN = r""" -changed: - description: Return changed for mksysb actions as true or false. - returned: always - type: bool msg: description: Return message regarding the action. returned: always diff --git a/plugins/modules/modprobe.py b/plugins/modules/modprobe.py index cff77e9558..d5bb6fddbb 100644 --- a/plugins/modules/modprobe.py +++ b/plugins/modules/modprobe.py @@ -50,11 +50,11 @@ options: - Persistency between reboots for configured module. - This option creates files in C(/etc/modules-load.d/) and C(/etc/modprobe.d/) that make your module configuration persistent during reboots. - - If V(present), adds module name to C(/etc/modules-load.d/) and params to C(/etc/modprobe.d/) so the module will be - loaded on next reboot. - - If V(absent), will comment out module name from C(/etc/modules-load.d/) and comment out params from C(/etc/modprobe.d/) - so the module will not be loaded on next reboot. - - If V(disabled), will not touch anything and leave C(/etc/modules-load.d/) and C(/etc/modprobe.d/) as it is. + - If V(present), adds module name to C(/etc/modules-load.d/) and params to C(/etc/modprobe.d/) so the module is loaded + on next reboot. + - If V(absent), comments out module name from C(/etc/modules-load.d/) and comments out params from C(/etc/modprobe.d/) + so the module is not loaded on next reboot. + - If V(disabled), does not touch anything and leaves C(/etc/modules-load.d/) and C(/etc/modprobe.d/) as it is. - Note that it is usually a better idea to rely on the automatic module loading by PCI IDs, USB IDs, DMI IDs or similar triggers encoded in the kernel modules themselves instead of configuration like this. - In fact, most modern kernel modules are prepared for automatic loading already. diff --git a/plugins/modules/monit.py b/plugins/modules/monit.py index 65b6c606e9..a10967264c 100644 --- a/plugins/modules/monit.py +++ b/plugins/modules/monit.py @@ -35,8 +35,8 @@ options: type: str timeout: description: - - If there are pending actions for the service monitored by monit, then Ansible will check for up to this many seconds - to verify the requested action has been performed. Ansible will sleep for five seconds between each check. + - If there are pending actions for the service monitored by monit, then it checks for up to this many seconds to verify + the requested action has been performed. The module sleeps for five seconds between each check. default: 300 type: int author: diff --git a/plugins/modules/mqtt.py b/plugins/modules/mqtt.py index 9c610d02c7..b35a257da7 100644 --- a/plugins/modules/mqtt.py +++ b/plugins/modules/mqtt.py @@ -44,7 +44,7 @@ options: type: str description: - MQTT client identifier. - - If not specified, a value C(hostname + pid) will be used. + - If not specified, it uses a value C(hostname + pid). topic: type: str description: @@ -72,22 +72,22 @@ options: type: path description: - The path to the Certificate Authority certificate files that are to be treated as trusted by this client. If this - is the only option given then the client will operate in a similar manner to a web browser. That is to say it will - require the broker to have a certificate signed by the Certificate Authorities in ca_certs and will communicate using - TLS v1, but will not attempt any form of authentication. This provides basic network encryption but may not be sufficient + is the only option given then the client operates in a similar manner to a web browser. That is to say it requires + the broker to have a certificate signed by the Certificate Authorities in ca_certs and communicates using TLS v1, + but does not attempt any form of authentication. This provides basic network encryption but may not be sufficient depending on how the broker is configured. aliases: [ca_certs] client_cert: type: path description: - - The path pointing to the PEM encoded client certificate. If this is not None it will be used as client information - for TLS based authentication. Support for this feature is broker dependent. + - The path pointing to the PEM encoded client certificate. If this is set it is used as client information for TLS based + authentication. Support for this feature is broker dependent. aliases: [certfile] client_key: type: path description: - - The path pointing to the PEM encoded client private key. If this is not None it will be used as client information - for TLS based authentication. Support for this feature is broker dependent. + - The path pointing to the PEM encoded client private key. If this is set it is used as client information for TLS based + authentication. Support for this feature is broker dependent. aliases: [keyfile] tls_version: description: @@ -162,15 +162,15 @@ def main(): port=dict(default=1883, type='int'), topic=dict(required=True), payload=dict(required=True), - client_id=dict(default=None), + client_id=dict(), qos=dict(default="0", choices=["0", "1", "2"]), retain=dict(default=False, type='bool'), - username=dict(default=None), - password=dict(default=None, no_log=True), - ca_cert=dict(default=None, type='path', aliases=['ca_certs']), - client_cert=dict(default=None, type='path', aliases=['certfile']), - client_key=dict(default=None, type='path', aliases=['keyfile']), - tls_version=dict(default=None, choices=['tlsv1.1', 'tlsv1.2']) + username=dict(), + password=dict(no_log=True), + ca_cert=dict(type='path', aliases=['ca_certs']), + client_cert=dict(type='path', aliases=['certfile']), + client_key=dict(type='path', aliases=['keyfile']), + tls_version=dict(choices=['tlsv1.1', 'tlsv1.2']) ), supports_check_mode=True ) diff --git a/plugins/modules/mssql_db.py b/plugins/modules/mssql_db.py index e1fc222e71..8a15bfe699 100644 --- a/plugins/modules/mssql_db.py +++ b/plugins/modules/mssql_db.py @@ -158,7 +158,7 @@ def main(): login_password=dict(default='', no_log=True), login_host=dict(required=True), login_port=dict(default='1433'), - target=dict(default=None), + target=dict(), autocommit=dict(type='bool', default=False), state=dict( default='present', choices=['present', 'absent', 'import']) diff --git a/plugins/modules/mssql_script.py b/plugins/modules/mssql_script.py index 872b2ee13d..37bd0853d0 100644 --- a/plugins/modules/mssql_script.py +++ b/plugins/modules/mssql_script.py @@ -23,7 +23,7 @@ attributes: check_mode: support: partial details: - - The script will not be executed in check mode. + - The script is not be executed in check mode. diff_mode: support: none @@ -64,8 +64,8 @@ options: version_added: 8.4.0 output: description: - - With V(default) each row will be returned as a list of values. See RV(query_results). - - Output format V(dict) will return dictionary with the column names as keys. See RV(query_results_dict). + - With V(default) each row is returned as a list of values. See RV(query_results). + - Output format V(dict) returns dictionary with the column names as keys. See RV(query_results_dict). - V(dict) requires named columns to be returned by each query otherwise an error is thrown. choices: ["dict", "default"] default: 'default' @@ -170,12 +170,33 @@ query_results: type: list elements: list returned: success and O(output=default) - sample: [[[["Batch 0 - Select 0"]], [["Batch 0 - Select 1"]]], [[["Batch 1 - Select 0"]]]] + sample: + [ + [ + [ + [ + "Batch 0 - Select 0" + ] + ], + [ + [ + "Batch 0 - Select 1" + ] + ] + ], + [ + [ + [ + "Batch 1 - Select 0" + ] + ] + ] + ] contains: queries: description: - List of result sets of each query. - - If a query returns no results, the results of this and all the following queries will not be included in the output. + - If a query returns no results, the results of this and all the following queries are not included in the output. - Use the V(GO) keyword in O(script) to separate queries. type: list elements: list @@ -197,12 +218,33 @@ query_results_dict: type: list elements: list returned: success and O(output=dict) - sample: [[[["Batch 0 - Select 0"]], [["Batch 0 - Select 1"]]], [[["Batch 1 - Select 0"]]]] + sample: + [ + [ + [ + [ + "Batch 0 - Select 0" + ] + ], + [ + [ + "Batch 0 - Select 1" + ] + ] + ], + [ + [ + [ + "Batch 1 - Select 0" + ] + ] + ] + ] contains: queries: description: - List of result sets of each query. - - If a query returns no results, the results of this and all the following queries will not be included in the output. + - If a query returns no results, the results of this and all the following queries are not included in the output. Use V(GO) keyword to separate queries. type: list elements: list @@ -240,7 +282,7 @@ def clean_output(o): def run_module(): module_args = dict( - name=dict(required=False, aliases=['db'], default=''), + name=dict(aliases=['db'], default=''), login_user=dict(), login_password=dict(no_log=True), login_host=dict(required=True), diff --git a/plugins/modules/nagios.py b/plugins/modules/nagios.py index b3fb65bc63..830a805f87 100644 --- a/plugins/modules/nagios.py +++ b/plugins/modules/nagios.py @@ -22,11 +22,6 @@ description: - The C(nagios) module is not idempotent. - All actions require the O(host) parameter to be given explicitly. In playbooks you can use the C({{inventory_hostname}}) variable to refer to the host the playbook is currently running on. - - You can specify multiple services at once by separating them with commas, for example O(services=httpd,nfs,puppet). - - When specifying what service to handle there is a special service value, O(host), which will handle alerts/downtime/acknowledge - for the I(host itself), for example O(services=host). This keyword may not be given with other services at the same time. - B(Setting alerts/downtime/acknowledge for a host does not affect alerts/downtime/acknowledge for any of the services running - on it.) To schedule downtime for all services on particular host use keyword "all", for example O(services=all). extends_documentation_fragment: - community.general.attributes attributes: @@ -88,6 +83,12 @@ options: description: - What to manage downtime/alerts for. Separate multiple services with commas. - 'B(Required) option when O(action) is one of: V(downtime), V(acknowledge), V(forced_check), V(enable_alerts), V(disable_alerts).' + - You can specify multiple services at once by separating them with commas, for example O(services=httpd,nfs,puppet). + - When specifying what O(services) to handle there is a special service value, V(host), which handles alerts/downtime/acknowledge + for the I(host itself), for example O(services=host). This keyword may not be given with other services at the same + time. B(Setting alerts/downtime/acknowledge for a host does not affect alerts/downtime/acknowledge for any of the + services running on it.) To schedule downtime for all O(services) on particular host use keyword V(all), for example + O(services=all). aliases: ["service"] type: str servicegroup: @@ -97,8 +98,8 @@ options: type: str command: description: - - The raw command to send to nagios, which should not include the submitted time header or the line-feed. - - B(Required) option when using the V(command) O(action). + - The raw command to send to Nagios, which should not include the submitted time header or the line-feed. + - B(Required) option when O(action=command). type: str author: "Tim Bielawa (@tbielawa)" diff --git a/plugins/modules/netcup_dns.py b/plugins/modules/netcup_dns.py index 900eb01e0d..c48e0a2fb2 100644 --- a/plugins/modules/netcup_dns.py +++ b/plugins/modules/netcup_dns.py @@ -68,7 +68,7 @@ options: default: false description: - Whether the record should be the only one for that record type and record name. Only use with O(state=present). - - This will delete all other records with the same record name and type. + - This deletes all other records with the same record name and type. priority: description: - Record priority. Required for O(type=MX). @@ -213,15 +213,15 @@ def main(): customer_id=dict(required=True, type='int'), domain=dict(required=True), - record=dict(required=False, default='@', aliases=['name']), + record=dict(default='@', aliases=['name']), type=dict(required=True, choices=['A', 'AAAA', 'MX', 'CNAME', 'CAA', 'SRV', 'TXT', 'TLSA', 'NS', 'DS', 'OPENPGPKEY', 'SMIMEA', 'SSHFP']), value=dict(required=True), - priority=dict(required=False, type='int'), - solo=dict(required=False, type='bool', default=False), - state=dict(required=False, choices=['present', 'absent'], default='present'), - timeout=dict(required=False, type='int', default=5), + priority=dict(type='int'), + solo=dict(type='bool', default=False), + state=dict(choices=['present', 'absent'], default='present'), + timeout=dict(type='int', default=5), ), supports_check_mode=True diff --git a/plugins/modules/newrelic_deployment.py b/plugins/modules/newrelic_deployment.py index b9ce8af586..af58402a44 100644 --- a/plugins/modules/newrelic_deployment.py +++ b/plugins/modules/newrelic_deployment.py @@ -62,8 +62,8 @@ options: required: false validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. required: false default: true type: bool @@ -102,14 +102,14 @@ def main(): module = AnsibleModule( argument_spec=dict( token=dict(required=True, no_log=True), - app_name=dict(required=False), - application_id=dict(required=False), - changelog=dict(required=False), - description=dict(required=False), + app_name=dict(), + application_id=dict(), + changelog=dict(), + description=dict(), revision=dict(required=True), - user=dict(required=False), + user=dict(), validate_certs=dict(default=True, type='bool'), - app_name_exact_match=dict(required=False, type='bool', default=False), + app_name_exact_match=dict(type='bool', default=False), ), required_one_of=[['app_name', 'application_id']], required_if=[('app_name_exact_match', True, ['app_name'])], diff --git a/plugins/modules/nexmo.py b/plugins/modules/nexmo.py index ef6502532d..2d3a62b053 100644 --- a/plugins/modules/nexmo.py +++ b/plugins/modules/nexmo.py @@ -45,12 +45,12 @@ options: msg: type: str description: - - Message to text to send. Messages longer than 160 characters will be split into multiple messages. + - Message text to send. Messages longer than 160 characters are split into multiple messages. required: true validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. type: bool default: true extends_documentation_fragment: diff --git a/plugins/modules/nictagadm.py b/plugins/modules/nictagadm.py index a02a8fcffd..07b17bcf9e 100644 --- a/plugins/modules/nictagadm.py +++ b/plugins/modules/nictagadm.py @@ -35,7 +35,7 @@ options: type: str etherstub: description: - - Specifies that the nic tag will be attached to a created O(etherstub). + - Specifies that the nic tag is attached to a created O(etherstub). - Parameter O(etherstub) is mutually exclusive with both O(mtu), and O(mac). type: bool default: false @@ -46,7 +46,7 @@ options: type: int force: description: - - When O(state=absent) this switch will use the C(-f) parameter and delete the nic tag regardless of existing VMs. + - When O(state=absent) this switch uses the C(-f) parameter and delete the nic tag regardless of existing VMs. type: bool default: false state: @@ -83,7 +83,7 @@ mac: type: str sample: 00:1b:21:a3:f5:4d etherstub: - description: Specifies if the nic tag will create and attach to an etherstub. + description: Specifies if the nic tag was created and attached to an etherstub. returned: always type: bool sample: false @@ -93,7 +93,7 @@ mtu: type: int sample: 1500 force: - description: Shows if -f was used during the deletion of a nic tag. + description: Shows if C(-f) was used during the deletion of a nic tag. returned: always type: bool sample: false diff --git a/plugins/modules/nmcli.py b/plugins/modules/nmcli.py index 049273130d..0d35e5aacc 100644 --- a/plugins/modules/nmcli.py +++ b/plugins/modules/nmcli.py @@ -21,10 +21,10 @@ extends_documentation_fragment: description: - Manage the network devices. Create, modify and manage various connection and device type, for example V(ethernet), V(team), V(bond), V(vlan) and so on. - - 'On CentOS 8 and Fedora >=29 like systems, the requirements can be met by installing the following packages: NetworkManager.' - - 'On CentOS 7 and Fedora <=28 like systems, the requirements can be met by installing the following packages: NetworkManager-tui.' - - 'On Ubuntu and Debian like systems, the requirements can be met by installing the following packages: network-manager.' - - 'On openSUSE, the requirements can be met by installing the following packages: NetworkManager.' + - 'On CentOS 8 and Fedora >=29 like systems, the requirements can be met by installing the following packages: C(NetworkManager).' + - 'On CentOS 7 and Fedora <=28 like systems, the requirements can be met by installing the following packages: C(NetworkManager-tui).' + - 'On Ubuntu and Debian like systems, the requirements can be met by installing the following packages: C(network-manager).' + - 'On openSUSE, the requirements can be met by installing the following packages: C(NetworkManager).' attributes: check_mode: support: full @@ -34,8 +34,8 @@ options: state: description: - Whether the device should exist or not, taking action if the state is different from what is stated. - - Using O(state=present) to create connection will automatically bring connection up. - - Using O(state=up) and O(state=down) will not modify connection with other parameters. These states have been added + - Using O(state=present) creates connection set to be brought up automatically. + - Using O(state=up) and O(state=down) does not modify connection with other parameters. These states have been added in community.general 9.5.0. type: str required: true @@ -48,7 +48,7 @@ options: default: true autoconnect_priority: description: - - The priority of the connection profile for autoconnect. If set, connection profiles with higher priority will be preferred. + - The priority of the connection profile for autoconnect. If set, connection profiles with higher priority are preferred. type: int version_added: 11.0.0 autoconnect_retries: @@ -71,9 +71,9 @@ options: ifname: description: - The interface to bind the connection to. - - The connection will only be applicable to this interface name. + - The connection is only applicable to this interface name. - A special value of V(*) can be used for interface-independent connections. - - The ifname argument is mandatory for all connection types except bond, team, bridge, vlan and vpn. + - The O(ifname) argument is mandatory for all connection types except bond, team, bridge, vlan and vpn. - This parameter defaults to O(conn_name) when left unset for all connection types except vpn that removes it. type: str type: @@ -501,7 +501,7 @@ options: runner_fast_rate: description: - Option specifies the rate at which our link partner is asked to transmit LACPDU packets. If this is V(true) then packets - will be sent once per second. Otherwise they will be sent every 30 seconds. + are sent once per second. Otherwise they are sent every 30 seconds. - Only allowed for O(runner=lacp). type: bool version_added: 6.5.0 @@ -595,7 +595,7 @@ options: - Indicates whether Fast Initial Link Setup (802.11ai) must be enabled for the connection. - One of V(0) (use global default value), V(1) (disable FILS), V(2) (enable FILS if the supplicant and the access point support it) or V(3) (enable FILS and fail if not supported). - - When set to V(0) and no global default is set, FILS will be optionally enabled. + - When set to V(0) and no global default is set, FILS is optionally enabled. type: int choices: [0, 1, 2, 3] default: 0 @@ -639,7 +639,7 @@ options: - Indicates whether Protected Management Frames (802.11w) must be enabled for the connection. - One of V(0) (use global default value), V(1) (disable PMF), V(2) (enable PMF if the supplicant and the access point support it) or V(3) (enable PMF and fail if not supported). - - When set to V(0) and no global default is set, PMF will be optionally enabled. + - When set to V(0) and no global default is set, PMF is optionally enabled. type: int choices: [0, 1, 2, 3] default: 0 @@ -672,8 +672,8 @@ options: description: - Controls the interpretation of WEP keys. - Allowed values are V(1), in which case the key is either a 10- or 26-character hexadecimal string, or a 5- or - 13-character ASCII password; or V(2), in which case the passphrase is provided as a string and will be hashed - using the de-facto MD5 method to derive the actual WEP key. + 13-character ASCII password; or V(2), in which case the passphrase is provided as a string and it is hashed using + the de-facto MD5 method to derive the actual WEP key. type: int choices: [1, 2] wep-key0: @@ -708,8 +708,8 @@ options: wps-method: description: - Flags indicating which mode of WPS is to be used if any. - - There is little point in changing the default setting as NetworkManager will automatically determine whether it - is feasible to start WPS enrollment from the Access Point capabilities. + - There is little point in changing the default setting as NetworkManager automatically determines whether it is + feasible to start WPS enrollment from the Access Point capabilities. - WPS can be disabled by setting this property to a value of V(1). type: int default: 0 @@ -753,8 +753,8 @@ options: description: - 802.11 frequency band of the network. - One of V(a) for 5GHz 802.11a or V(bg) for 2.4GHz 802.11. - - This will lock associations to the Wi-Fi network to the specific band, so for example, if V(a) is specified, the - device will not associate with the same network in the 2.4GHz band even if the network's settings are compatible. + - This locks associations to the Wi-Fi network to the specific band, so for example, if V(a) is specified, the device + does not associate with the same network in the 2.4GHz band even if the network's settings are compatible. - This setting depends on specific driver capability and may not work with all drivers. type: str choices: [a, bg] @@ -767,7 +767,7 @@ options: channel: description: - Wireless channel to use for the Wi-Fi connection. - - The device will only join (or create for Ad-Hoc networks) a Wi-Fi network on the specified channel. + - The device only joins (or creates for Ad-Hoc networks) a Wi-Fi network on the specified channel. - Because channel numbers overlap between bands, this property also requires the O(wifi.band) property to be set. type: int default: 0 @@ -782,7 +782,7 @@ options: - With O(wifi.cloned-mac-address) setting V(random) or V(stable), by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. - - Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. + - Note that the least significant bit of the first MAC address is always unset to create a unicast MAC address. - If the property is V(null), it is eligible to be overwritten by a default connection setting. - If the value is still V(null) or an empty string, the default is to create a locally-administered, unicast MAC address. @@ -792,12 +792,12 @@ options: 3 bytes using the V(random) or V(stable) algorithm. - If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. - - For example, a value of V(FE:FF:FF:00:00:00 68:F7:28:00:00:00) will set the OUI of the MAC address to 68:F7:28, - while the lower bits are randomized. - - A value of V(02:00:00:00:00:00 00:00:00:00:00:00) will create a fully scrambled globally-administered, burned-in - MAC address. + - For example, a value of V(FE:FF:FF:00:00:00 68:F7:28:00:00:00) sets the OUI of the MAC address to 68:F7:28, while + the lower bits are randomized. + - A value of V(02:00:00:00:00:00 00:00:00:00:00:00) creates a fully scrambled globally-administered, burned-in MAC + address. - If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, V(02:00:00:00:00:00 - 00:00:00:00:00:00 02:00:00:00:00:00) will create a fully scrambled MAC address, randomly locally or globally administered. + 00:00:00:00:00:00 02:00:00:00:00:00) creates a fully scrambled MAC address, randomly locally or globally administered. type: str hidden: description: @@ -827,7 +827,7 @@ options: choices: [0, 1, 2] mac-address: description: - - If specified, this connection will only apply to the Wi-Fi device whose permanent MAC address matches. + - If specified, this connection only applies to the Wi-Fi device whose permanent MAC address matches. - This property does not change the MAC address of the device (for example for MAC spoofing). type: str mode: @@ -896,25 +896,25 @@ options: apn: description: - The GPRS Access Point Name specifying the APN used when establishing a data session with the GSM-based network. - - The APN often determines how the user will be billed for their network usage and whether the user has access to - the Internet or just a provider-specific walled-garden, so it is important to use the correct APN for the user's - mobile broadband plan. + - The APN often determines how the user is billed for their network usage and whether the user has access to the + Internet or just a provider-specific walled-garden, so it is important to use the correct APN for the user's mobile + broadband plan. - The APN may only be composed of the characters a-z, 0-9, ., and - per GSM 03.60 Section 14.9. type: str auto-config: - description: When V(true), the settings such as O(gsm.apn), O(gsm.username), or O(gsm.password) will default to values - that match the network the modem will register to in the Mobile Broadband Provider database. + description: When V(true), the settings such as O(gsm.apn), O(gsm.username), or O(gsm.password) default to values + that match the network the modem registers to in the Mobile Broadband Provider database. type: bool default: false device-id: description: - The device unique identifier (as given by the V(WWAN) management service) which this connection applies to. - - If given, the connection will only apply to the specified device. + - If given, the connection only applies to the specified device. type: str home-only: description: - - When V(true), only connections to the home network will be allowed. - - Connections to roaming networks will not be made. + - When V(true), only connections to the home network are allowed. + - Connections to roaming networks are not made. type: bool default: false mtu: @@ -925,7 +925,7 @@ options: network-id: description: - The Network ID (GSM LAI format, ie MCC-MNC) to force specific network registration. - - If the Network ID is specified, NetworkManager will attempt to force the device to register only on the specified + - If the Network ID is specified, NetworkManager attempts to force the device to register only on the specified network. - This can be used to ensure that the device does not roam when direct roaming control of the device is not otherwise possible. @@ -944,7 +944,7 @@ options: - NMSettingSecretFlags indicating how to handle the O(gsm.password) property. - 'Following choices are allowed: V(0) B(NONE): The system is responsible for providing and storing this secret (default), V(1) B(AGENT_OWNED): A user secret agent is responsible for providing and storing this secret; when - it is required agents will be asked to retrieve it V(2) B(NOT_SAVED): This secret should not be saved, but should + it is required agents are asked to retrieve it V(2) B(NOT_SAVED): This secret should not be saved, but should be requested from the user each time it is needed V(4) B(NOT_REQUIRED): In situations where it cannot be automatically determined that the secret is required (some VPNs and PPP providers do not require all secrets) this flag indicates that the specific secret is not required.' @@ -966,14 +966,14 @@ options: sim-id: description: - The SIM card unique identifier (as given by the C(WWAN) management service) which this connection applies to. - - If given, the connection will apply to any device also allowed by O(gsm.device-id) which contains a SIM card matching + - If given, the connection applies to any device also allowed by O(gsm.device-id) which contains a SIM card matching the given identifier. type: str sim-operator-id: description: - A MCC/MNC string like V(310260) or V(21601I) identifying the specific mobile network operator which this connection applies to. - - If given, the connection will apply to any device also allowed by O(gsm.device-id) and O(gsm.sim-id) which contains + - If given, the connection applies to any device also allowed by O(gsm.device-id) and O(gsm.sim-id) which contains a SIM card provisioned by the given operator. type: str username: @@ -1032,8 +1032,8 @@ options: ip4-auto-default-route: description: - Whether to enable special handling of the IPv4 default route. - - If enabled, the IPv4 default route from O(wireguard.peer-routes) will be placed to a dedicated routing-table and - two policy routing rules will be added. + - If enabled, the IPv4 default route from O(wireguard.peer-routes) is placed to a dedicated routing-table and two + policy routing rules are added. - The fwmark number is also used as routing-table for the default-route, and if fwmark is zero, an unused fwmark/table is chosen automatically. This corresponds to what wg-quick does with Table=auto and what WireGuard calls "Improved Rule-based Routing". @@ -1043,7 +1043,7 @@ options: - Like O(wireguard.ip4-auto-default-route), but for the IPv6 default route. type: bool listen-port: - description: The WireGuard connection listen-port. If not specified, the port will be chosen randomly when the interface + description: The WireGuard connection listen-port. If not specified, the port is chosen randomly when the interface comes up. type: int mtu: @@ -1056,12 +1056,12 @@ options: peer-routes: description: - Whether to automatically add routes for the AllowedIPs ranges of the peers. - - If V(true) (the default), NetworkManager will automatically add routes in the routing tables according to C(ipv4.route-table) + - If V(true) (the default), NetworkManager automatically adds routes in the routing tables according to C(ipv4.route-table) and C(ipv6.route-table). Usually you want this automatism enabled. - If V(false), no such routes are added automatically. In this case, the user may want to configure static routes in C(ipv4.routes) and C(ipv6.routes), respectively. - Note that if the peer's AllowedIPs is V(0.0.0.0/0) or V(::/0) and the profile's C(ipv4.never-default) or C(ipv6.never-default) - setting is enabled, the peer route for this peer will not be added automatically. + setting is enabled, the peer route for this peer is not added automatically. type: bool private-key: description: The 256 bit private-key in base64 encoding. @@ -1079,7 +1079,7 @@ options: version_added: 5.1.0 suboptions: permissions: - description: User that will have permission to use the connection. + description: User that has permission to use the connection. type: str required: true service-type: @@ -1096,7 +1096,7 @@ options: - NMSettingSecretFlags indicating how to handle the C(vpn.password) property. - 'Following choices are allowed: V(0) B(NONE): The system is responsible for providing and storing this secret (default); V(1) B(AGENT_OWNED): A user secret agent is responsible for providing and storing this secret; when - it is required agents will be asked to retrieve it; V(2) B(NOT_SAVED): This secret should not be saved, but should + it is required agents are asked to retrieve it; V(2) B(NOT_SAVED): This secret should not be saved, but should be requested from the user each time it is needed; V(4) B(NOT_REQUIRED): In situations where it cannot be automatically determined that the secret is required (some VPNs and PPP providers do not require all secrets) this flag indicates that the specific secret is not required.' @@ -1115,7 +1115,8 @@ options: ipsec-psk: description: - The pre-shared key in base64 encoding. - - "You can encode using this Ansible jinja2 expression: V(\"0s{{ '[YOUR PRE-SHARED KEY]' | ansible.builtin.b64encode }}\")." + - > + You can encode using this Ansible Jinja2 expression: V("0s{{ '[YOUR PRE-SHARED KEY]' | ansible.builtin.b64encode }}"). - This is only used when O(vpn.ipsec-enabled=true). type: str sriov: diff --git a/plugins/modules/nosh.py b/plugins/modules/nosh.py index da9db091bc..7cd4f4ad66 100644 --- a/plugins/modules/nosh.py +++ b/plugins/modules/nosh.py @@ -35,22 +35,22 @@ options: required: false choices: [started, stopped, reset, restarted, reloaded] description: - - V(started)/V(stopped) are idempotent actions that will not run commands unless necessary. - - V(restarted) will always bounce the service. - - V(reloaded) will send a SIGHUP or start the service. - - V(reset) will start or stop the service according to whether it is enabled or not. + - V(started)/V(stopped) are idempotent actions that do not run commands unless necessary. + - V(restarted) always bounces the service. + - V(reloaded) sends a SIGHUP or starts the service. + - V(reset) starts or stops the service according to whether it is enabled or not. enabled: required: false type: bool description: - Enable or disable the service, independently of C(*.preset) file preference or running state. Mutually exclusive with - O(preset). Will take effect prior to O(state=reset). + O(preset). It takes effect prior to O(state=reset). preset: required: false type: bool description: - Enable or disable the service according to local preferences in C(*.preset) files. Mutually exclusive with O(enabled). - Only has an effect if set to true. Will take effect prior to O(state=reset). + Only has an effect if set to true. It takes effect prior to O(state=reset). user: required: false default: false diff --git a/plugins/modules/nsupdate.py b/plugins/modules/nsupdate.py index 9f665626b2..4049996ca3 100644 --- a/plugins/modules/nsupdate.py +++ b/plugins/modules/nsupdate.py @@ -63,8 +63,8 @@ options: type: str zone: description: - - DNS record will be modified on this O(zone). - - When omitted DNS will be queried to attempt finding the correct zone. + - DNS record is modified on this O(zone). + - When omitted, DNS is queried to attempt finding the correct zone. type: str record: description: @@ -144,10 +144,6 @@ EXAMPLES = r""" """ RETURN = r""" -changed: - description: If module has modified record. - returned: success - type: str record: description: DNS record. returned: success @@ -476,18 +472,18 @@ def main(): module = AnsibleModule( argument_spec=dict( - state=dict(required=False, default='present', choices=['present', 'absent'], type='str'), + state=dict(default='present', choices=['present', 'absent'], type='str'), server=dict(required=True, type='str'), - port=dict(required=False, default=53, type='int'), - key_name=dict(required=False, type='str'), - key_secret=dict(required=False, type='str', no_log=True), - key_algorithm=dict(required=False, default='hmac-md5', choices=tsig_algs, type='str'), - zone=dict(required=False, default=None, type='str'), + port=dict(default=53, type='int'), + key_name=dict(type='str'), + key_secret=dict(type='str', no_log=True), + key_algorithm=dict(default='hmac-md5', choices=tsig_algs, type='str'), + zone=dict(type='str'), record=dict(required=True, type='str'), - type=dict(required=False, default='A', type='str'), - ttl=dict(required=False, default=3600, type='int'), - value=dict(required=False, default=None, type='list', elements='str'), - protocol=dict(required=False, default='tcp', choices=['tcp', 'udp'], type='str') + type=dict(default='A', type='str'), + ttl=dict(default=3600, type='int'), + value=dict(type='list', elements='str'), + protocol=dict(default='tcp', choices=['tcp', 'udp'], type='str') ), supports_check_mode=True ) diff --git a/plugins/modules/oci_vcn.py b/plugins/modules/oci_vcn.py index e44d2b0f20..56a637ac2c 100644 --- a/plugins/modules/oci_vcn.py +++ b/plugins/modules/oci_vcn.py @@ -162,17 +162,12 @@ def main(): ) module_args.update( dict( - cidr_block=dict(type="str", required=False), - compartment_id=dict(type="str", required=False), - display_name=dict(type="str", required=False, aliases=["name"]), - dns_label=dict(type="str", required=False), - state=dict( - type="str", - required=False, - default="present", - choices=["absent", "present"], - ), - vcn_id=dict(type="str", required=False, aliases=["id"]), + cidr_block=dict(type="str"), + compartment_id=dict(type="str"), + display_name=dict(type="str", aliases=["name"]), + dns_label=dict(type="str"), + state=dict(type="str", default="present", choices=["absent", "present"]), + vcn_id=dict(type="str", aliases=["id"]), ) ) diff --git a/plugins/modules/odbc.py b/plugins/modules/odbc.py index 54c923cf1e..41b5df4f08 100644 --- a/plugins/modules/odbc.py +++ b/plugins/modules/odbc.py @@ -66,6 +66,7 @@ EXAMPLES = r""" changed_when: false """ +# @FIXME RV 'results' is meant to be used when 'loop:' was used with the module. RETURN = r""" results: description: List of lists of strings containing selected rows, likely empty for DDL statements. diff --git a/plugins/modules/office_365_connector_card.py b/plugins/modules/office_365_connector_card.py index 8ff82fecc1..6b8384a7ca 100644 --- a/plugins/modules/office_365_connector_card.py +++ b/plugins/modules/office_365_connector_card.py @@ -17,7 +17,7 @@ description: U(https://learn.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-reference#connector-card-for-microsoft-365-groups). author: "Marc Sensenich (@marc-sensenich)" notes: - - This module is not idempotent, therefore if the same task is run twice there will be two Connector Cards created. + - This module is not idempotent, therefore if you run the same task twice then you create two Connector Cards. extends_documentation_fragment: - community.general.attributes attributes: @@ -35,7 +35,7 @@ options: type: str description: - A string used for summarizing card content. - - This will be shown as the message subject. + - This is the message subject. - This is required if the text parameter is not populated. color: type: str @@ -49,13 +49,13 @@ options: type: str description: - The main text of the card. - - This will be rendered below the sender information and optional title, + - This is rendered below the sender information and optional title, - And above any sections or actions present. actions: type: list elements: dict description: - - This array of objects will power the action links found at the bottom of the card. + - This array of objects is used to power the action links found at the bottom of the card. sections: type: list elements: dict diff --git a/plugins/modules/one_host.py b/plugins/modules/one_host.py index 8246172c90..7c43da3058 100644 --- a/plugins/modules/one_host.py +++ b/plugins/modules/one_host.py @@ -36,8 +36,8 @@ options: state: description: - Takes the host to the desired lifecycle state. - - If V(absent) the host will be deleted from the cluster. - - If V(present) the host will be created in the cluster (includes V(enabled), V(disabled) and V(offline) states). + - If V(absent) the host is deleted from the cluster. + - If V(present) the host is created in the cluster (includes V(enabled), V(disabled) and V(offline) states). - If V(enabled) the host is fully operational. - V(disabled), for example to perform maintenance operations. - V(offline), host is totally offline. diff --git a/plugins/modules/one_image.py b/plugins/modules/one_image.py index e5ffb68b4f..d9a21f86b7 100644 --- a/plugins/modules/one_image.py +++ b/plugins/modules/one_image.py @@ -48,8 +48,8 @@ options: type: bool new_name: description: - - A name that will be assigned to the existing or new image. - - In the case of cloning, by default O(new_name) will take the name of the origin image with the prefix 'Copy of'. + - A name that is assigned to the existing or new image. + - In the case of cloning, by default O(new_name) is set to the name of the origin image with the prefix 'Copy of'. type: str persistent: description: @@ -325,7 +325,7 @@ datastore: returned: when O(state=present), O(state=cloned), or O(state=renamed) version_added: 9.5.0 vms: - description: The image's list of vm ID's. + description: The image's list of VM ID's. type: list elements: int returned: when O(state=present), O(state=cloned), or O(state=renamed) diff --git a/plugins/modules/one_image_info.py b/plugins/modules/one_image_info.py index 7e5def76fb..f940444cad 100644 --- a/plugins/modules/one_image_info.py +++ b/plugins/modules/one_image_info.py @@ -29,10 +29,10 @@ options: elements: str name: description: - - A O(name) of the image whose facts will be gathered. - - If the O(name) begins with V(~) the O(name) will be used as regex pattern, which restricts the list of images (whose - facts will be returned) whose names match specified regex. - - Also, if the O(name) begins with V(~*) case-insensitive matching will be performed. + - A O(name) of the image whose facts is gathered. + - If the O(name) begins with V(~) the O(name) is used as regex pattern, which restricts the list of images (whose facts + is returned) whose names match specified regex. + - Also, if the O(name) begins with V(~*) case-insensitive matching is performed. - See examples for more details. type: str author: @@ -231,7 +231,7 @@ images: sample: image_datastore version_added: 9.5.0 vms: - description: The image's list of vm ID's. + description: The image's list of VM ID's. type: list elements: int version_added: 9.5.0 @@ -281,8 +281,8 @@ IMAGE_STATES = ['INIT', 'READY', 'USED', 'DISABLED', 'LOCKED', 'ERROR', 'CLONE', class ImageInfoModule(OpenNebulaModule): def __init__(self): argument_spec = dict( - ids=dict(type='list', aliases=['id'], elements='str', required=False), - name=dict(type='str', required=False), + ids=dict(type='list', aliases=['id'], elements='str'), + name=dict(type='str'), ) mutually_exclusive = [ ['ids', 'name'], diff --git a/plugins/modules/one_service.py b/plugins/modules/one_service.py index 8244e0ca5a..88ccd29d74 100644 --- a/plugins/modules/one_service.py +++ b/plugins/modules/one_service.py @@ -55,7 +55,7 @@ options: type: str unique: description: - - Setting O(unique=true) will make sure that there is only one service instance running with a name set with O(service_name) + - Setting O(unique=true) ensures that there is only one service instance running with a name set with O(service_name) when instantiating a service from a template specified with O(template_id) or O(template_name). Check examples below. type: bool default: false @@ -73,11 +73,11 @@ options: type: str owner_id: description: - - ID of the user which will be set as the owner of the service. + - ID of the user which is set as the owner of the service. type: int group_id: description: - - ID of the group which will be set as the group of the service. + - ID of the group which is set as the group of the service. type: int wait: description: @@ -91,7 +91,7 @@ options: type: int custom_attrs: description: - - Dictionary of key/value custom attributes which will be used when instantiating a new service. + - Dictionary of key/value custom attributes which is used when instantiating a new service. default: {} type: dict role: diff --git a/plugins/modules/one_template.py b/plugins/modules/one_template.py index 71db2c1d2c..091c4c55a7 100644 --- a/plugins/modules/one_template.py +++ b/plugins/modules/one_template.py @@ -33,12 +33,12 @@ attributes: options: id: description: - - A O(id) of the template you would like to manage. If not set then a new template will be created with the given O(name). + - A O(id) of the template you would like to manage. If not set then a new template is created with the given O(name). type: int name: description: - - A O(name) of the template you would like to manage. If a template with the given name does not exist it will be created, - otherwise it will be managed by this module. + - A O(name) of the template you would like to manage. If a template with the given name does not exist it is created, + otherwise it is managed by this module. type: str template: description: @@ -163,11 +163,11 @@ from ansible_collections.community.general.plugins.module_utils.opennebula impor class TemplateModule(OpenNebulaModule): def __init__(self): argument_spec = dict( - id=dict(type='int', required=False), - name=dict(type='str', required=False), + id=dict(type='int'), + name=dict(type='str'), state=dict(type='str', choices=['present', 'absent'], default='present'), - template=dict(type='str', required=False), - filter=dict(type='str', required=False, choices=['user_primary_group', 'user', 'all', 'user_groups'], default='user'), + template=dict(type='str'), + filter=dict(type='str', choices=['user_primary_group', 'user', 'all', 'user_groups'], default='user'), ) mutually_exclusive = [ diff --git a/plugins/modules/one_vm.py b/plugins/modules/one_vm.py index 2139da5d4c..3d23efa036 100644 --- a/plugins/modules/one_vm.py +++ b/plugins/modules/one_vm.py @@ -39,7 +39,7 @@ options: api_password: description: - Password of the user to login into OpenNebula RPC server. If not set then the value of the E(ONE_PASSWORD) environment - variable is used. if both O(api_username) or O(api_password) are not set, then it will try authenticate with ONE auth + variable is used. if both O(api_username) or O(api_password) are not set, then it tries to authenticate with ONE auth file. Default path is C(~/.one/one_auth). - Set environment variable E(ONE_AUTH) to override this path. type: str @@ -53,7 +53,7 @@ options: type: int vm_start_on_hold: description: - - Set to true to put vm on hold while creating. + - Set to true to put VM on hold while creating. default: false type: bool instance_ids: @@ -80,7 +80,7 @@ options: wait: description: - Wait for the instance to reach its desired state before returning. Keep in mind if you are waiting for instance to - be in running state it does not mean that you will be able to SSH on that machine only that boot process have started + be in running state it does not mean that you are able to SSH on that machine only that boot process have started on that instance. See the example using the M(ansible.builtin.wait_for) module for details. default: true type: bool @@ -94,9 +94,9 @@ options: - A dictionary of key/value attributes to add to new instances, or for setting C(state) of instances with these attributes. - Keys are case insensitive and OpenNebula automatically converts them to upper case. - Be aware V(NAME) is a special attribute which sets the name of the VM when it is deployed. - - C(#) character(s) can be appended to the C(NAME) and the module will automatically add indexes to the names of VMs. + - C(#) character(s) can be appended to the C(NAME) and the module automatically adds indexes to the names of VMs. - 'For example: V(NAME: foo-###) would create VMs with names V(foo-000), V(foo-001),...' - - When used with O(count_attributes) and O(exact_count) the module will match the base name without the index part. + - When used with O(count_attributes) and O(exact_count) the module matches the base name without the index part. default: {} type: dict labels: @@ -126,7 +126,7 @@ options: description: - Indicates how many instances that match O(count_attributes) and O(count_labels) parameters should be deployed. Instances are either created or terminated based on this value. - - B(NOTE:) Instances with the least IDs will be terminated first. + - B(NOTE:) Instances with the least IDs are terminated first. type: int mode: description: @@ -135,11 +135,11 @@ options: type: str owner_id: description: - - ID of the user which will be set as the owner of the instance. + - ID of the user which is set as the owner of the instance. type: int group_id: description: - - ID of the group which will be set as the group of the instance. + - ID of the group which is set as the group of the instance. type: int memory: description: @@ -157,7 +157,7 @@ options: type: float vcpu: description: - - Number of CPUs (cores) new VM will have. + - Number of CPUs (cores) the new VM uses. type: int networks: description: @@ -170,9 +170,9 @@ options: - Creates an image from a VM disk. - It is a dictionary where you have to specify C(name) of the new image. - Optionally you can specify C(disk_id) of the disk you want to save. By default C(disk_id) is 0. - - B(NOTE:) This operation will only be performed on the first VM (if more than one VM ID is passed) and the VM has to - be in the C(poweredoff) state. - - Also this operation will fail if an image with specified C(name) already exists. + - B(NOTE:) This operation is only performed on the first VM (if more than one VM ID is passed) and the VM has to be + in the C(poweredoff) state. + - Also this operation fails if an image with specified C(name) already exists. type: dict persistent: description: @@ -195,14 +195,16 @@ options: - When O(instance_ids) is provided, updates running VMs with the C(updateconf) API call. - When new VMs are being created, emulates the C(updateconf) API call using direct template merge. - Allows for complete modifications of the C(CONTEXT) attribute. - - "Supported attributes include:" + - 'Supported attributes include:' - B(BACKUP_CONFIG:) V(BACKUP_VOLATILE), V(FS_FREEZE), V(INCREMENT_MODE), V(KEEP_LAST), V(MODE); - - B(CONTEXT:) (Any value, except V(ETH*). Variable substitution will be made); + - B(CONTEXT:) (Any value, except V(ETH*). Variable substitutions are made); - B(CPU_MODEL:) V(FEATURES), V(MODEL); - - B(FEATURES:) V(ACPI), V(APIC), V(GUEST_AGENT), V(HYPERV), V(IOTHREADS), V(LOCALTIME), V(PAE), V(VIRTIO_BLK_QUEUES), V(VIRTIO_SCSI_QUEUES); + - B(FEATURES:) V(ACPI), V(APIC), V(GUEST_AGENT), V(HYPERV), V(IOTHREADS), V(LOCALTIME), V(PAE), V(VIRTIO_BLK_QUEUES), + V(VIRTIO_SCSI_QUEUES); - B(GRAPHICS:) V(COMMAND), V(KEYMAP), V(LISTEN), V(PASSWD), V(PORT), V(TYPE); - B(INPUT:) V(BUS), V(TYPE); - - B(OS:) V(ARCH), V(BOOT), V(BOOTLOADER), V(FIRMWARE), V(INITRD), V(KERNEL), V(KERNEL_CMD), V(MACHINE), V(ROOT), V(SD_DISK_BUS), V(UUID); + - B(OS:) V(ARCH), V(BOOT), V(BOOTLOADER), V(FIRMWARE), V(INITRD), V(KERNEL), V(KERNEL_CMD), V(MACHINE), V(ROOT), V(SD_DISK_BUS), + V(UUID); - B(RAW:) V(DATA), V(DATA_VMX), V(TYPE), V(VALIDATE); - B(VIDEO:) V(ATS), V(IOMMU), V(RESOLUTION), V(TYPE), V(VRAM). type: dict @@ -453,35 +455,35 @@ instances: returned: success contains: vm_id: - description: Vm ID. + description: VM ID. type: int sample: 153 vm_name: - description: Vm name. + description: VM name. type: str sample: foo template_id: - description: Vm's template ID. + description: VM's template ID. type: int sample: 153 group_id: - description: Vm's group ID. + description: VM's group ID. type: int sample: 1 group_name: - description: Vm's group name. + description: VM's group name. type: str sample: one-users owner_id: - description: Vm's owner ID. + description: VM's owner ID. type: int sample: 143 owner_name: - description: Vm's owner name. + description: VM's owner name. type: str sample: app-user mode: - description: Vm's mode. + description: VM's mode. type: str returned: success sample: 660 @@ -512,20 +514,21 @@ instances: networks: description: A list of dictionaries with info about IP, NAME, MAC, SECURITY_GROUPS for each NIC. type: list - sample: [ - { - "ip": "10.120.5.33", - "mac": "02:00:0a:78:05:21", - "name": "default-test-private", - "security_groups": "0,10" - }, - { - "ip": "10.120.5.34", - "mac": "02:00:0a:78:05:22", - "name": "default-test-private", - "security_groups": "0" - } - ] + sample: + [ + { + "ip": "10.120.5.33", + "mac": "02:00:0a:78:05:21", + "name": "default-test-private", + "security_groups": "0,10" + }, + { + "ip": "10.120.5.34", + "mac": "02:00:0a:78:05:22", + "name": "default-test-private", + "security_groups": "0" + } + ] uptime_h: description: Uptime of the instance in hours. type: int @@ -537,23 +540,27 @@ instances: attributes: description: A dictionary of key/values attributes that are associated with the instance. type: dict - sample: { - "HYPERVISOR": "kvm", - "LOGO": "images/logos/centos.png", - "TE_GALAXY": "bar", - "USER_INPUTS": null - } + sample: + { + "HYPERVISOR": "kvm", + "LOGO": "images/logos/centos.png", + "TE_GALAXY": "bar", + "USER_INPUTS": null + } updateconf: description: A dictionary of key/values attributes that are set with the updateconf API call. type: dict version_added: 6.3.0 - sample: { - "OS": { "ARCH": "x86_64" }, - "CONTEXT": { - "START_SCRIPT": "ip r r 169.254.16.86/32 dev eth0", - "SSH_PUBLIC_KEY": "ssh-rsa ...\\nssh-ed25519 ..." + sample: + { + "OS": { + "ARCH": "x86_64" + }, + "CONTEXT": { + "START_SCRIPT": "ip r r 169.254.16.86/32 dev eth0", + "SSH_PUBLIC_KEY": "ssh-rsa ...\\nssh-ed25519 ..." + } } - } tagged_instances: description: - A list of instances info based on a specific attributes and/or labels that are specified with O(count_attributes) and @@ -562,35 +569,35 @@ tagged_instances: returned: success contains: vm_id: - description: Vm ID. + description: VM ID. type: int sample: 153 vm_name: - description: Vm name. + description: VM name. type: str sample: foo template_id: - description: Vm's template ID. + description: VM's template ID. type: int sample: 153 group_id: - description: Vm's group ID. + description: VM's group ID. type: int sample: 1 group_name: - description: Vm's group name. + description: VM's group name. type: str sample: one-users owner_id: - description: Vm's user ID. + description: VM's user ID. type: int sample: 143 owner_name: - description: Vm's user name. + description: VM's user name. type: str sample: app-user mode: - description: Vm's mode. + description: VM's mode. type: str returned: success sample: 660 @@ -621,20 +628,21 @@ tagged_instances: networks: description: A list of dictionaries with info about IP, NAME, MAC, SECURITY_GROUPS for each NIC. type: list - sample: [ - { - "ip": "10.120.5.33", - "mac": "02:00:0a:78:05:21", - "name": "default-test-private", - "security_groups": "0,10" - }, - { - "ip": "10.120.5.34", - "mac": "02:00:0a:78:05:22", - "name": "default-test-private", - "security_groups": "0" - } - ] + sample: + [ + { + "ip": "10.120.5.33", + "mac": "02:00:0a:78:05:21", + "name": "default-test-private", + "security_groups": "0,10" + }, + { + "ip": "10.120.5.34", + "mac": "02:00:0a:78:05:22", + "name": "default-test-private", + "security_groups": "0" + } + ] uptime_h: description: Uptime of the instance in hours. type: int @@ -646,12 +654,27 @@ tagged_instances: attributes: description: A dictionary of key/values attributes that are associated with the instance. type: dict - sample: {"HYPERVISOR": "kvm", "LOGO": "images/logos/centos.png", "TE_GALAXY": "bar", "USER_INPUTS": null} + sample: + { + "HYPERVISOR": "kvm", + "LOGO": "images/logos/centos.png", + "TE_GALAXY": "bar", + "USER_INPUTS": null + } updateconf: description: A dictionary of key/values attributes that are set with the updateconf API call. type: dict version_added: 6.3.0 - sample: {"OS": {"ARCH": "x86_64"}, "CONTEXT": {"START_SCRIPT": "ip r r 169.254.16.86/32 dev eth0", "SSH_PUBLIC_KEY": "ssh-rsa ...\\nssh-ed25519 ..."}} + sample: + { + "OS": { + "ARCH": "x86_64" + }, + "CONTEXT": { + "START_SCRIPT": "ip r r 169.254.16.86/32 dev eth0", + "SSH_PUBLIC_KEY": "ssh-rsa ...\\nssh-ed25519 ..." + } + } """ try: diff --git a/plugins/modules/one_vnet.py b/plugins/modules/one_vnet.py index b8cb0c6559..b77530e756 100644 --- a/plugins/modules/one_vnet.py +++ b/plugins/modules/one_vnet.py @@ -30,12 +30,12 @@ options: id: description: - A O(id) of the network you would like to manage. - - If not set then a new network will be created with the given O(name). + - If not set then a new network is created with the given O(name). type: int name: description: - - A O(name) of the network you would like to manage. If a network with the given name does not exist it will be created, - otherwise it will be managed by this module. + - A O(name) of the network you would like to manage. If a network with the given name does not exist it, then is created, + otherwise it is managed by this module. type: str template: description: @@ -263,10 +263,10 @@ class NetworksModule(OpenNebulaModule): def __init__(self): argument_spec = dict( - id=dict(type='int', required=False), - name=dict(type='str', required=False), + id=dict(type='int'), + name=dict(type='str'), state=dict(type='str', choices=['present', 'absent'], default='present'), - template=dict(type='str', required=False), + template=dict(type='str'), ) mutually_exclusive = [ diff --git a/plugins/modules/oneandone_firewall_policy.py b/plugins/modules/oneandone_firewall_policy.py index f949767ef3..eca9a8ed70 100644 --- a/plugins/modules/oneandone_firewall_policy.py +++ b/plugins/modules/oneandone_firewall_policy.py @@ -46,14 +46,14 @@ options: type: str rules: description: - - A list of rules that will be set for the firewall policy. Each rule must contain protocol parameter, in addition to - three optional parameters (port_from, port_to, and source). + - List of rules that are set for the firewall policy. Each rule must contain protocol parameter, in addition to three + optional parameters (port_from, port_to, and source). type: list elements: dict default: [] add_server_ips: description: - - A list of server identifiers (id or name) to be assigned to a firewall policy. Used in combination with update state. + - A list of server identifiers (ID or name) to be assigned to a firewall policy. Used in combination with update state. type: list elements: str required: false @@ -67,15 +67,15 @@ options: default: [] add_rules: description: - - A list of rules that will be added to an existing firewall policy. It is syntax is the same as the one used for rules - parameter. Used in combination with update state. + - List of rules that are added to an existing firewall policy. It is syntax is the same as the one used for rules parameter. + Used in combination with update state. type: list elements: dict required: false default: [] remove_rules: description: - - A list of rule IDs that will be removed from an existing firewall policy. Used in combination with update state. + - List of rule IDs that are removed from an existing firewall policy. Used in combination with update state. type: list elements: str required: false @@ -194,7 +194,7 @@ RETURN = r""" firewall_policy: description: Information about the firewall policy that was processed. type: dict - sample: '{"id": "92B74394A397ECC3359825C1656D67A6", "name": "Default Policy"}' + sample: {"id": "92B74394A397ECC3359825C1656D67A6", "name": "Default Policy"} returned: always """ diff --git a/plugins/modules/oneandone_load_balancer.py b/plugins/modules/oneandone_load_balancer.py index 5cd5da79d4..5a8ce7b8f0 100644 --- a/plugins/modules/oneandone_load_balancer.py +++ b/plugins/modules/oneandone_load_balancer.py @@ -78,15 +78,15 @@ options: choices: ["ROUND_ROBIN", "LEAST_CONNECTIONS"] datacenter: description: - - ID or country code of the datacenter where the load balancer will be created. + - ID or country code of the datacenter where the load balancer is created. - If not specified, it defaults to V(US). type: str choices: ["US", "ES", "DE", "GB"] required: false rules: description: - - A list of rule objects that will be set for the load balancer. Each rule must contain protocol, port_balancer, and - port_server parameters, in addition to source parameter, which is optional. + - A list of rule objects that are set for the load balancer. Each rule must contain protocol, port_balancer, and port_server + parameters, in addition to source parameter, which is optional. type: list elements: dict default: [] @@ -111,15 +111,15 @@ options: default: [] add_rules: description: - - A list of rules that will be added to an existing load balancer. It is syntax is the same as the one used for rules - parameter. Used in combination with O(state=update). + - A list of rules that are added to an existing load balancer. It is syntax is the same as the one used for rules parameter. + Used in combination with O(state=update). type: list elements: dict required: false default: [] remove_rules: description: - - A list of rule IDs that will be removed from an existing load balancer. Used in combination with O(state=update). + - A list of rule IDs that are removed from an existing load balancer. Used in combination with O(state=update). type: list elements: str required: false @@ -245,7 +245,7 @@ RETURN = r""" load_balancer: description: Information about the load balancer that was processed. type: dict - sample: '{"id": "92B74394A397ECC3359825C1656D67A6", "name": "Default Balancer"}' + sample: {"id": "92B74394A397ECC3359825C1656D67A6", "name": "Default Balancer"} returned: always """ diff --git a/plugins/modules/oneandone_monitoring_policy.py b/plugins/modules/oneandone_monitoring_policy.py index 627e693e5a..2d8693156c 100644 --- a/plugins/modules/oneandone_monitoring_policy.py +++ b/plugins/modules/oneandone_monitoring_policy.py @@ -89,7 +89,7 @@ options: required: true ports: description: - - Array of ports that will be monitoring. + - Array of ports that are to be monitored. type: list elements: dict default: [] @@ -114,7 +114,7 @@ options: required: true processes: description: - - Array of processes that will be monitoring. + - Array of processes that are to be monitored. type: list elements: dict default: [] @@ -413,7 +413,7 @@ RETURN = r""" monitoring_policy: description: Information about the monitoring policy that was processed. type: dict - sample: '{"id": "92B74394A397ECC3359825C1656D67A6", "name": "Default Policy"}' + sample: {"id": "92B74394A397ECC3359825C1656D67A6", "name": "Default Policy"} returned: always """ diff --git a/plugins/modules/oneandone_private_network.py b/plugins/modules/oneandone_private_network.py index 1a56fe345c..f39c464f96 100644 --- a/plugins/modules/oneandone_private_network.py +++ b/plugins/modules/oneandone_private_network.py @@ -50,7 +50,7 @@ options: type: str datacenter: description: - - The identifier of the datacenter where the private network will be created. + - The identifier of the datacenter where the private network is created. type: str choices: [US, ES, DE, GB] network_address: @@ -143,7 +143,7 @@ RETURN = r""" private_network: description: Information about the private network. type: dict - sample: '{"name": "backup_network", "id": "55726DEDA20C99CF6F2AF8F18CAC9963"}' + sample: {"name": "backup_network", "id": "55726DEDA20C99CF6F2AF8F18CAC9963"} returned: always """ diff --git a/plugins/modules/oneandone_public_ip.py b/plugins/modules/oneandone_public_ip.py index c30c0bbdc7..b6b49c5b4a 100644 --- a/plugins/modules/oneandone_public_ip.py +++ b/plugins/modules/oneandone_public_ip.py @@ -43,7 +43,7 @@ options: required: false datacenter: description: - - ID of the datacenter where the IP will be created (only for unassigned IPs). + - ID of the datacenter where the IP is created (only for unassigned IPs). type: str choices: [US, ES, DE, GB] default: US @@ -110,7 +110,7 @@ RETURN = r""" public_ip: description: Information about the public IP that was processed. type: dict - sample: '{"id": "F77CC589EBC120905B4F4719217BFF6D", "ip": "10.5.132.106"}' + sample: {"id": "F77CC589EBC120905B4F4719217BFF6D", "ip": "10.5.132.106"} returned: always """ diff --git a/plugins/modules/oneandone_server.py b/plugins/modules/oneandone_server.py index ae9198c7d0..7683ea1480 100644 --- a/plugins/modules/oneandone_server.py +++ b/plugins/modules/oneandone_server.py @@ -73,8 +73,8 @@ options: type: float hdds: description: - - A list of hard disks with nested O(ignore:hdds[].size) and O(ignore:hdds[].is_main) properties. It must be provided with O(vcore), - O(cores_per_processor), and O(ram) parameters. + - A list of hard disks with nested O(ignore:hdds[].size) and O(ignore:hdds[].is_main) properties. It must be provided + with O(vcore), O(cores_per_processor), and O(ram) parameters. type: list elements: dict private_network: diff --git a/plugins/modules/onepassword_info.py b/plugins/modules/onepassword_info.py index 77daf481bf..5689d28fe6 100644 --- a/plugins/modules/onepassword_info.py +++ b/plugins/modules/onepassword_info.py @@ -51,7 +51,7 @@ options: section: type: str description: - - The name of a section within this item containing the specified field (optional, will search all sections if not + - The name of a section within this item containing the specified field (optional, it searches all sections if not specified). vault: type: str @@ -62,8 +62,7 @@ options: auto_login: type: dict description: - - A dictionary containing authentication details. If this is set, M(community.general.onepassword_info) will attempt - to sign in to 1Password automatically. + - A dictionary containing authentication details. If this is set, the module attempts to sign in to 1Password automatically. - Without this option, you must have already logged in using the 1Password CLI before running Ansible. - It is B(highly) recommended to store 1Password credentials in an Ansible Vault. Ensure that the key used to encrypt the Ansible Vault is equal to or greater in strength than the 1Password master password. @@ -72,7 +71,7 @@ options: type: str description: - 1Password subdomain name (V(subdomain).1password.com). - - If this is not specified, the most recent subdomain will be used. + - If this is not specified, the most recent subdomain is used. username: type: str description: @@ -375,7 +374,7 @@ def main(): username=dict(type='str'), master_password=dict(required=True, type='str', no_log=True), secret_key=dict(type='str', no_log=True), - ), default=None), + )), search_terms=dict(required=True, type='list', elements='dict'), ), supports_check_mode=True diff --git a/plugins/modules/oneview_ethernet_network.py b/plugins/modules/oneview_ethernet_network.py index 823fea3b2c..7ba3abb6e4 100644 --- a/plugins/modules/oneview_ethernet_network.py +++ b/plugins/modules/oneview_ethernet_network.py @@ -27,9 +27,9 @@ options: state: description: - Indicates the desired state for the Ethernet Network resource. - - V(present) will ensure data properties are compliant with OneView. - - V(absent) will remove the resource from OneView, if it exists. - - V(default_bandwidth_reset) will reset the network connection template to the default. + - V(present) ensures data properties are compliant with OneView. + - V(absent) removes the resource from OneView, if it exists. + - V(default_bandwidth_reset) resets the network connection template to the default. type: str default: present choices: [present, absent, default_bandwidth_reset] diff --git a/plugins/modules/oneview_fc_network.py b/plugins/modules/oneview_fc_network.py index 312a5dc893..3063e80757 100644 --- a/plugins/modules/oneview_fc_network.py +++ b/plugins/modules/oneview_fc_network.py @@ -24,8 +24,8 @@ options: state: description: - Indicates the desired state for the Fibre Channel Network resource. - - V(present) will ensure data properties are compliant with OneView. - - V(absent) will remove the resource from OneView, if it exists. + - V(present) ensures data properties are compliant with OneView. + - V(absent) removes the resource from OneView, if it exists. type: str choices: ['present', 'absent'] required: true diff --git a/plugins/modules/oneview_fc_network_info.py b/plugins/modules/oneview_fc_network_info.py index af20869dc3..9de22ef55c 100644 --- a/plugins/modules/oneview_fc_network_info.py +++ b/plugins/modules/oneview_fc_network_info.py @@ -87,8 +87,8 @@ class FcNetworkInfoModule(OneViewModuleBase): def __init__(self): argument_spec = dict( - name=dict(required=False, type='str'), - params=dict(required=False, type='dict') + name=dict(type='str'), + params=dict(type='dict') ) super(FcNetworkInfoModule, self).__init__( diff --git a/plugins/modules/oneview_fcoe_network.py b/plugins/modules/oneview_fcoe_network.py index 15128bd372..37fbff9ef4 100644 --- a/plugins/modules/oneview_fcoe_network.py +++ b/plugins/modules/oneview_fcoe_network.py @@ -25,8 +25,8 @@ options: state: description: - Indicates the desired state for the FCoE Network resource. - - V(present) will ensure data properties are compliant with OneView. - - V(absent) will remove the resource from OneView, if it exists. + - V(present) ensures data properties are compliant with OneView. + - V(absent) removes the resource from OneView, if it exists. type: str default: present choices: ['present', 'absent'] diff --git a/plugins/modules/oneview_logical_interconnect_group.py b/plugins/modules/oneview_logical_interconnect_group.py index a45224cb31..2683fc5468 100644 --- a/plugins/modules/oneview_logical_interconnect_group.py +++ b/plugins/modules/oneview_logical_interconnect_group.py @@ -28,8 +28,8 @@ options: state: description: - Indicates the desired state for the Logical Interconnect Group resource. - - V(absent) will remove the resource from OneView, if it exists. - - V(present) will ensure data properties are compliant with OneView. + - V(absent) removes the resource from OneView, if it exists. + - V(present) ensures data properties are compliant with OneView. type: str choices: [absent, present] default: present diff --git a/plugins/modules/oneview_network_set.py b/plugins/modules/oneview_network_set.py index a7fae51f21..ee5d3560a7 100644 --- a/plugins/modules/oneview_network_set.py +++ b/plugins/modules/oneview_network_set.py @@ -27,8 +27,8 @@ options: state: description: - Indicates the desired state for the Network Set resource. - - V(present) will ensure data properties are compliant with OneView. - - V(absent) will remove the resource from OneView, if it exists. + - V(present) ensures data properties are compliant with OneView. + - V(absent) removes the resource from OneView, if it exists. type: str default: present choices: ['present', 'absent'] diff --git a/plugins/modules/online_server_info.py b/plugins/modules/online_server_info.py index d676d1a0e7..a06dae1926 100644 --- a/plugins/modules/online_server_info.py +++ b/plugins/modules/online_server_info.py @@ -41,7 +41,7 @@ online_server_info: type: list elements: dict sample: - "online_server_info": [ + [ { "abuse": "abuse@example.com", "anti_ddos": false, diff --git a/plugins/modules/online_user_info.py b/plugins/modules/online_user_info.py index c76c71f2e5..5b1628adad 100644 --- a/plugins/modules/online_user_info.py +++ b/plugins/modules/online_user_info.py @@ -37,7 +37,7 @@ online_user_info: returned: success type: dict sample: - "online_user_info": { + { "company": "foobar LLC", "email": "foobar@example.com", "first_name": "foo", diff --git a/plugins/modules/open_iscsi.py b/plugins/modules/open_iscsi.py index defb0a072b..80360833a2 100644 --- a/plugins/modules/open_iscsi.py +++ b/plugins/modules/open_iscsi.py @@ -44,7 +44,7 @@ options: login: description: - Whether the target node should be connected. - - When O(target) is omitted, will login to all available. + - When O(target) is omitted, it logins to all available. type: bool aliases: [state] node_auth: @@ -84,7 +84,7 @@ options: description: - Whether the list of target nodes on the portal should be (re)discovered and added to the persistent iSCSI database. - Keep in mind that C(iscsiadm) discovery resets configuration, like C(node.startup) to manual, hence combined with - O(auto_node_startup=true) will always return a changed state. + O(auto_node_startup=true) always returns a changed state. type: bool default: false show_nodes: @@ -95,7 +95,7 @@ options: rescan: description: - Rescan an established session for discovering new targets. - - When O(target) is omitted, will rescan all sessions. + - When O(target) is omitted, it rescans all sessions. type: bool default: false version_added: 4.1.0 diff --git a/plugins/modules/openbsd_pkg.py b/plugins/modules/openbsd_pkg.py index b9a541cc44..e81fce3018 100644 --- a/plugins/modules/openbsd_pkg.py +++ b/plugins/modules/openbsd_pkg.py @@ -36,9 +36,9 @@ options: elements: str state: description: - - V(present) will make sure the package is installed. - - V(latest) will make sure the latest version of the package is installed. - - V(absent) will make sure the specified package is not installed. + - V(present) ensures the package is installed. + - V(latest) ensures the latest version of the package is installed. + - V(absent) ensures the specified package is not installed. choices: [absent, latest, present, installed, removed] default: present type: str @@ -73,7 +73,7 @@ options: type: bool default: false notes: - - When used with a C(loop:) each package will be processed individually, it is much more efficient to pass the list directly + - When used with a C(loop:) each package is processed individually, it is much more efficient to pass the list directly to the O(name) option. """ diff --git a/plugins/modules/opendj_backendprop.py b/plugins/modules/opendj_backendprop.py index cd55a39d51..be4edac125 100644 --- a/plugins/modules/opendj_backendprop.py +++ b/plugins/modules/opendj_backendprop.py @@ -10,10 +10,10 @@ __metaclass__ = type DOCUMENTATION = r""" module: opendj_backendprop -short_description: Will update the backend configuration of OpenDJ using the dsconfig set-backend-prop command +short_description: Update the backend configuration of OpenDJ using the dsconfig set-backend-prop command description: - - This module will update settings for OpenDJ with the command set-backend-prop. - - It will check first using de get-backend-prop if configuration needs to be applied. + - This module updates settings for OpenDJ with the command C(set-backend-prop). + - It checks first using C(get-backend-prop) if configuration needs to be applied. author: - Werner Dijkerman (@dj-wasabi) extends_documentation_fragment: @@ -153,9 +153,9 @@ def main(): opendj_bindir=dict(default="/opt/opendj/bin", type="path"), hostname=dict(required=True), port=dict(required=True), - username=dict(default="cn=Directory Manager", required=False), - password=dict(required=False, no_log=True), - passwordfile=dict(required=False, type="path"), + username=dict(default="cn=Directory Manager"), + password=dict(no_log=True), + passwordfile=dict(type="path"), backend=dict(required=True), name=dict(required=True), value=dict(required=True), diff --git a/plugins/modules/openwrt_init.py b/plugins/modules/openwrt_init.py index bf5ce2b76a..c8c98f2d39 100644 --- a/plugins/modules/openwrt_init.py +++ b/plugins/modules/openwrt_init.py @@ -32,20 +32,19 @@ options: state: type: str description: - - V(started)/V(stopped) are idempotent actions that will not run commands unless necessary. - - V(restarted) will always bounce the service. - - V(reloaded) will always reload. + - V(started)/V(stopped) are idempotent actions that do not run commands unless necessary. + - V(restarted) always bounces the service. + - V(reloaded) always reloads. choices: ['started', 'stopped', 'restarted', 'reloaded'] enabled: description: - - Whether the service should start on boot. B(At least one of state and enabled are required). + - Whether the service should start on boot. B(At least one) of O(state) and O(enabled) are required. type: bool pattern: type: str description: - - If the service does not respond to the 'running' command, name a substring to look for as would be found in the output - of the C(ps) command as a stand-in for a 'running' result. If the string is found, the service will be assumed to - be running. + - If the service does not respond to the C(running) command, name a substring to look for as would be found in the output + of the C(ps) command as a stand-in for a C(running) result. If the string is found, the service is assumed to be running. notes: - One option other than O(name) is required. requirements: diff --git a/plugins/modules/osx_defaults.py b/plugins/modules/osx_defaults.py index bc8a7afd5e..56ff6e1ac1 100644 --- a/plugins/modules/osx_defaults.py +++ b/plugins/modules/osx_defaults.py @@ -69,7 +69,7 @@ options: state: description: - The state of the user defaults. - - If set to V(list) will query the given parameter specified by O(key). Returns V(null) is nothing found or mis-spelled. + - If set to V(list) it queries the given parameter specified by O(key). Returns V(null) is nothing found or misspelled. type: str choices: [absent, list, present] default: present diff --git a/plugins/modules/ovh_ip_failover.py b/plugins/modules/ovh_ip_failover.py index 0734e985f7..425ee614f5 100644 --- a/plugins/modules/ovh_ip_failover.py +++ b/plugins/modules/ovh_ip_failover.py @@ -49,13 +49,13 @@ options: default: true type: bool description: - - If true, the module will wait for the IP address to be moved. If false, exit without waiting. The taskId will be returned + - If V(true), the module waits for the IP address to be moved. If false, exit without waiting. The C(taskId) is returned in module output. wait_task_completion: required: false default: 0 description: - - If not 0, the module will wait for this task ID to be completed. Use O(wait_task_completion) if you want to wait for + - If not V(0), the module waits for this task ID to be completed. Use O(wait_task_completion) if you want to wait for completion of a previously executed task with O(wait_completion=false). You can execute this module repeatedly on a list of failover IPs using O(wait_completion=false) (see examples). type: int diff --git a/plugins/modules/ovh_monthly_billing.py b/plugins/modules/ovh_monthly_billing.py index 438bf7db7f..912b697517 100644 --- a/plugins/modules/ovh_monthly_billing.py +++ b/plugins/modules/ovh_monthly_billing.py @@ -98,10 +98,10 @@ def main(): argument_spec=dict( project_id=dict(required=True), instance_id=dict(required=True), - endpoint=dict(required=False), - application_key=dict(required=False, no_log=True), - application_secret=dict(required=False, no_log=True), - consumer_key=dict(required=False, no_log=True), + endpoint=dict(), + application_key=dict(no_log=True), + application_secret=dict(no_log=True), + consumer_key=dict(no_log=True), ), supports_check_mode=True ) diff --git a/plugins/modules/packet_device.py b/plugins/modules/packet_device.py index da04f52f6f..f17db56c8c 100644 --- a/plugins/modules/packet_device.py +++ b/plugins/modules/packet_device.py @@ -111,9 +111,9 @@ options: state: description: - Desired state of the device. - - If set to V(present) (the default), the module call will return immediately after the device-creating HTTP request - successfully returns. - - If set to V(active), the module call will block until all the specified devices are in state active due to the Packet + - If set to V(present) (the default), the module call returns immediately after the device-creating HTTP request successfully + returns. + - If set to V(active), the module call blocks until all the specified devices are in state active due to the Packet API, or until O(wait_timeout). choices: [present, absent, active, inactive, rebooted] default: present @@ -127,16 +127,16 @@ options: wait_for_public_IPv: description: - Whether to wait for the instance to be assigned a public IPv4/IPv6 address. - - If set to 4, it will wait until IPv4 is assigned to the instance. - - If set to 6, wait until public IPv6 is assigned to the instance. + - If set to V(4), it waits until IPv4 is assigned to the instance. + - If set to V(6), it waits until public IPv6 is assigned to the instance. choices: [4, 6] type: int wait_timeout: description: - How long (seconds) to wait either for automatic IP address assignment, or for the device to reach the V(active) state. - - If O(wait_for_public_IPv) is set and O(state=active), the module will wait for both events consequently, applying - the timeout twice. + - If O(wait_for_public_IPv) is set and O(state=active), the module waits for both events consequently, applying the + timeout twice. default: 900 type: int @@ -258,12 +258,6 @@ EXAMPLES = r""" """ RETURN = r""" -changed: - description: True if a device was altered in any way (created, modified or removed). - type: bool - sample: true - returned: success - devices: description: Information about each device that was processed. type: list diff --git a/plugins/modules/packet_ip_subnet.py b/plugins/modules/packet_ip_subnet.py index ab74dac840..0029623a10 100644 --- a/plugins/modules/packet_ip_subnet.py +++ b/plugins/modules/packet_ip_subnet.py @@ -75,11 +75,11 @@ options: state: description: - Desired state of the IP subnet on the specified device. - - With O(state=present), you must specify either O(hostname) or O(device_id). Subnet with given CIDR will then be assigned + - With O(state=present), you must specify either O(hostname) or O(device_id). Subnet with given CIDR is then assigned to the specified device. - - With O(state=absent), you can specify either O(hostname) or O(device_id). The subnet will be removed from specified + - With O(state=absent), you can specify either O(hostname) or O(device_id). The subnet is then removed from specified devices. - - If you leave both O(hostname) and O(device_id) empty, the subnet will be removed from any device it is assigned to. + - If you leave both O(hostname) and O(device_id) empty, the subnet is then removed from any device it is assigned to. choices: ['present', 'absent'] default: 'present' type: str @@ -123,12 +123,6 @@ EXAMPLES = r""" """ RETURN = r""" -changed: - description: True if an IP address assignments were altered in any way (created or removed). - type: bool - sample: true - returned: success - device_id: type: str description: UUID of the device associated with the specified IP address. diff --git a/plugins/modules/packet_project.py b/plugins/modules/packet_project.py index d61c9e598b..afadec36be 100644 --- a/plugins/modules/packet_project.py +++ b/plugins/modules/packet_project.py @@ -110,12 +110,6 @@ EXAMPLES = r""" """ RETURN = r""" -changed: - description: True if a project was created or removed. - type: bool - sample: true - returned: success - name: description: Name of addressed project. type: str diff --git a/plugins/modules/packet_sshkey.py b/plugins/modules/packet_sshkey.py index 3073791b2a..ec76a17b4c 100644 --- a/plugins/modules/packet_sshkey.py +++ b/plugins/modules/packet_sshkey.py @@ -35,7 +35,7 @@ options: type: str label: description: - - Label for the key. If you keep it empty, it will be read from key string. + - Label for the key. If you keep it empty, it is read from key string. type: str aliases: [name] id: @@ -85,11 +85,6 @@ EXAMPLES = r""" """ RETURN = r""" -changed: - description: True if a sshkey was created or removed. - type: bool - sample: true - returned: always sshkeys: description: Information about sshkeys that were created/removed. type: list diff --git a/plugins/modules/pacman.py b/plugins/modules/pacman.py index 38a98bba60..359cbc51d1 100644 --- a/plugins/modules/pacman.py +++ b/plugins/modules/pacman.py @@ -41,9 +41,9 @@ options: state: description: - Whether to install (V(present) or V(installed), V(latest)), or remove (V(absent) or V(removed)) a package. - - V(present) and V(installed) will simply ensure that a desired package is installed. - - V(latest) will update the specified package if it is not of the latest available version. - - V(absent) and V(removed) will remove the specified package. + - V(present) and V(installed) simply ensure that a desired package is installed. + - V(latest) updates the specified package if it is not of the latest available version. + - V(absent) and V(removed) remove the specified package. default: present choices: [absent, installed, latest, present, removed] type: str @@ -116,20 +116,20 @@ options: reason_for: description: - Set the install reason for V(all) packages or only for V(new) packages. - - In case of O(state=latest) already installed packages which will be updated to a newer version are not counted as - V(new). + - In case of O(state=latest) already installed packages which are updated to a newer version are not counted as V(new). default: new choices: [all, new] type: str version_added: 5.4.0 notes: - - When used with a C(loop:) each package will be processed individually, it is much more efficient to pass the list directly + - When used with a C(loop:) each package is processed individually, it is much more efficient to pass the list directly to the O(name) option. - To use an AUR helper (O(executable) option), a few extra setup steps might be required beforehand. For example, a dedicated build user with permissions to install packages could be necessary. - 'In the tests, while using C(yay) as the O(executable) option, the module failed to install AUR packages with the error: C(error: target not found: ).' + - The common return values `stdout` and `stderr` are returned upon success, when needed, since community.general 4.1.0. """ RETURN = r""" @@ -142,7 +142,7 @@ packages: returned: success and O(name) is specified or O(upgrade=true) type: list elements: str - sample: [package, other-package] + sample: ["package", "other-package"] cache_updated: description: @@ -152,22 +152,6 @@ cache_updated: type: bool sample: false version_added: 4.6.0 - -stdout: - description: - - Output from pacman. - returned: success, when needed - type: str - sample: ":: Synchronizing package databases... core is up to date :: Starting full system upgrade..." - version_added: 4.1.0 - -stderr: - description: - - Error output from pacman. - returned: success, when needed - type: str - sample: "warning: libtool: local (2.4.6+44+gb9b44533-14) is newer than core (2.4.6+42+gb88cebd5-15)\nwarning ..." - version_added: 4.1.0 """ EXAMPLES = r""" diff --git a/plugins/modules/pacman_key.py b/plugins/modules/pacman_key.py index 37d17e7516..851655f9fc 100644 --- a/plugins/modules/pacman_key.py +++ b/plugins/modules/pacman_key.py @@ -18,9 +18,9 @@ description: - Add or remove gpg keys from the pacman keyring. notes: - Use full-length key ID (40 characters). - - Keys will be verified when using O(data), O(file), or O(url) unless O(verify) is overridden. - - Keys will be locally signed after being imported into the keyring. - - If the key ID exists in the keyring, the key will not be added unless O(force_update) is specified. + - Keys are verified when using O(data), O(file), or O(url) unless O(verify) is overridden. + - Keys are locally signed after being imported into the keyring. + - If the key ID exists in the keyring, the key is not added unless O(force_update) is specified. - O(data), O(file), O(url), and O(keyserver) are mutually exclusive. requirements: - gpg @@ -72,7 +72,7 @@ options: keyring: description: - The full path to the keyring folder on the remote server. - - If not specified, module will use pacman's default (V(/etc/pacman.d/gnupg)). + - If not specified, module uses pacman's default (V(/etc/pacman.d/gnupg)). - Useful if the remote system requires an alternative gnupg directory. type: path default: /etc/pacman.d/gnupg diff --git a/plugins/modules/pagerduty.py b/plugins/modules/pagerduty.py index 5de20a5270..78443e8410 100644 --- a/plugins/modules/pagerduty.py +++ b/plugins/modules/pagerduty.py @@ -13,7 +13,7 @@ DOCUMENTATION = r""" module: pagerduty short_description: Create PagerDuty maintenance windows description: - - This module will let you create PagerDuty maintenance windows. + - This module lets you create PagerDuty maintenance windows. author: - "Andrew Newdigate (@suprememoocow)" - "Dylan Silva (@thaumos)" @@ -79,8 +79,8 @@ options: default: Created by Ansible validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. type: bool default: true """ @@ -242,15 +242,15 @@ def main(): module = AnsibleModule( argument_spec=dict( state=dict(required=True, choices=['running', 'started', 'ongoing', 'absent']), - name=dict(required=False), - user=dict(required=False), + name=dict(), + user=dict(), token=dict(required=True, no_log=True), - service=dict(required=False, type='list', elements='str', aliases=["services"]), - window_id=dict(required=False), - requester_id=dict(required=False), - hours=dict(default='1', required=False), # @TODO change to int? - minutes=dict(default='0', required=False), # @TODO change to int? - desc=dict(default='Created by Ansible', required=False), + service=dict(type='list', elements='str', aliases=["services"]), + window_id=dict(), + requester_id=dict(), + hours=dict(default='1'), # @TODO change to int? + minutes=dict(default='0'), # @TODO change to int? + desc=dict(default='Created by Ansible'), validate_certs=dict(default=True, type='bool'), ) ) diff --git a/plugins/modules/pagerduty_alert.py b/plugins/modules/pagerduty_alert.py index 347e849822..e3d93e8718 100644 --- a/plugins/modules/pagerduty_alert.py +++ b/plugins/modules/pagerduty_alert.py @@ -12,7 +12,7 @@ DOCUMENTATION = r""" module: pagerduty_alert short_description: Trigger, acknowledge or resolve PagerDuty incidents description: - - This module will let you trigger, acknowledge or resolve a PagerDuty incident by sending events. + - This module lets you trigger, acknowledge or resolve a PagerDuty incident by sending events. author: - "Amanpreet Singh (@ApsOps)" - "Xiao Shen (@xshen1)" @@ -43,7 +43,7 @@ options: service_id: type: str description: - - ID of PagerDuty service when incidents will be triggered, acknowledged or resolved. + - ID of PagerDuty service when incidents are triggered, acknowledged or resolved. - Required if O(api_version=v1). service_key: type: str @@ -92,10 +92,9 @@ options: type: str description: - For O(state=triggered) - Required. Short description of the problem that led to this trigger. This field (or a truncated - version) will be used when generating phone calls, SMS messages and alert emails. It will also appear on the incidents - tables in the PagerDuty UI. The maximum length is 1024 characters. - - For O(state=acknowledged) or O(state=resolved) - Text that will appear in the incident's log associated with this - event. + version) is used when generating phone calls, SMS messages and alert emails. It also appears on the incidents tables + in the PagerDuty UI. The maximum length is 1024 characters. + - For O(state=acknowledged) or O(state=resolved) - Text that appears in the incident's log associated with this event. default: Created via Ansible incident_class: type: str @@ -106,12 +105,11 @@ options: type: str description: - Identifies the incident to which this O(state) should be applied. - - For O(state=triggered) - If there is no open (in other words unresolved) incident with this key, a new one will be - created. If there is already an open incident with a matching key, this event will be appended to that incident's - log. The event key provides an easy way to 'de-dup' problem reports. If no O(incident_key) is provided, then it will - be generated by PagerDuty. + - For O(state=triggered) - If there is no open (in other words unresolved) incident with this key, a new one is created. + If there is already an open incident with a matching key, this event is appended to that incident's log. The event + key provides an easy way to 'de-dup' problem reports. If no O(incident_key) is provided, then it is generated by PagerDuty. - For O(state=acknowledged) or O(state=resolved) - This should be the incident_key you received back when the incident - was first opened by a trigger event. Acknowledge events referencing resolved or nonexistent incidents will be discarded. + was first opened by a trigger event. Acknowledge events referencing resolved or nonexistent incidents is discarded. link_url: type: str description: diff --git a/plugins/modules/pagerduty_change.py b/plugins/modules/pagerduty_change.py index 2b63859f1d..de77016969 100644 --- a/plugins/modules/pagerduty_change.py +++ b/plugins/modules/pagerduty_change.py @@ -13,8 +13,8 @@ module: pagerduty_change short_description: Track a code or infrastructure change as a PagerDuty change event version_added: 1.3.0 description: - - This module will let you create a PagerDuty change event each time the module is run. - - This is not an idempotent action and a new change event will be created each time it is run. + - This module lets you create a PagerDuty change event each time the module is run. + - This is not an idempotent action and a new change event is created each time it is run. author: - Adam Vaughan (@adamvaughan) requirements: @@ -82,7 +82,7 @@ options: type: str validate_certs: description: - - If V(false), SSL certificates for the target URL will not be validated. This should only be used on personally controlled + - If V(false), SSL certificates for the target URL are not validated. This should only be used on personally controlled sites using self-signed certificates. required: false default: true @@ -121,15 +121,14 @@ def main(): argument_spec=dict( integration_key=dict(required=True, type='str', no_log=True), summary=dict(required=True, type='str'), - source=dict(required=False, default='Ansible', type='str'), - user=dict(required=False, type='str'), - repo=dict(required=False, type='str'), - revision=dict(required=False, type='str'), - environment=dict(required=False, type='str'), - link_url=dict(required=False, type='str'), - link_text=dict(required=False, type='str'), - url=dict(required=False, - default='https://events.pagerduty.com/v2/change/enqueue', type='str'), + source=dict(default='Ansible', type='str'), + user=dict(type='str'), + repo=dict(type='str'), + revision=dict(type='str'), + environment=dict(type='str'), + link_url=dict(type='str'), + link_text=dict(type='str'), + url=dict(default='https://events.pagerduty.com/v2/change/enqueue', type='str'), validate_certs=dict(default=True, type='bool') ), supports_check_mode=True diff --git a/plugins/modules/pagerduty_user.py b/plugins/modules/pagerduty_user.py index e03342c792..0830af97f3 100644 --- a/plugins/modules/pagerduty_user.py +++ b/plugins/modules/pagerduty_user.py @@ -188,7 +188,7 @@ def main(): state=dict(type='str', default='present', choices=['present', 'absent']), pd_role=dict(type='str', default='responder', choices=['global_admin', 'manager', 'responder', 'observer', 'stakeholder', 'limited_stakeholder', 'restricted_access']), - pd_teams=dict(type='list', elements='str', required=False)), + pd_teams=dict(type='list', elements='str')), required_if=[['state', 'present', ['pd_teams']], ], supports_check_mode=True, ) diff --git a/plugins/modules/pam_limits.py b/plugins/modules/pam_limits.py index d21781ac6c..536ba59662 100644 --- a/plugins/modules/pam_limits.py +++ b/plugins/modules/pam_limits.py @@ -80,7 +80,7 @@ options: default: false use_min: description: - - If set to V(true), the minimal value will be used or conserved. + - If set to V(true), the minimal value is used or conserved. - If the specified value is inferior to the value in the file, file content is replaced with the new value, else content is not modified. required: false @@ -88,7 +88,7 @@ options: default: false use_max: description: - - If set to V(true), the maximal value will be used or conserved. + - If set to V(true), the maximal value is used or conserved. - If the specified value is superior to the value in the file, file content is replaced with the new value, else content is not modified. required: false @@ -183,7 +183,7 @@ def main(): use_min=dict(default=False, type='bool'), backup=dict(default=False, type='bool'), dest=dict(default=limits_conf, type='str'), - comment=dict(required=False, default='', type='str') + comment=dict(default='', type='str') ), supports_check_mode=True, ) diff --git a/plugins/modules/pamd.py b/plugins/modules/pamd.py index ec2127483e..327316aa37 100644 --- a/plugins/modules/pamd.py +++ b/plugins/modules/pamd.py @@ -68,21 +68,20 @@ options: type: str module_arguments: description: - - When O(state=updated), the O(module_arguments) will replace existing module_arguments. - - When O(state=args_absent) args matching those listed in O(module_arguments) will be removed. + - When O(state=updated), the O(module_arguments) replace existing module_arguments. + - When O(state=args_absent) args matching those listed in O(module_arguments) are removed. - When O(state=args_present) any args listed in O(module_arguments) are added if missing from the existing rule. - - Furthermore, if the module argument takes a value denoted by C(=), the value will be changed to that specified in - module_arguments. + - Furthermore, if the module argument takes a value denoted by C(=), the value changes to that specified in module_arguments. type: list elements: str state: description: - - The default of V(updated) will modify an existing rule if type, control and module_path all match an existing rule. - - With V(before), the new rule will be inserted before a rule matching type, control and module_path. - - Similarly, with V(after), the new rule will be inserted after an existing rulematching type, control and module_path. + - The default of V(updated) modifies an existing rule if type, control and module_path all match an existing rule. + - With V(before), the new rule is inserted before a rule matching type, control and module_path. + - Similarly, with V(after), the new rule is inserted after an existing rulematching type, control and module_path. - With either V(before) or V(after) O(new_type), O(new_control), and O(new_module_path) must all be specified. - - If state is V(args_absent) or V(args_present), O(new_type), O(new_control), and O(new_module_path) will be ignored. - - State V(absent) will remove the rule. + - If state is V(args_absent) or V(args_present), O(new_type), O(new_control), and O(new_module_path) are ignored. + - State V(absent) removes the rule. type: str choices: [absent, before, after, args_absent, args_present, updated] default: updated diff --git a/plugins/modules/parted.py b/plugins/modules/parted.py index 7fc9f320d2..4bf0897afc 100644 --- a/plugins/modules/parted.py +++ b/plugins/modules/parted.py @@ -50,7 +50,7 @@ options: type: int unit: description: - - Selects the current default unit that Parted will use to display locations and capacities on the disk and to interpret + - Selects the current default unit that Parted uses to display locations and capacities on the disk and to interpret those given by the user if they are not suffixed by an unit. - When fetching information about a disk, it is recommended to always specify a unit. type: str @@ -59,8 +59,7 @@ options: label: description: - Disk label type or partition table to use. - - If O(device) already contains a different label, it will be changed to O(label) and any previous partitions will be - lost. + - If O(device) already contains a different label, it is changed to O(label) and any previous partitions are lost. - A O(name) must be specified for a V(gpt) partition table. type: str choices: [aix, amiga, bsd, dvh, gpt, loop, mac, msdos, pc98, sun] @@ -74,8 +73,8 @@ options: default: primary part_start: description: - - Where the partition will start as offset from the beginning of the disk, that is, the "distance" from the start of - the disk. Negative numbers specify distance from the end of the disk. + - Where the partition starts as offset from the beginning of the disk, that is, the "distance" from the start of the + disk. Negative numbers specify distance from the end of the disk. - The distance can be specified with all the units supported by parted (except compat) and it is case sensitive, for example V(10GiB), V(15%). - Using negative values may require setting of O(fs_type) (see notes). @@ -83,8 +82,8 @@ options: default: 0% part_end: description: - - Where the partition will end as offset from the beginning of the disk, that is, the "distance" from the start of the - disk. Negative numbers specify distance from the end of the disk. + - Where the partition ends as offset from the beginning of the disk, that is, the "distance" from the start of the disk. + Negative numbers specify distance from the end of the disk. - The distance can be specified with all the units supported by parted (except compat) and it is case sensitive, for example V(10GiB), V(15%). type: str @@ -100,13 +99,13 @@ options: state: description: - Whether to create or delete a partition. - - If set to V(info) the module will only return the device information. + - If set to V(info) the module only returns the device information. type: str choices: [absent, present, info] default: info fs_type: description: - - If specified and the partition does not exist, will set filesystem type to given partition. + - If specified and the partition does not exist, sets filesystem type to given partition. - Parameter optional, but see notes below about negative O(part_start) values. type: str version_added: '0.2.0' diff --git a/plugins/modules/pear.py b/plugins/modules/pear.py index 05135925bc..5eb84b509d 100644 --- a/plugins/modules/pear.py +++ b/plugins/modules/pear.py @@ -47,14 +47,14 @@ options: description: - List of regular expressions that can be used to detect prompts during pear package installation to answer the expected question. - - Prompts will be processed in the same order as the packages list. + - Prompts are processed in the same order as the packages list. - You can optionally specify an answer to any question in the list. - - If no answer is provided, the list item will only contain the regular expression. - - "To specify an answer, the item will be a dict with the regular expression as key and the answer as value C(my_regular_expression: + - If no answer is provided, the list item must contain only the regular expression. + - "To specify an answer, the item must be a dictionary with the regular expression as key and the answer as value C(my_regular_expression: 'an_answer')." - You can provide a list containing items with or without answer. - - A prompt list can be shorter or longer than the packages list but will issue a warning. - - If you want to specify that a package will not need prompts in the middle of a list, V(null). + - A prompt list can be shorter or longer than the packages list but it issues a warning. + - If you want to specify that a package does not need prompts in the middle of a list, V(null). type: list elements: raw version_added: 0.2.0 @@ -293,8 +293,8 @@ def main(): argument_spec=dict( name=dict(aliases=['pkg'], required=True), state=dict(default='present', choices=['present', 'installed', "latest", 'absent', 'removed']), - executable=dict(default=None, required=False, type='path'), - prompts=dict(default=None, required=False, type='list', elements='raw'), + executable=dict(type='path'), + prompts=dict(type='list', elements='raw'), ), supports_check_mode=True) diff --git a/plugins/modules/pingdom.py b/plugins/modules/pingdom.py index 031085e61e..7c82063ab9 100644 --- a/plugins/modules/pingdom.py +++ b/plugins/modules/pingdom.py @@ -12,7 +12,7 @@ DOCUMENTATION = r""" module: pingdom short_description: Pause/unpause Pingdom alerts description: - - This module will let you pause/unpause Pingdom alerts. + - This module lets you pause/unpause Pingdom alerts. author: - "Dylan Silva (@thaumos)" - "Justin Johns (!UNKNOWN)" diff --git a/plugins/modules/pip_package_info.py b/plugins/modules/pip_package_info.py index ffe2e9f401..80bdedf7fe 100644 --- a/plugins/modules/pip_package_info.py +++ b/plugins/modules/pip_package_info.py @@ -20,8 +20,8 @@ extends_documentation_fragment: options: clients: description: - - A list of the pip executables that will be used to get the packages. They can be supplied with the full path or just - the executable name, for example V(pip3.7). + - A list of the pip executables that are used to get the packages. They can be supplied with the full path or just the + executable name, for example V(pip3.7). default: ['pip'] required: false type: list @@ -59,37 +59,39 @@ packages: returned: always type: dict sample: - "packages": { - "pip": { - "Babel": [ - { - "name": "Babel", - "source": "pip", - "version": "2.6.0" - } - ], - "Flask": [ - { - "name": "Flask", - "source": "pip", - "version": "1.0.2" - } - ], - "Flask-SQLAlchemy": [ - { - "name": "Flask-SQLAlchemy", - "source": "pip", - "version": "2.3.2" - } - ], - "Jinja2": [ - { - "name": "Jinja2", - "source": "pip", - "version": "2.10" - } - ], - }, + { + "packages": { + "pip": { + "Babel": [ + { + "name": "Babel", + "source": "pip", + "version": "2.6.0" + } + ], + "Flask": [ + { + "name": "Flask", + "source": "pip", + "version": "1.0.2" + } + ], + "Flask-SQLAlchemy": [ + { + "name": "Flask-SQLAlchemy", + "source": "pip", + "version": "2.3.2" + } + ], + "Jinja2": [ + { + "name": "Jinja2", + "source": "pip", + "version": "2.10" + } + ] + } + } } """ diff --git a/plugins/modules/pipx.py b/plugins/modules/pipx.py index 5633640ea4..778810be0c 100644 --- a/plugins/modules/pipx.py +++ b/plugins/modules/pipx.py @@ -154,7 +154,7 @@ options: version_added: 9.4.0 requirements: - When using O(name) with version specifiers, the Python package C(packaging) is required. - - If the package C(packaging) is at a version lesser than C(22.0.0), it will fail silently when processing invalid specifiers, + - If the package C(packaging) is at a version lesser than C(22.0.0), it fails silently when processing invalid specifiers, like C(tox<<<<4.0). author: - "Alexei Znamensky (@russoz)" diff --git a/plugins/modules/pipx_info.py b/plugins/modules/pipx_info.py index a381421aba..fc74df496a 100644 --- a/plugins/modules/pipx_info.py +++ b/plugins/modules/pipx_info.py @@ -115,7 +115,15 @@ cmd: returned: success type: list elements: str - sample: ["/usr/bin/python3.10", "-m", "pipx", "list", "--include-injected", "--json"] + sample: + [ + "/usr/bin/python3.10", + "-m", + "pipx", + "list", + "--include-injected", + "--json" + ] version: description: Version of pipx. diff --git a/plugins/modules/pkg5_publisher.py b/plugins/modules/pkg5_publisher.py index 01c9d48cce..26abded4e2 100644 --- a/plugins/modules/pkg5_publisher.py +++ b/plugins/modules/pkg5_publisher.py @@ -16,7 +16,7 @@ author: "Peter Oliver (@mavit)" short_description: Manages Solaris 11 Image Packaging System publishers description: - IPS packages are the native packages in Solaris 11 and higher. - - This modules will configure which publishers a client will download IPS packages from. + - This module configures which publishers a client downloads IPS packages from. extends_documentation_fragment: - community.general.attributes attributes: diff --git a/plugins/modules/pkgin.py b/plugins/modules/pkgin.py index 21a3b10016..8695f1b5af 100644 --- a/plugins/modules/pkgin.py +++ b/plugins/modules/pkgin.py @@ -26,7 +26,7 @@ author: - "Shaun Zinck (@szinck)" - "Jasper Lievisse Adriaanse (@jasperla)" notes: - - 'Known bug with pkgin < 0.8.0: if a package is removed and another package depends on it, the other package will be silently + - 'Known bug with pkgin < 0.8.0: if a package is removed and another package depends on it, the other package is silently removed as well.' extends_documentation_fragment: - community.general.attributes diff --git a/plugins/modules/pkgng.py b/plugins/modules/pkgng.py index 582abd3649..58eafb9e0c 100644 --- a/plugins/modules/pkgng.py +++ b/plugins/modules/pkgng.py @@ -30,7 +30,7 @@ options: name: description: - Name or list of names of packages to install/remove. - - With O(name=*), O(state=latest) will operate, but O(state=present) and O(state=absent) will be noops. + - With O(name=*), O(state=latest) operates, but O(state=present) and O(state=absent) are noops. required: true aliases: [pkg] type: list @@ -65,19 +65,19 @@ options: type: str rootdir: description: - - For C(pkgng) versions 1.5 and later, pkg will install all packages within the specified root directory. + - For C(pkgng) versions 1.5 and later, pkg installs all packages within the specified root directory. - Can not be used together with O(chroot) or O(jail) options. required: false type: path chroot: description: - - Pkg will chroot in the specified environment. + - Pkg chroots in the specified environment. - Can not be used together with O(rootdir) or O(jail) options. required: false type: path jail: description: - - Pkg will execute in the given jail name or ID. + - Pkg executes in the given jail name or ID. - Can not be used together with O(chroot) or O(rootdir) options. type: str autoremove: @@ -103,8 +103,8 @@ options: version_added: 9.3.0 author: "bleader (@bleader)" notes: - - When using pkgsite, be careful that already in cache packages will not be downloaded again. - - When used with a C(loop:) each package will be processed individually, it is much more efficient to pass the list directly + - When using pkgsite, be careful that already in cache packages are not downloaded again. + - When used with a C(loop:) each package is processed individually, it is much more efficient to pass the list directly to the O(name) option. """ @@ -422,17 +422,17 @@ def autoremove_packages(module, run_pkgng): def main(): module = AnsibleModule( argument_spec=dict( - state=dict(default="present", choices=["present", "latest", "absent"], required=False), + state=dict(default="present", choices=["present", "latest", "absent"]), name=dict(aliases=["pkg"], required=True, type='list', elements='str'), cached=dict(default=False, type='bool'), - ignore_osver=dict(default=False, required=False, type='bool'), - annotation=dict(required=False, type='list', elements='str'), - pkgsite=dict(required=False), - rootdir=dict(required=False, type='path'), - chroot=dict(required=False, type='path'), - jail=dict(required=False, type='str'), + ignore_osver=dict(default=False, type='bool'), + annotation=dict(type='list', elements='str'), + pkgsite=dict(), + rootdir=dict(type='path'), + chroot=dict(type='path'), + jail=dict(type='str'), autoremove=dict(default=False, type='bool'), - use_globs=dict(default=True, required=False, type='bool'), + use_globs=dict(default=True, type='bool'), ), supports_check_mode=True, mutually_exclusive=[["rootdir", "chroot", "jail"]]) diff --git a/plugins/modules/pkgutil.py b/plugins/modules/pkgutil.py index 7eb18cdb20..a40bff06ec 100644 --- a/plugins/modules/pkgutil.py +++ b/plugins/modules/pkgutil.py @@ -17,7 +17,7 @@ module: pkgutil short_description: OpenCSW package management on Solaris description: - This module installs, updates and removes packages from the OpenCSW project for Solaris. - - Unlike the M(community.general.svr4pkg) module, it will resolve and download dependencies. + - Unlike the M(community.general.svr4pkg) module, it resolves and downloads dependencies. - See U(https://www.opencsw.org/) for more information about the project. author: - Alexander Winkler (@dermute) @@ -50,7 +50,7 @@ options: state: description: - Whether to install (V(present)/V(installed)), or remove (V(absent)/V(removed)) packages. - - The upgrade (V(latest)) operation will update/install the packages to the latest version available. + - The upgrade (V(latest)) operation updates/installs the packages to the latest version available. type: str required: true choices: [absent, installed, latest, present, removed] diff --git a/plugins/modules/pmem.py b/plugins/modules/pmem.py index 66c1d27033..1555ec842e 100644 --- a/plugins/modules/pmem.py +++ b/plugins/modules/pmem.py @@ -46,9 +46,9 @@ options: type: int reserved: description: - - Percentage of the capacity to reserve (V(0)-V(100)). O(reserved) will not be mapped into the system physical address - space and will be presented as reserved capacity with Show Device and Show Memory Resources Commands. - - O(reserved) will be set automatically if this is not configured. + - Percentage of the capacity to reserve (V(0)-V(100)). O(reserved) is not mapped into the system physical address space + and is presented as reserved capacity with Show Device and Show Memory Resources Commands. + - O(reserved) is set automatically if this is not configured. type: int required: false socket: @@ -147,20 +147,21 @@ result: namespace: description: The list of the detail of namespace. type: list - sample: [ - { - "appdirect": 111669149696, - "memorymode": 970662608896, - "reserved": 3626500096, - "socket": 0 - }, - { - "appdirect": 111669149696, - "memorymode": 970662608896, - "reserved": 3626500096, - "socket": 1 - } - ] + sample: + [ + { + "appdirect": 111669149696, + "memorymode": 970662608896, + "reserved": 3626500096, + "socket": 0 + }, + { + "appdirect": 111669149696, + "memorymode": 970662608896, + "reserved": 3626500096, + "socket": 1 + } + ] """ EXAMPLES = r""" diff --git a/plugins/modules/pnpm.py b/plugins/modules/pnpm.py index c4dbf55dff..2dad63a608 100644 --- a/plugins/modules/pnpm.py +++ b/plugins/modules/pnpm.py @@ -77,14 +77,14 @@ options: production: description: - Install dependencies in production mode. - - Pnpm will ignore any dependencies under C(devDependencies) in package.json. + - Pnpm ignores any dependencies under C(devDependencies) in package.json. required: false type: bool default: false dev: description: - Install dependencies in development mode. - - Pnpm will ignore any regular dependencies in C(package.json). + - Pnpm ignores any regular dependencies in C(package.json). required: false default: false type: bool @@ -339,11 +339,11 @@ class Pnpm(object): def main(): arg_spec = dict( - name=dict(default=None), - alias=dict(default=None), - path=dict(default=None, type="path"), - version=dict(default=None), - executable=dict(default=None, type="path"), + name=dict(), + alias=dict(), + path=dict(type="path"), + version=dict(), + executable=dict(type="path"), ignore_scripts=dict(default=False, type="bool"), no_optional=dict(default=False, type="bool"), production=dict(default=False, type="bool"), diff --git a/plugins/modules/portage.py b/plugins/modules/portage.py index 4a1cb1b990..8a00b934dd 100644 --- a/plugins/modules/portage.py +++ b/plugins/modules/portage.py @@ -193,7 +193,7 @@ options: quietfail: description: - Suppresses display of the build log on stdout (--quiet-fail). - - Only the die message and the path of the build log will be displayed on stdout. + - Only the die message and the path of the build log are displayed on stdout. type: bool default: false @@ -510,13 +510,13 @@ portage_absent_states = ['absent', 'unmerged', 'removed'] def main(): module = AnsibleModule( argument_spec=dict( - package=dict(type='list', elements='str', default=None, aliases=['name']), + package=dict(type='list', elements='str', aliases=['name']), state=dict( default=portage_present_states[0], choices=portage_present_states + portage_absent_states, ), update=dict(default=False, type='bool'), - backtrack=dict(default=None, type='int'), + backtrack=dict(type='int'), deep=dict(default=False, type='bool'), newuse=dict(default=False, type='bool'), changed_use=dict(default=False, type='bool'), @@ -525,18 +525,18 @@ def main(): nodeps=dict(default=False, type='bool'), onlydeps=dict(default=False, type='bool'), depclean=dict(default=False, type='bool'), - select=dict(default=None, type='bool'), + select=dict(type='bool'), quiet=dict(default=False, type='bool'), verbose=dict(default=False, type='bool'), - sync=dict(default=None, choices=['yes', 'web', 'no']), + sync=dict(choices=['yes', 'web', 'no']), getbinpkgonly=dict(default=False, type='bool'), getbinpkg=dict(default=False, type='bool'), usepkgonly=dict(default=False, type='bool'), usepkg=dict(default=False, type='bool'), keepgoing=dict(default=False, type='bool'), - jobs=dict(default=None, type='int'), - loadavg=dict(default=None, type='float'), - withbdeps=dict(default=None, type='bool'), + jobs=dict(type='int'), + loadavg=dict(type='float'), + withbdeps=dict(type='bool'), quietbuild=dict(default=False, type='bool'), quietfail=dict(default=False, type='bool'), ), diff --git a/plugins/modules/pritunl_org.py b/plugins/modules/pritunl_org.py index f264fae875..f87813031b 100644 --- a/plugins/modules/pritunl_org.py +++ b/plugins/modules/pritunl_org.py @@ -35,9 +35,9 @@ options: type: bool default: false description: - - If O(force) is V(true) and O(state) is V(absent), the module will delete the organization, no matter if it contains - users or not. By default O(force) is V(false), which will cause the module to fail the deletion of the organization - when it contains users. + - If O(force) is V(true) and O(state) is V(absent), the module deletes the organization, no matter if it contains users + or not. By default O(force) is V(false), which causes the module to fail the deletion of the organization when it + contains users. state: type: str default: 'present' @@ -176,10 +176,8 @@ def main(): argument_spec.update( dict( name=dict(required=True, type="str", aliases=["org"]), - force=dict(required=False, type="bool", default=False), - state=dict( - required=False, choices=["present", "absent"], default="present" - ), + force=dict(type="bool", default=False), + state=dict(choices=["present", "absent"], default="present"), ) ) diff --git a/plugins/modules/pritunl_org_info.py b/plugins/modules/pritunl_org_info.py index c8e75190f1..952acd8963 100644 --- a/plugins/modules/pritunl_org_info.py +++ b/plugins/modules/pritunl_org_info.py @@ -27,7 +27,7 @@ options: - org default: null description: - - Name of the Pritunl organization to search for. If none provided, the module will return all Pritunl organizations. + - Name of the Pritunl organization to search for. If none provided, the module returns all Pritunl organizations. """ EXAMPLES = r""" @@ -113,7 +113,7 @@ def main(): argument_spec.update( dict( - organization=dict(required=False, type="str", default=None, aliases=["org"]) + organization=dict(type="str", aliases=["org"]) ) ) diff --git a/plugins/modules/pritunl_user.py b/plugins/modules/pritunl_user.py index c8cc9ea9c6..45de07eba6 100644 --- a/plugins/modules/pritunl_user.py +++ b/plugins/modules/pritunl_user.py @@ -320,18 +320,14 @@ def main(): argument_spec.update( dict( organization=dict(required=True, type="str", aliases=["org"]), - state=dict( - required=False, choices=["present", "absent"], default="present" - ), + state=dict(choices=["present", "absent"], default="present"), user_name=dict(required=True, type="str"), - user_type=dict( - required=False, choices=["client", "server"], default="client" - ), - user_email=dict(required=False, type="str", default=None), - user_groups=dict(required=False, type="list", elements="str", default=None), - user_disabled=dict(required=False, type="bool", default=None), - user_gravatar=dict(required=False, type="bool", default=None), - user_mac_addresses=dict(required=False, type="list", elements="str", default=None), + user_type=dict(choices=["client", "server"], default="client"), + user_email=dict(type="str"), + user_groups=dict(type="list", elements="str"), + user_disabled=dict(type="bool"), + user_gravatar=dict(type="bool"), + user_mac_addresses=dict(type="list", elements="str"), ) ) diff --git a/plugins/modules/pritunl_user_info.py b/plugins/modules/pritunl_user_info.py index 93786b166d..2e8180675a 100644 --- a/plugins/modules/pritunl_user_info.py +++ b/plugins/modules/pritunl_user_info.py @@ -151,12 +151,8 @@ def main(): argument_spec.update( dict( organization=dict(required=True, type="str", aliases=["org"]), - user_name=dict(required=False, type="str", default=None), - user_type=dict( - required=False, - choices=["client", "server"], - default="client", - ), + user_name=dict(type="str"), + user_type=dict(choices=["client", "server"], default="client"), ) ) diff --git a/plugins/modules/pubnub_blocks.py b/plugins/modules/pubnub_blocks.py index c8992b2aa7..316fced4be 100644 --- a/plugins/modules/pubnub_blocks.py +++ b/plugins/modules/pubnub_blocks.py @@ -56,13 +56,13 @@ options: default: {} account: description: - - Name of PubNub account for from which O(application) will be used to manage blocks. - - User's account will be used if value not set or empty. + - Name of PubNub account for from which O(application) is used to manage blocks. + - User's account is used if value not set or empty. type: str default: '' application: description: - - Name of target PubNub application for which blocks configuration on specific O(keyset) will be done. + - Name of target PubNub application for which blocks configuration on specific O(keyset) is done. type: str required: true keyset: @@ -72,19 +72,19 @@ options: required: true state: description: - - Intended block state after event handlers creation / update process will be completed. + - Intended block state after event handlers creation / update process is completed. required: false default: 'present' choices: ['started', 'stopped', 'present', 'absent'] type: str name: description: - - Name of managed block which will be later visible on admin.pubnub.com. + - Name of managed block which is later visible on admin.pubnub.com. required: true type: str description: description: - - Short block description which will be later visible on U(https://admin.pubnub.com). + - Short block description which is later visible on U(https://admin.pubnub.com). - Used only if block does not exists and does not change description for existing block. required: false type: str @@ -99,8 +99,8 @@ options: - Each entry for existing handlers should contain C(name) (so target handler can be identified). Rest parameters (C(src), C(channels) and C(event)) can be added if changes required for them. - It is possible to rename event handler by adding C(changes) key to event handler payload and pass dictionary, which - will contain single key C(name), where new name should be passed. - - To remove particular event handler it is possible to set C(state) for it to C(absent) and it will be removed. + contains single key C(name), where new name should be passed. + - To remove particular event handler it is possible to set C(state) for it to C(absent) and it is removed. required: false default: [] type: list @@ -115,7 +115,7 @@ options: validate_certs: description: - This key allow to try skip certificates check when performing REST API calls. Sometimes host may have issues with - certificates on it and this will cause problems to call PubNub REST API. + certificates on it and this causes problems to call PubNub REST API. - If check should be ignored V(false) should be passed to this parameter. required: false default: true @@ -532,9 +532,9 @@ def _content_of_file_at_path(path): def main(): fields = dict( - email=dict(default='', required=False, type='str'), - password=dict(default='', required=False, type='str', no_log=True), - account=dict(default='', required=False, type='str'), + email=dict(default='', type='str'), + password=dict(default='', type='str', no_log=True), + account=dict(default='', type='str'), application=dict(required=True, type='str'), keyset=dict(required=True, type='str', no_log=False), state=dict(default='present', type='str', diff --git a/plugins/modules/pulp_repo.py b/plugins/modules/pulp_repo.py index 0af129d26a..cc7f001837 100644 --- a/plugins/modules/pulp_repo.py +++ b/plugins/modules/pulp_repo.py @@ -36,7 +36,7 @@ options: description: - C(httplib2), the library used by the M(ansible.builtin.uri) module only sends authentication information when a webservice responds to an initial request with a 401 status. Since some basic auth services do not properly send a 401, logins - will fail. This option forces the sending of the Basic authentication header upon initial request. + fail. This option forces the sending of the Basic authentication header upon initial request. type: bool default: false generate_sqlite: @@ -131,22 +131,22 @@ options: default: true state: description: - - The repo state. A state of V(sync) will queue a sync of the repo. This is asynchronous but not delayed like a scheduled - sync. A state of V(publish) will use the repository's distributor to publish the content. + - The repo state. A state of V(sync) queues a sync of the repo. This is asynchronous but not delayed like a scheduled + sync. A state of V(publish) uses the repository's distributor to publish the content. default: present choices: ["present", "absent", "sync", "publish"] type: str url_password: description: - The password for use in HTTP basic authentication to the pulp API. If the O(url_username) parameter is not specified, - the O(url_password) parameter will not be used. + the O(url_password) parameter is not used. url_username: description: - The username for use in HTTP basic authentication to the pulp API. validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. type: bool default: true wait_for_completion: diff --git a/plugins/modules/puppet.py b/plugins/modules/puppet.py index a631a8ec55..a1ab66efc6 100644 --- a/plugins/modules/puppet.py +++ b/plugins/modules/puppet.py @@ -66,8 +66,8 @@ options: logdest: description: - Where the puppet logs should go, if puppet apply is being used. - - V(all) will go to both C(console) and C(syslog). - - V(stdout) will be deprecated and replaced by C(console). + - V(all) goes to both C(console) and C(syslog). + - V(stdout) is deprecated and replaced by C(console). type: str choices: [all, stdout, syslog] default: stdout @@ -128,8 +128,8 @@ options: - The default value, V(C), is supported on every system, but can lead to encoding errors if UTF-8 is used in the output. - Use V(C.UTF-8) or V(en_US.UTF-8) or similar UTF-8 supporting locales in case of problems. You need to make sure the selected locale is supported on the system the puppet agent runs on. - - Starting with community.general 9.1.0, you can use the value V(auto) and the module will try and determine the best - parseable locale to use. + - Starting with community.general 9.1.0, you can use the value V(auto) and the module tries to determine the best parseable + locale to use. type: str default: C version_added: 8.6.0 diff --git a/plugins/modules/pushbullet.py b/plugins/modules/pushbullet.py index 2f13f1dee2..990ac36525 100644 --- a/plugins/modules/pushbullet.py +++ b/plugins/modules/pushbullet.py @@ -114,12 +114,12 @@ def main(): module = AnsibleModule( argument_spec=dict( api_key=dict(type='str', required=True, no_log=True), - channel=dict(type='str', default=None), - device=dict(type='str', default=None), + channel=dict(type='str'), + device=dict(type='str'), push_type=dict(type='str', default="note", choices=['note', 'link']), title=dict(type='str', required=True), - body=dict(type='str', default=None), - url=dict(type='str', default=None), + body=dict(type='str'), + url=dict(type='str'), ), mutually_exclusive=( ['channel', 'device'], diff --git a/plugins/modules/pushover.py b/plugins/modules/pushover.py index ae57411531..dcfce34a06 100644 --- a/plugins/modules/pushover.py +++ b/plugins/modules/pushover.py @@ -15,7 +15,7 @@ short_description: Send notifications through U(https://pushover.net) description: - Send notifications through pushover to subscriber list of devices and email addresses. Requires pushover app on devices. notes: - - You will require a pushover.net account to use this module. But no account is required to receive messages. + - You need a pushover.net account to use this module. But no account is required to receive messages. extends_documentation_fragment: - community.general.attributes attributes: @@ -140,7 +140,7 @@ def main(): msg=dict(required=True), app_token=dict(required=True, no_log=True), user_key=dict(required=True, no_log=True), - pri=dict(required=False, default='0', choices=['-2', '-1', '0', '1', '2']), + pri=dict(default='0', choices=['-2', '-1', '0', '1', '2']), device=dict(type='str'), ), ) diff --git a/plugins/modules/python_requirements_info.py b/plugins/modules/python_requirements_info.py index a8ef5a952f..cbe93dd944 100644 --- a/plugins/modules/python_requirements_info.py +++ b/plugins/modules/python_requirements_info.py @@ -92,7 +92,7 @@ python_system_path: - /usr/lib/python/site-packages/ valid: description: A dictionary of dependencies that matched their desired versions. If no version was specified, then RV(ignore:desired) - will be V(null). + is V(null). returned: always type: dict sample: diff --git a/plugins/modules/redfish_command.py b/plugins/modules/redfish_command.py index 25f92bd1f7..f8578488e9 100644 --- a/plugins/modules/redfish_command.py +++ b/plugins/modules/redfish_command.py @@ -229,8 +229,8 @@ options: description: - Custom OEM properties for HTTP Multipart Push updates. - If set, then O(update_custom_oem_header) is required too. - - The properties will be passed raw without any validation or conversion by Ansible. This means the content can be a - file, a string, or any other data. If the content is a dict that should be converted to JSON, then the content must + - The properties are passed raw without any validation or conversion by Ansible. This means the content can be a file, + a string, or any other data. If the content is a dictionary that should be converted to JSON, then the content must be converted to JSON before passing it to this module using the P(ansible.builtin.to_json#filter) filter. type: raw version_added: '10.1.0' @@ -830,15 +830,16 @@ return_values: returned: on success type: dict version_added: 6.1.0 - sample: { - "update_status": { - "handle": "/redfish/v1/TaskService/TaskMonitors/735", - "messages": [], - "resets_requested": [], - "ret": true, - "status": "New" + sample: + { + "update_status": { + "handle": "/redfish/v1/TaskService/TaskMonitors/735", + "messages": [], + "resets_requested": [], + "ret": true, + "status": "New" + } } - } """ from ansible.module_utils.basic import AnsibleModule diff --git a/plugins/modules/redfish_config.py b/plugins/modules/redfish_config.py index 8700d4b8de..6eba0b0048 100644 --- a/plugins/modules/redfish_config.py +++ b/plugins/modules/redfish_config.py @@ -166,9 +166,9 @@ options: volume_details: required: false description: - - Setting dict of volume to be created. - - If C(CapacityBytes) key is not specified in this dictionary, the size of the volume will be determined by the Redfish - service. It is possible the size will not be the maximum available size. + - Setting dictionary of volume to be created. + - If C(CapacityBytes) key is not specified in this dictionary, the size of the volume is determined by the Redfish service. + It is possible the size is not the maximum available size. type: dict default: {} version_added: '7.5.0' diff --git a/plugins/modules/redhat_subscription.py b/plugins/modules/redhat_subscription.py index 6818253c9d..165bfb2891 100644 --- a/plugins/modules/redhat_subscription.py +++ b/plugins/modules/redhat_subscription.py @@ -21,7 +21,7 @@ notes: - 'The module tries to use the D-Bus C(rhsm) service (part of C(subscription-manager)) to register, starting from community.general 6.5.0: this is done so credentials (username, password, activation keys) can be passed to C(rhsm) in a secure way. C(subscription-manager) itself gets credentials only as arguments of command line parameters, which is I(not) secure, as they can be easily stolen - by checking the process listing on the system. Due to limitations of the D-Bus interface of C(rhsm), the module will I(not) + by checking the process listing on the system. Due to limitations of the D-Bus interface of C(rhsm), the module does I(not) use D-Bus for registration when trying either to register using O(token), or when specifying O(environment), or when the system is old (typically RHEL 7 older than 7.4, RHEL 6, and older).' - In order to register a system, subscription-manager requires either a username and password, or an activationkey and an @@ -132,10 +132,9 @@ options: pool_ids: description: - Specify subscription pool IDs to consume. - - 'A pool ID may be specified as a C(string) - just the pool ID (for example - V(0123456789abcdef0123456789abcdef)), or as a C(dict) with the pool ID as the key, and a quantity as the value (for - example V(0123456789abcdef0123456789abcdef: 2). If the quantity is provided, it is used to consume multiple entitlements - from a pool (the pool must support this).' + - 'A pool ID may be specified as a C(string) - just the pool ID (for example V(0123456789abcdef0123456789abcdef)), or + as a C(dict) with the pool ID as the key, and a quantity as the value (for example V(0123456789abcdef0123456789abcdef: + 2). If the quantity is provided, it is used to consume multiple entitlements from a pool (the pool must support this).' default: [] type: list elements: raw @@ -167,8 +166,8 @@ options: - Set syspurpose attributes in file C(/etc/rhsm/syspurpose/syspurpose.json) and synchronize these attributes with RHSM server. Syspurpose attributes help attach the most appropriate subscriptions to the system automatically. When C(syspurpose.json) file already contains some attributes, then new attributes overwrite existing attributes. When some attribute is not - listed in the new list of attributes, the existing attribute will be removed from C(syspurpose.json) file. Unknown - attributes are ignored. + listed in the new list of attributes, the existing attribute is removed from C(syspurpose.json) file. Unknown attributes + are ignored. type: dict suboptions: usage: @@ -187,7 +186,7 @@ options: sync: description: - When this option is V(true), then syspurpose attributes are synchronized with RHSM server immediately. When this - option is V(false), then syspurpose attributes will be synchronized with RHSM server by rhsmcertd daemon. + option is V(false), then syspurpose attributes are synchronized with RHSM server by rhsmcertd daemon. type: bool default: false """ diff --git a/plugins/modules/redis_data.py b/plugins/modules/redis_data.py index 03ae78dce3..4efe409b72 100644 --- a/plugins/modules/redis_data.py +++ b/plugins/modules/redis_data.py @@ -33,7 +33,7 @@ options: type: str expiration: description: - - Expiration time in milliseconds. Setting this flag will always result in a change in the database. + - Expiration time in milliseconds. Setting this option always results in a change in the database. required: false type: int non_existing: @@ -143,11 +143,11 @@ def main(): redis_auth_args = redis_auth_argument_spec() module_args = dict( key=dict(type='str', required=True, no_log=False), - value=dict(type='str', required=False), - expiration=dict(type='int', required=False), - non_existing=dict(type='bool', required=False), - existing=dict(type='bool', required=False), - keep_ttl=dict(type='bool', required=False), + value=dict(type='str'), + expiration=dict(type='int'), + non_existing=dict(type='bool'), + existing=dict(type='bool'), + keep_ttl=dict(type='bool'), state=dict(type='str', default='present', choices=['present', 'absent']), ) diff --git a/plugins/modules/redis_data_incr.py b/plugins/modules/redis_data_incr.py index 7630d621dc..d5f2fe05c2 100644 --- a/plugins/modules/redis_data_incr.py +++ b/plugins/modules/redis_data_incr.py @@ -21,8 +21,8 @@ attributes: support: partial details: - For C(check_mode) to work, the specified O(login_user) needs permission to run the C(GET) command on the key, otherwise - the module will fail. - - When using C(check_mode) the module will try to calculate the value that Redis would return. If the key is not present, + the module fails. + - When using C(check_mode) the module tries to calculate the value that Redis would return. If the key is not present, V(0.0) is used as value. diff_mode: support: none @@ -98,8 +98,8 @@ def main(): redis_auth_args = redis_auth_argument_spec() module_args = dict( key=dict(type='str', required=True, no_log=False), - increment_int=dict(type='int', required=False), - increment_float=dict(type='float', required=False), + increment_int=dict(type='int'), + increment_float=dict(type='float'), ) module_args.update(redis_auth_args) diff --git a/plugins/modules/rhsm_release.py b/plugins/modules/rhsm_release.py index 6408d3c171..665c734849 100644 --- a/plugins/modules/rhsm_release.py +++ b/plugins/modules/rhsm_release.py @@ -14,8 +14,8 @@ short_description: Set or Unset RHSM Release version description: - Sets or unsets the release version used by RHSM repositories. notes: - - This module will fail on an unregistered system. Use the M(community.general.redhat_subscription) module to register a - system prior to setting the RHSM release. + - This module fails on an unregistered system. Use the M(community.general.redhat_subscription) module to register a system + prior to setting the RHSM release. - It is possible to interact with C(subscription-manager) only as root, so root permissions are required to successfully run this module. requirements: diff --git a/plugins/modules/rhsm_repository.py b/plugins/modules/rhsm_repository.py index c80caa0d6c..e59fcd27b4 100644 --- a/plugins/modules/rhsm_repository.py +++ b/plugins/modules/rhsm_repository.py @@ -48,7 +48,7 @@ options: purge: description: - Disable all currently enabled repositories that are not not specified in O(name). Only set this to V(true) if passing - in a list of repositories to the O(name) field. Using this with C(loop) will most likely not have the desired result. + in a list of repositories to the O(name) field. Using this with C(loop) is likely not to have the desired result. type: bool default: false """ diff --git a/plugins/modules/riak.py b/plugins/modules/riak.py index d7b45af5cd..2009ca0a22 100644 --- a/plugins/modules/riak.py +++ b/plugins/modules/riak.py @@ -62,8 +62,8 @@ options: type: str validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. type: bool default: true """ @@ -103,15 +103,13 @@ def main(): module = AnsibleModule( argument_spec=dict( - command=dict(required=False, default=None, choices=[ - 'ping', 'kv_test', 'join', 'plan', 'commit']), + command=dict(choices=['ping', 'kv_test', 'join', 'plan', 'commit']), config_dir=dict(default='/etc/riak', type='path'), - http_conn=dict(required=False, default='127.0.0.1:8098'), - target_node=dict(default='riak@127.0.0.1', required=False), + http_conn=dict(default='127.0.0.1:8098'), + target_node=dict(default='riak@127.0.0.1'), wait_for_handoffs=dict(default=0, type='int'), wait_for_ring=dict(default=0, type='int'), - wait_for_service=dict( - required=False, default=None, choices=['kv']), + wait_for_service=dict(choices=['kv']), validate_certs=dict(default=True, type='bool')) ) diff --git a/plugins/modules/rocketchat.py b/plugins/modules/rocketchat.py index 765b7a71e3..6da9b36e8d 100644 --- a/plugins/modules/rocketchat.py +++ b/plugins/modules/rocketchat.py @@ -69,7 +69,7 @@ options: description: - Emoji for the message sender. The representation for the available emojis can be got from Rocket Chat. - For example V(:thumbsup:). - - If O(icon_emoji) is set, O(icon_url) will not be used. + - If O(icon_emoji) is set, O(icon_url) is not used. link_names: type: int description: @@ -80,8 +80,8 @@ options: - 0 validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. type: bool default: true color: @@ -102,10 +102,10 @@ options: - Define a list of attachments. is_pre740: description: - - If V(true), the payload matches Rocket.Chat prior to 7.4.0 format. - This format has been used by the module since its inception, but is no longer supported by Rocket.Chat 7.4.0. - - The default value of the option will change to V(false) eventually. - - This parameter will be removed in a future release when Rocket.Chat 7.4.0 becomes the minimum supported version. + - If V(true), the payload matches Rocket.Chat prior to 7.4.0 format. This format has been used by the module since its + inception, but is no longer supported by Rocket.Chat 7.4.0. + - The default value of the option is going to change to V(false) eventually. + - This parameter is going to be removed in a future release when Rocket.Chat 7.4.0 becomes the minimum supported version. type: bool default: true version_added: 10.5.0 @@ -159,13 +159,6 @@ EXAMPLES = r""" delegate_to: localhost """ -RETURN = r""" -changed: - description: A flag indicating if any change was made or not. - returned: success - type: bool - sample: false -""" from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.urls import fetch_url @@ -228,7 +221,7 @@ def main(): domain=dict(type='str', required=True), token=dict(type='str', required=True, no_log=True), protocol=dict(type='str', default='https', choices=['http', 'https']), - msg=dict(type='str', required=False), + msg=dict(type='str'), channel=dict(type='str'), username=dict(type='str', default='Ansible'), icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'), @@ -236,7 +229,7 @@ def main(): link_names=dict(type='int', default=1, choices=[0, 1]), validate_certs=dict(default=True, type='bool'), color=dict(type='str', default='normal', choices=['normal', 'good', 'warning', 'danger']), - attachments=dict(type='list', elements='dict', required=False), + attachments=dict(type='list', elements='dict'), is_pre740=dict(default=True, type='bool') ) ) diff --git a/plugins/modules/rollbar_deployment.py b/plugins/modules/rollbar_deployment.py index a9658dbadf..e0cf4e31aa 100644 --- a/plugins/modules/rollbar_deployment.py +++ b/plugins/modules/rollbar_deployment.py @@ -61,7 +61,7 @@ options: default: 'https://api.rollbar.com/api/1/deploy/' validate_certs: description: - - If V(false), SSL certificates for the target URL will not be validated. This should only be used on personally controlled + - If V(false), SSL certificates for the target URL are not validated. This should only be used on personally controlled sites using self-signed certificates. required: false default: true @@ -100,13 +100,10 @@ def main(): token=dict(required=True, no_log=True), environment=dict(required=True), revision=dict(required=True), - user=dict(required=False), - rollbar_user=dict(required=False), - comment=dict(required=False), - url=dict( - required=False, - default='https://api.rollbar.com/api/1/deploy/' - ), + user=dict(), + rollbar_user=dict(), + comment=dict(), + url=dict(default='https://api.rollbar.com/api/1/deploy/'), validate_certs=dict(default=True, type='bool'), ), supports_check_mode=True diff --git a/plugins/modules/rpm_ostree_pkg.py b/plugins/modules/rpm_ostree_pkg.py index 652801ca67..01462b25f1 100644 --- a/plugins/modules/rpm_ostree_pkg.py +++ b/plugins/modules/rpm_ostree_pkg.py @@ -82,16 +82,6 @@ EXAMPLES = r""" """ RETURN = r""" -rc: - description: Return code of rpm-ostree command. - returned: always - type: int - sample: 0 -changed: - description: State changes. - returned: always - type: bool - sample: true action: description: Action performed. returned: always @@ -101,17 +91,7 @@ packages: description: A list of packages specified. returned: always type: list - sample: ['nfs-utils'] -stdout: - description: Stdout of rpm-ostree command. - returned: always - type: str - sample: 'Staging deployment...done\n...' -stderr: - description: Stderr of rpm-ostree command. - returned: always - type: str - sample: '' + sample: ["nfs-utils"] cmd: description: Full command used for performed action. returned: always diff --git a/plugins/modules/rundeck_job_run.py b/plugins/modules/rundeck_job_run.py index cb1941ab6a..1c5841b3c5 100644 --- a/plugins/modules/rundeck_job_run.py +++ b/plugins/modules/rundeck_job_run.py @@ -62,7 +62,7 @@ options: type: int description: - Job execution wait timeout in seconds. - - If the timeout is reached, the job will be aborted. + - If the timeout is reached, the job is aborted. - Keep in mind that there is a sleep based on O(wait_execution_delay) after each job status check. default: 120 abort_on_timeout: diff --git a/plugins/modules/runit.py b/plugins/modules/runit.py index f26f241537..5a575fa2ba 100644 --- a/plugins/modules/runit.py +++ b/plugins/modules/runit.py @@ -30,9 +30,10 @@ options: required: true state: description: - - V(started)/V(stopped) are idempotent actions that will not run commands unless necessary. V(restarted) will always - bounce the service (sv restart) and V(killed) will always bounce the service (sv force-stop). V(reloaded) will send - a HUP (sv reload). V(once) will run a normally downed sv once (sv once), not really an idempotent operation. + - V(started)/V(stopped) are idempotent actions that do not run commands unless necessary. + - V(restarted) always bounces the service (sv restart) and V(killed) always bounces the service (sv force-stop). + - V(reloaded) always sends a HUP (sv reload). + - V(once) runs a normally downed sv once (sv once), not really an idempotent operation. type: str choices: [killed, once, reloaded, restarted, started, stopped] enabled: diff --git a/plugins/modules/say.py b/plugins/modules/say.py index 2dc359083d..eff582f125 100644 --- a/plugins/modules/say.py +++ b/plugins/modules/say.py @@ -17,7 +17,8 @@ description: notes: - In 2.5, this module has been renamed from C(osx_say) to M(community.general.say). - If you like this module, you may also be interested in the osx_say callback plugin. - - A list of available voices, with language, can be found by running C(say -v ?) on a OSX host and C(espeak --voices) on a Linux host. + - A list of available voices, with language, can be found by running C(say -v ?) on a OSX host and C(espeak --voices) on + a Linux host. extends_documentation_fragment: - community.general.attributes attributes: @@ -66,7 +67,7 @@ def main(): module = AnsibleModule( argument_spec=dict( msg=dict(required=True), - voice=dict(required=False), + voice=dict(), ), supports_check_mode=True ) diff --git a/plugins/modules/scaleway_compute.py b/plugins/modules/scaleway_compute.py index c61030bede..f3653cd3b6 100644 --- a/plugins/modules/scaleway_compute.py +++ b/plugins/modules/scaleway_compute.py @@ -133,7 +133,7 @@ options: type: str description: - Security group unique identifier. - - If no value provided, the default security group or current security group will be used. + - If no value provided, the default security group or current security group is used. required: false """ diff --git a/plugins/modules/scaleway_container.py b/plugins/modules/scaleway_container.py index dc4df1c1d5..8351660fd6 100644 --- a/plugins/modules/scaleway_container.py +++ b/plugins/modules/scaleway_container.py @@ -89,7 +89,7 @@ options: secret_environment_variables: description: - Secret environment variables of the container namespace. - - Updating those values will not output a C(changed) state in Ansible. + - Updating those values does not output a C(changed) state in Ansible. - Injected in container at runtime. type: dict default: {} @@ -125,7 +125,7 @@ options: max_concurrency: description: - Maximum number of connections per container. - - This parameter will be used to trigger autoscaling. + - This parameter is used to trigger autoscaling. type: int protocol: diff --git a/plugins/modules/scaleway_container_namespace.py b/plugins/modules/scaleway_container_namespace.py index 802a491321..781c9ffc25 100644 --- a/plugins/modules/scaleway_container_namespace.py +++ b/plugins/modules/scaleway_container_namespace.py @@ -79,7 +79,7 @@ options: secret_environment_variables: description: - Secret environment variables of the container namespace. - - Updating those values will not output a C(changed) state in Ansible. + - Updating those values does not output a C(changed) state in Ansible. - Injected in containers at runtime. type: dict default: {} diff --git a/plugins/modules/scaleway_container_registry.py b/plugins/modules/scaleway_container_registry.py index 132dfe8bb6..4e352c5b9e 100644 --- a/plugins/modules/scaleway_container_registry.py +++ b/plugins/modules/scaleway_container_registry.py @@ -71,7 +71,7 @@ options: type: str description: - Default visibility policy. - - Everyone will be able to pull images from a V(public) registry. + - Everyone can pull images from a V(public) registry. choices: - public - private diff --git a/plugins/modules/scaleway_database_backup.py b/plugins/modules/scaleway_database_backup.py index d952452daf..48add5dfc6 100644 --- a/plugins/modules/scaleway_database_backup.py +++ b/plugins/modules/scaleway_database_backup.py @@ -354,8 +354,8 @@ def main(): region=dict(required=True, choices=SCALEWAY_REGIONS), id=dict(), name=dict(type='str'), - database_name=dict(required=False), - instance_id=dict(required=False), + database_name=dict(), + instance_id=dict(), expires_at=dict(), wait=dict(type='bool', default=False), wait_timeout=dict(type='int', default=300), diff --git a/plugins/modules/scaleway_function.py b/plugins/modules/scaleway_function.py index e2142dd1f2..4bc7c42688 100644 --- a/plugins/modules/scaleway_function.py +++ b/plugins/modules/scaleway_function.py @@ -89,7 +89,7 @@ options: secret_environment_variables: description: - Secret environment variables of the function. - - Updating those values will not output a C(changed) state in Ansible. + - Updating those values does not output a C(changed) state in Ansible. - Injected in function at runtime. type: dict default: {} diff --git a/plugins/modules/scaleway_function_namespace.py b/plugins/modules/scaleway_function_namespace.py index d43b42bc7f..e5e00bf681 100644 --- a/plugins/modules/scaleway_function_namespace.py +++ b/plugins/modules/scaleway_function_namespace.py @@ -79,7 +79,7 @@ options: secret_environment_variables: description: - Secret environment variables of the function namespace. - - Updating those values will not output a C(changed) state in Ansible. + - Updating those values does not output a C(changed) state in Ansible. - Injected in functions at runtime. type: dict default: {} diff --git a/plugins/modules/scaleway_image_info.py b/plugins/modules/scaleway_image_info.py index 44474218db..0b2fe0476d 100644 --- a/plugins/modules/scaleway_image_info.py +++ b/plugins/modules/scaleway_image_info.py @@ -57,7 +57,7 @@ scaleway_image_info: type: list elements: dict sample: - "scaleway_image_info": [ + [ { "arch": "x86_64", "creation_date": "2018-07-17T16:18:49.276456+00:00", diff --git a/plugins/modules/scaleway_ip_info.py b/plugins/modules/scaleway_ip_info.py index 8b2a78449e..0812746619 100644 --- a/plugins/modules/scaleway_ip_info.py +++ b/plugins/modules/scaleway_ip_info.py @@ -52,12 +52,12 @@ RETURN = r""" scaleway_ip_info: description: - Response from Scaleway API. - - 'For more details please refer to U(https://developers.scaleway.com/en/products/instance/api/).' + - For more details please refer to U(https://developers.scaleway.com/en/products/instance/api/). returned: success type: list elements: dict sample: - "scaleway_ip_info": [ + [ { "address": "163.172.170.243", "id": "ea081794-a581-8899-8451-386ddaf0a451", diff --git a/plugins/modules/scaleway_organization_info.py b/plugins/modules/scaleway_organization_info.py index 0aeabb94fd..a28b290bbc 100644 --- a/plugins/modules/scaleway_organization_info.py +++ b/plugins/modules/scaleway_organization_info.py @@ -44,7 +44,7 @@ scaleway_organization_info: type: list elements: dict sample: - "scaleway_organization_info": [ + [ { "address_city_name": "Paris", "address_country_code": "FR", diff --git a/plugins/modules/scaleway_security_group_info.py b/plugins/modules/scaleway_security_group_info.py index 04eb2da0d1..4cdb295282 100644 --- a/plugins/modules/scaleway_security_group_info.py +++ b/plugins/modules/scaleway_security_group_info.py @@ -56,7 +56,7 @@ scaleway_security_group_info: type: list elements: dict sample: - "scaleway_security_group_info": [ + [ { "description": "test-ams", "enable_default_security": true, diff --git a/plugins/modules/scaleway_server_info.py b/plugins/modules/scaleway_server_info.py index 8f4cbc6a2c..327715d2db 100644 --- a/plugins/modules/scaleway_server_info.py +++ b/plugins/modules/scaleway_server_info.py @@ -57,7 +57,7 @@ scaleway_server_info: type: list elements: dict sample: - "scaleway_server_info": [ + [ { "arch": "x86_64", "boot_type": "local", diff --git a/plugins/modules/scaleway_snapshot_info.py b/plugins/modules/scaleway_snapshot_info.py index ae6c3b532f..ead1826aa4 100644 --- a/plugins/modules/scaleway_snapshot_info.py +++ b/plugins/modules/scaleway_snapshot_info.py @@ -57,7 +57,7 @@ scaleway_snapshot_info: type: list elements: dict sample: - "scaleway_snapshot_info": [ + [ { "base_volume": { "id": "68386fae-4f55-4fbf-aabb-953036a85872", diff --git a/plugins/modules/scaleway_volume_info.py b/plugins/modules/scaleway_volume_info.py index c8e2cd1302..8a4986a724 100644 --- a/plugins/modules/scaleway_volume_info.py +++ b/plugins/modules/scaleway_volume_info.py @@ -57,7 +57,7 @@ scaleway_volume_info: type: list elements: dict sample: - "scaleway_volume_info": [ + [ { "creation_date": "2018-08-14T20:56:24.949660+00:00", "export_uri": null, diff --git a/plugins/modules/selinux_permissive.py b/plugins/modules/selinux_permissive.py index b5c0ee4a61..c6107309ac 100644 --- a/plugins/modules/selinux_permissive.py +++ b/plugins/modules/selinux_permissive.py @@ -24,7 +24,7 @@ attributes: options: domain: description: - - The domain that will be added or removed from the list of permissive domains. + - The domain that is added or removed from the list of permissive domains. type: str required: true aliases: [name] diff --git a/plugins/modules/selogin.py b/plugins/modules/selogin.py index 8f1b20c230..408d9221da 100644 --- a/plugins/modules/selogin.py +++ b/plugins/modules/selogin.py @@ -34,7 +34,8 @@ options: type: str aliases: [serange] description: - - MLS/MCS Security Range (MLS/MCS Systems only) SELinux Range for SELinux login mapping defaults to the SELinux user record range. + - MLS/MCS Security Range (MLS/MCS Systems only) SELinux Range for SELinux login mapping defaults to the SELinux user + record range. default: s0 state: type: str diff --git a/plugins/modules/sendgrid.py b/plugins/modules/sendgrid.py index 1099f579e1..c0e4b239bc 100644 --- a/plugins/modules/sendgrid.py +++ b/plugins/modules/sendgrid.py @@ -17,8 +17,8 @@ description: notes: - This module is non-idempotent because it sends an email through the external API. It is idempotent only in the case that the module fails. - - Like the other notification modules, this one requires an external dependency to work. In this case, you will need an - active SendGrid account. + - Like the other notification modules, this one requires an external dependency to work. In this case, you need an active + SendGrid account. - In order to use O(api_key), O(cc), O(bcc), O(attachments), O(from_name), O(html_body), and O(headers) you must C(pip install sendgrid). requirements: @@ -82,7 +82,7 @@ options: - The name you want to appear in the from field, for example V(John Doe). html_body: description: - - Whether the body is html content that should be rendered. + - Whether the body is HTML content that should be rendered. type: bool default: false headers: @@ -214,19 +214,19 @@ def post_sendgrid_api(module, username, password, from_address, to_addresses, def main(): module = AnsibleModule( argument_spec=dict( - username=dict(required=False), - password=dict(required=False, no_log=True), - api_key=dict(required=False, no_log=True), - bcc=dict(required=False, type='list', elements='str'), - cc=dict(required=False, type='list', elements='str'), - headers=dict(required=False, type='dict'), + username=dict(), + password=dict(no_log=True), + api_key=dict(no_log=True), + bcc=dict(type='list', elements='str'), + cc=dict(type='list', elements='str'), + headers=dict(type='dict'), from_address=dict(required=True), - from_name=dict(required=False), + from_name=dict(), to_addresses=dict(required=True, type='list', elements='str'), subject=dict(required=True), body=dict(required=True), - html_body=dict(required=False, default=False, type='bool'), - attachments=dict(required=False, type='list', elements='path') + html_body=dict(default=False, type='bool'), + attachments=dict(type='list', elements='path') ), supports_check_mode=True, mutually_exclusive=[ diff --git a/plugins/modules/sensu_check.py b/plugins/modules/sensu_check.py index 2cac434923..a4b5771528 100644 --- a/plugins/modules/sensu_check.py +++ b/plugins/modules/sensu_check.py @@ -14,7 +14,7 @@ module: sensu_check short_description: Manage Sensu checks description: - Manage the checks that should be run on a machine by I(Sensu). - - Most options do not have a default and will not be added to the check definition unless specified. + - Most options do not have a default and are not added to the check definition unless specified. - All defaults except O(path), O(state), O(backup) and O(metric) are not managed by this module, they are simply specified for your convenience. deprecated: @@ -45,8 +45,8 @@ options: type: str description: - Path to the JSON file of the check to be added/removed. - - Will be created if it does not exist (unless O(state=absent)). - - The parent folders need to exist when O(state=present), otherwise an error will be thrown. + - It is created if it does not exist (unless O(state=absent)). + - The parent folders need to exist when O(state=present), otherwise an error is thrown. default: /etc/sensu/conf.d/checks.json backup: description: @@ -99,7 +99,8 @@ options: type: list elements: str description: - - Other checks this check depends on, if dependencies fail handling of this check will be disabled. + - Other checks this one depends on. + - If dependencies fail handling of this check is disabled. metric: description: - Whether the check is a metric. diff --git a/plugins/modules/sensu_client.py b/plugins/modules/sensu_client.py index 955a25f44f..f87621bd6d 100644 --- a/plugins/modules/sensu_client.py +++ b/plugins/modules/sensu_client.py @@ -14,7 +14,7 @@ author: "David Moreau Simard (@dmsimard)" short_description: Manages Sensu client configuration description: - Manages Sensu client configuration. - - 'For more information, refer to the L(Sensu documentation, https://sensuapp.org/docs/latest/reference/clients.html).' + - For more information, refer to the L(Sensu documentation, https://sensuapp.org/docs/latest/reference/clients.html). deprecated: removed_in: 13.0.0 why: Sensu Core and Sensu Enterprise products have been End of Life since 2019/20. @@ -42,8 +42,8 @@ options: type: str description: - An address to help identify and reach the client. This is only informational, usually an IP address or hostname. - - If not specified it defaults to non-loopback IPv4 address as determined by Ruby C(Socket.ip_address_list) (provided by - Sensu). + - If not specified it defaults to non-loopback IPv4 address as determined by Ruby C(Socket.ip_address_list) (provided + by Sensu). subscriptions: type: list elements: str @@ -158,7 +158,13 @@ config: description: Effective client configuration, when state is present. returned: success type: dict - sample: {'name': 'client', 'subscriptions': ['default']} + sample: + { + "name": "client", + "subscriptions": [ + "default" + ] + } file: description: Path to the client configuration file. returned: success diff --git a/plugins/modules/sensu_handler.py b/plugins/modules/sensu_handler.py index ff4a77a6ff..5b5494bf1c 100644 --- a/plugins/modules/sensu_handler.py +++ b/plugins/modules/sensu_handler.py @@ -14,7 +14,7 @@ author: "David Moreau Simard (@dmsimard)" short_description: Manages Sensu handler configuration description: - Manages Sensu handler configuration. - - 'For more information, refer to the L(Sensu documentation, https://sensuapp.org/docs/latest/reference/handlers.html).' + - For more information, refer to the L(Sensu documentation, https://sensuapp.org/docs/latest/reference/handlers.html). deprecated: removed_in: 13.0.0 why: Sensu Core and Sensu Enterprise products have been End of Life since 2019/20. @@ -57,7 +57,7 @@ options: type: list elements: str description: - - An array of check result severities the handler will handle. + - An array of check result severities the handler handles. - 'NOTE: event resolution bypasses this filtering.' - "Example: [ 'warning', 'critical', 'unknown' ]." mutator: @@ -155,7 +155,12 @@ config: description: Effective handler configuration, when state is present. returned: success type: dict - sample: {'name': 'irc', 'type': 'pipe', 'command': '/usr/local/bin/notify-irc.sh'} + sample: + { + "name": "irc", + "type": "pipe", + "command": "/usr/local/bin/notify-irc.sh" + } file: description: Path to the handler configuration file. returned: success diff --git a/plugins/modules/sensu_silence.py b/plugins/modules/sensu_silence.py index b030dc4e69..91e6f63496 100644 --- a/plugins/modules/sensu_silence.py +++ b/plugins/modules/sensu_silence.py @@ -38,10 +38,10 @@ options: expire: type: int description: - - If specified, the silence entry will be automatically cleared after this number of seconds. + - If specified, the silence entry is automatically cleared after this number of seconds. expire_on_resolve: description: - - If specified as true, the silence entry will be automatically cleared once the condition it is silencing is resolved. + - If specified as true, the silence entry is automatically cleared once the condition it is silencing is resolved. type: bool reason: type: str @@ -265,14 +265,14 @@ def create( def main(): module = AnsibleModule( argument_spec=dict( - check=dict(required=False), - creator=dict(required=False), - expire=dict(type='int', required=False), - expire_on_resolve=dict(type='bool', required=False), - reason=dict(required=False), + check=dict(), + creator=dict(), + expire=dict(type='int'), + expire_on_resolve=dict(type='bool'), + reason=dict(), state=dict(default='present', choices=['present', 'absent']), subscription=dict(required=True), - url=dict(required=False, default='http://127.0.01:4567'), + url=dict(default='http://127.0.01:4567'), ), supports_check_mode=True ) diff --git a/plugins/modules/serverless.py b/plugins/modules/serverless.py index 937f7dcdea..8bba307440 100644 --- a/plugins/modules/serverless.py +++ b/plugins/modules/serverless.py @@ -51,7 +51,7 @@ options: deploy: description: - Whether or not to deploy artifacts after building them. - - When this option is V(false) all the functions will be built, but no stack update will be run to send them out. + - When this option is V(false) all the functions are built, but no stack update is run to send them out. - This is mostly useful for generating artifacts to be stored/deployed elsewhere. type: bool default: true diff --git a/plugins/modules/slack.py b/plugins/modules/slack.py index f1c375c31b..e009320d85 100644 --- a/plugins/modules/slack.py +++ b/plugins/modules/slack.py @@ -32,23 +32,24 @@ options: domain: type: str description: - - "When using new format 'Webhook token' and WebAPI tokens: this can be V(slack.com) or V(slack-gov.com) and is ignored otherwise." + - "When using new format 'Webhook token' and WebAPI tokens: this can be V(slack.com) or V(slack-gov.com) and is ignored + otherwise." - "When using old format 'Webhook token': Slack (sub)domain for your environment without protocol. (For example V(example.slack.com).) - in Ansible 1.8 and beyond, this is deprecated and may be ignored. See token documentation for information." + in Ansible 1.8 and beyond, this is deprecated and may be ignored. See token documentation for information." token: type: str description: - - Slack integration token. This authenticates you to the slack service. Make sure to use the correct type of token, + - Slack integration token. This authenticates you to the Slack service. Make sure to use the correct type of token, depending on what method you use. - 'Webhook token: Prior to Ansible 1.8, a token looked like V(3Ffe373sfhRE6y42Fg3rvf4GlK). In Ansible 1.8 and above, - Ansible adapts to the new slack API where tokens look like V(G922VJP24/D921DW937/3Ffe373sfhRE6y42Fg3rvf4GlK). If tokens - are in the new format then slack will ignore any value of domain except V(slack.com) or V(slack-gov.com). If the token - is in the old format the domain is required. Ansible has no control of when slack will get rid of the old API. When slack - does that the old format will stop working. - ** Please keep in mind the tokens are not the API tokens but are the webhook tokens. In slack these - are found in the webhook URL which are obtained under the apps and integrations. The incoming webhooks can be added - in that area. In some cases this may be locked by your Slack admin and you must request access. It is there that the - incoming webhooks can be added. The key is on the end of the URL given to you in that section.' + Ansible adapts to the new Slack API where tokens look like V(G922VJP24/D921DW937/3Ffe373sfhRE6y42Fg3rvf4GlK). If tokens + are in the new format then Slack ignores any value of domain except V(slack.com) or V(slack-gov.com). If the token + is in the old format the domain is required. Ansible has no control of when Slack is going to remove the old API. + When Slack does that the old format is going to cease working. B(Please keep in mind the tokens are not the API tokens + but are the webhook tokens.) In Slack these are found in the webhook URL which are obtained under the apps and integrations. + The incoming webhooks can be added in that area. In some cases this may be locked by your Slack admin and you must + request access. It is there that the incoming webhooks can be added. The key is on the end of the URL given to you + in that section.' - "WebAPI token: Slack WebAPI requires a personal, bot or work application token. These tokens start with V(xoxp-), V(xoxb-) or V(xoxa-), for example V(xoxb-1234-56789abcdefghijklmnop). WebAPI token is required if you intend to receive thread_id. See Slack's documentation (U(https://api.slack.com/docs/token-types)) for more information." @@ -58,7 +59,8 @@ options: description: - Message to send. Note that the module does not handle escaping characters. Plain-text angle brackets and ampersands should be converted to HTML entities (for example C(&) to C(&)) before sending. See Slack's documentation - (U(https://api.slack.com/docs/message-formatting)) for more. + (U(https://api.slack.com/docs/message-formatting)) + for more. channel: type: str description: @@ -90,7 +92,7 @@ options: type: str description: - Emoji for the message sender. See Slack documentation for options. - - If O(icon_emoji) is set, O(icon_url) will not be used. + - If O(icon_emoji) is set, O(icon_url) is not used. link_names: type: int description: @@ -108,8 +110,8 @@ options: - 'none' validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. type: bool default: true color: @@ -139,11 +141,12 @@ options: - Setting for automatically prepending a V(#) symbol on the passed in O(channel). - The V(auto) method prepends a V(#) unless O(channel) starts with one of V(#), V(@), V(C0), V(GF), V(G0), V(CP). These prefixes only cover a small set of the prefixes that should not have a V(#) prepended. Since an exact condition which - O(channel) values must not have the V(#) prefix is not known, the value V(auto) for this option will be deprecated - in the future. It is best to explicitly set O(prepend_hash=always) or O(prepend_hash=never) to obtain the needed behavior. - - The B(current default) is V(auto), which has been B(deprecated) since community.general 10.2.0. It will change to - V(never) in community.general 12.0.0. To prevent deprecation warnings you can explicitly set O(prepend_hash) to the - value you want. We suggest to only use V(always) or V(never), but not V(auto), when explicitly setting a value. + O(channel) values must not have the V(#) prefix is not known, the value V(auto) for this option is deprecated in the + future. It is best to explicitly set O(prepend_hash=always) or O(prepend_hash=never) to obtain the needed behavior. + - The B(current default) is V(auto), which has been B(deprecated) since community.general 10.2.0. It is going to change + to V(never) in community.general 12.0.0. To prevent deprecation warnings you can explicitly set O(prepend_hash) to + the value you want. We suggest to only use V(always) or V(never), but not V(auto), when explicitly setting a value. + # when the default changes in community.general 12.0.0, add deprecation for the `auto` value for 14.0.0 choices: - 'always' - 'never' diff --git a/plugins/modules/smartos_image_info.py b/plugins/modules/smartos_image_info.py index 19ad740b72..89c00f5c26 100644 --- a/plugins/modules/smartos_image_info.py +++ b/plugins/modules/smartos_image_info.py @@ -47,12 +47,20 @@ EXAMPLES = r""" - name: Print information ansible.builtin.debug: - msg: "{{ result.smartos_images[item]['name'] }}-{{ result.smartos_images[item]['version'] }} has {{ result.smartos_images[item]['clones'] }} VM(s)" + msg: >- + {{ + result.smartos_images[item]['name'] }}-{{ result.smartos_images[item]['version'] }} + has {{ result.smartos_images[item]['clones'] + }} VM(s) with_items: "{{ result.smartos_images.keys() | list }}" - name: Print information ansible.builtin.debug: - msg: "{{ smartos_images[item]['name'] }}-{{ smartos_images[item]['version'] }} has {{ smartos_images[item]['clones'] }} VM(s)" + msg: >- + {{ + smartos_images[item]['name'] }}-{{ smartos_images[item]['version'] }} + has {{ smartos_images[item]['clones'] + }} VM(s) with_items: "{{ smartos_images.keys() | list }}" """ diff --git a/plugins/modules/snap.py b/plugins/modules/snap.py index 3ffe9642fa..fd424e0dd9 100644 --- a/plugins/modules/snap.py +++ b/plugins/modules/snap.py @@ -37,8 +37,8 @@ options: state: description: - Desired state of the package. - - When O(state=present) the module will use C(snap install) if the snap is not installed, and C(snap refresh) if it - is installed but from a different channel. + - When O(state=present) the module uses C(snap install) if the snap is not installed, and C(snap refresh) if it is installed + but from a different channel. default: present choices: [absent, present, enabled, disabled] type: str @@ -56,19 +56,19 @@ options: description: - Define which release of a snap is installed and tracked for updates. This option can only be specified if there is a single snap in the task. - - If not passed, the C(snap) command will default to V(stable). - - If the value passed does not contain the C(track), it will default to C(latest). For example, if V(edge) is passed, - the module will assume the channel to be V(latest/edge). + - If not passed, the C(snap) command defaults to V(stable). + - If the value passed does not contain the C(track), it defaults to C(latest). For example, if V(edge) is passed, the + module assumes the channel to be V(latest/edge). - See U(https://snapcraft.io/docs/channels) for more details about snap channels. type: str required: false options: description: - - Set options with pattern C(key=value) or C(snap:key=value). If a snap name is given, the option will be applied to - that snap only. If the snap name is omitted, the options will be applied to all snaps listed in O(name). Options will - only be applied to active snaps. - - Options will only be applied when C(state) is set to V(present). This is done after the necessary installation or - refresh (upgrade/downgrade) of all the snaps listed in O(name). + - Set options with pattern C(key=value) or C(snap:key=value). If a snap name is given, the option is applied to that + snap only. If the snap name is omitted, the options are applied to all snaps listed in O(name). Options are only applied + to active snaps. + - Options are only applied when C(state) is set to V(present). This is done after the necessary installation or refresh + (upgrade/downgrade) of all the snaps listed in O(name). - See U(https://snapcraft.io/docs/configuration-in-snaps) for more details about snap configuration options. required: false type: list diff --git a/plugins/modules/snmp_facts.py b/plugins/modules/snmp_facts.py index a87e1d33a1..17c7bbd032 100644 --- a/plugins/modules/snmp_facts.py +++ b/plugins/modules/snmp_facts.py @@ -15,7 +15,7 @@ author: - Patrick Ogenstad (@ogenstad) short_description: Retrieve facts for a device using SNMP description: - - Retrieve facts for a device using SNMP, the facts will be inserted to the C(ansible_facts) key. + - Retrieve facts for a device using SNMP, the facts are inserted to the C(ansible_facts) key. requirements: - pysnmp extends_documentation_fragment: diff --git a/plugins/modules/solaris_zone.py b/plugins/modules/solaris_zone.py index 31e7919c08..431e0cb31d 100644 --- a/plugins/modules/solaris_zone.py +++ b/plugins/modules/solaris_zone.py @@ -51,7 +51,7 @@ options: required: true path: description: - - The path where the zone will be created. This is required when the zone is created, but not used otherwise. + - The path where the zone is created. This is required when the zone is created, but not used otherwise. type: str sparse: description: @@ -60,7 +60,7 @@ options: default: false root_password: description: - - The password hash for the root account. If not specified, the zone's root account will not have a password. + - The password hash for the root account. If not specified, the zone's root account does not have a password. type: str config: description: diff --git a/plugins/modules/sorcery.py b/plugins/modules/sorcery.py index fff3f55e07..de50741185 100644 --- a/plugins/modules/sorcery.py +++ b/plugins/modules/sorcery.py @@ -34,7 +34,7 @@ options: description: - Name of the spell or grimoire. - Multiple names can be given, separated by commas. - - Special value V(*) in conjunction with states V(latest) or V(rebuild) will update or rebuild the whole system respectively. + - Special value V(*) in conjunction with states V(latest) or V(rebuild) updates or rebuilds the whole system respectively. - The alias O(grimoire) was added in community.general 7.3.0. aliases: ["spell", "grimoire"] type: list @@ -44,7 +44,7 @@ options: description: - Repository location. - If specified, O(name) represents grimoire(s) instead of spell(s). - - Special value V(*) will pull grimoire from the official location. + - Special value V(*) pulls grimoire from the official location. - Only single item in O(name) in conjunction with V(*) can be used. - O(state=absent) must be used with a special value V(*). type: str @@ -697,11 +697,11 @@ def manage_spells(module): def main(): module = AnsibleModule( argument_spec=dict( - name=dict(default=None, aliases=['spell', 'grimoire'], type='list', elements='str'), - repository=dict(default=None, type='str'), + name=dict(aliases=['spell', 'grimoire'], type='list', elements='str'), + repository=dict(type='str'), state=dict(default='present', choices=['present', 'latest', 'absent', 'cast', 'dispelled', 'rebuild']), - depends=dict(default=None), + depends=dict(), update=dict(default=False, type='bool'), update_cache=dict(default=False, aliases=['update_codex'], type='bool'), cache_valid_time=dict(default=0, type='int') diff --git a/plugins/modules/spectrum_device.py b/plugins/modules/spectrum_device.py index 8bf4aa41b5..54cddbffb0 100644 --- a/plugins/modules/spectrum_device.py +++ b/plugins/modules/spectrum_device.py @@ -30,7 +30,7 @@ options: required: true description: - IP address of the device. - - If a hostname is given, it will be resolved to the IP address. + - If a hostname is given, it is resolved to the IP address. community: type: str description: @@ -69,13 +69,13 @@ options: - Oneclick user password. use_proxy: description: - - If V(false), it will not use a proxy, even if one is defined in an environment variable on the target hosts. + - If V(false), it does not use a proxy, even if one is defined in an environment variable on the target hosts. default: true type: bool validate_certs: description: - - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using - self-signed certificates. + - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed + certificates. default: true type: bool agentport: @@ -85,8 +85,8 @@ options: - UDP port used for SNMP discovery. default: 161 notes: - - The devices will be created inside the I(Universe) container of the specified landscape. - - All the operations will be performed only on the specified landscape. + - The devices are created inside the I(Universe) container of the specified landscape. + - All the operations are performed only on the specified landscape. """ EXAMPLES = r""" @@ -119,7 +119,12 @@ device: description: Device data when O(state=present). returned: success type: dict - sample: {'model_handle': '0x1007ab', 'landscape': '0x100000', 'address': '10.10.5.1'} + sample: + { + "model_handle": "0x1007ab", + "landscape": "0x100000", + "address": "10.10.5.1" + } """ from socket import gethostbyname, gaierror diff --git a/plugins/modules/spectrum_model_attrs.py b/plugins/modules/spectrum_model_attrs.py index 9c9fba4deb..53cae10b74 100644 --- a/plugins/modules/spectrum_model_attrs.py +++ b/plugins/modules/spectrum_model_attrs.py @@ -47,7 +47,7 @@ options: aliases: [password] use_proxy: description: - - If V(false), it will not use a proxy, even if one is defined in an environment variable on the target hosts. + - If V(false), it does not use a proxy, even if one is defined in an environment variable on the target hosts. default: true required: false type: bool @@ -99,7 +99,7 @@ options: - C(sysName) (C(0x10b5b)); - C(Vendor_Name) (C(0x11570)); - C(Description) (C(0x230017)). - - Hex IDs are the direct identifiers in Spectrum and will always work. + - Hex IDs are the direct identifiers in Spectrum and always work. - 'To lookup hex IDs go to the UI: Locator -> Devices -> By Model Name -> -> Attributes tab.' type: str required: true @@ -123,7 +123,9 @@ EXAMPLES = r""" - name: "isManaged" value: "false" - name: "Notes" - value: "MM set on {{ ansible_date_time.iso8601 }} via CO {{ CO }} by {{ tower_user_name | default(ansible_user_id) }}" + value: >- + MM set on {{ ansible_date_time.iso8601 }} via CO {{ CO }} + by {{ tower_user_name | default(ansible_user_id) }} delegate_to: localhost register: spectrum_model_attrs_status """ diff --git a/plugins/modules/spotinst_aws_elastigroup.py b/plugins/modules/spotinst_aws_elastigroup.py index 9aa14afd8d..759a094626 100644 --- a/plugins/modules/spotinst_aws_elastigroup.py +++ b/plugins/modules/spotinst_aws_elastigroup.py @@ -11,9 +11,9 @@ short_description: Create, update or delete Spotinst AWS Elastigroups author: Spotinst (@talzur) description: - Can create, update, or delete Spotinst AWS Elastigroups Launch configuration is part of the elastigroup configuration, - so no additional modules are necessary for handling the launch configuration. You will have to have a credentials file - in this location - C($HOME/.spotinst/credentials). The credentials file must contain a row that looks like this C(token - = ). + so no additional modules are necessary for handling the launch configuration. You must have a credentials file in this + location - C($HOME/.spotinst/credentials). The credentials file must contain a row that looks like this C(token = ). - Full documentation available at U(https://help.spotinst.com/hc/en-us/articles/115003530285-Ansible-). requirements: - spotinst_sdk >= 1.0.38 @@ -41,8 +41,8 @@ options: token: description: - A Personal API Access Token issued by Spotinst. - - 'When not specified, the module will try to obtain it, in that order, from: environment variable E(SPOTINST_TOKEN), - or from the credentials path.' + - When not specified, the module tries to obtain it, in that order, from environment variable E(SPOTINST_TOKEN), or + from the credentials path. type: str availability_vs_cost: @@ -82,8 +82,7 @@ options: ebs_optimized: description: - - Enable EBS optimization for supported instances which are not enabled by default.; Note - additional charges will - be applied. + - Enable EBS optimization for supported instances which are not enabled by default. Note - additional charges are applied. type: bool ebs_volume_pool: @@ -106,7 +105,7 @@ options: fallback_to_od: description: - - In case of no spots available, Elastigroup will launch an On-demand instance instead. + - In case of no spots available, Elastigroup launches an On-demand instance instead. type: bool health_check_grace_period: @@ -140,15 +139,15 @@ options: id: description: - - The group ID if it already exists and you want to update, or delete it. This will not work unless the uniqueness_by - field is set to ID. When this is set, and the uniqueness_by field is set, the group will either be updated or deleted, + - The group ID if it already exists and you want to update, or delete it. This does not work unless the O(uniqueness_by) + field is set to ID. When this is set, and the O(uniqueness_by) field is set, the group is either updated or deleted, but not created. type: str image_id: description: - - The image ID used to launch the instance.; In case of conflict between Instance type and image type, an error will - be returned. + - The image ID used to launch the instance.; In case of conflict between Instance type and image type, an error is be + returned. required: true type: str @@ -214,13 +213,13 @@ options: on_demand_count: description: - Required if risk is not set. - - Number of on demand instances to launch. All other instances will be spot instances.; Either set this parameter or - the risk parameter. + - Number of on demand instances to launch. All other instances are spot instances.; Either set this parameter or the + O(risk) parameter. type: int on_demand_instance_type: description: - - On-demand instance type that will be provisioned. + - On-demand instance type that is provisioned. type: str opsworks: @@ -278,7 +277,7 @@ options: security_group_ids: description: - One or more security group IDs. - - In case of update it will override the existing Security Group with the new given array. + - In case of update it overrides the existing Security Group with the new given array. required: true type: list elements: str @@ -302,7 +301,7 @@ options: spot_instance_types: description: - - Spot instance type that will be provisioned. + - Spot instance type that is provisioned. required: true type: list elements: str @@ -388,7 +387,7 @@ options: - name description: - If your group names are not unique, you may use this feature to update or delete a specific group. Whenever this property - is set, you must set a group_id in order to update or delete a group, otherwise a group will be created. + is set, you must set a group_id in order to update or delete a group, otherwise a group is created. default: name type: str @@ -399,7 +398,7 @@ options: utilize_reserved_instances: description: - - In case of any available Reserved Instances, Elastigroup will utilize your reservations before purchasing Spot instances. + - In case of any available Reserved Instances, Elastigroup utilizes your reservations before purchasing Spot instances. type: bool wait_for_instances: diff --git a/plugins/modules/ss_3par_cpg.py b/plugins/modules/ss_3par_cpg.py index c9c9b4bd90..0869d67d84 100644 --- a/plugins/modules/ss_3par_cpg.py +++ b/plugins/modules/ss_3par_cpg.py @@ -38,7 +38,7 @@ options: type: str domain: description: - - Specifies the name of the domain in which the object will reside. + - Specifies the name of the domain in which the object resides. type: str growth_increment: description: @@ -46,11 +46,12 @@ options: type: str growth_limit: description: - - Specifies that the autogrow operation is limited to the specified storage amount that sets the growth limit(in MiB, GiB or TiB). + - Specifies that the autogrow operation is limited to the specified storage amount that sets the growth limit (in MiB, + GiB or TiB). type: str growth_warning: description: - - Specifies that the threshold(in MiB, GiB or TiB) of used logical disk space when exceeded results in a warning alert. + - Specifies that the threshold (in MiB, GiB or TiB) of used logical disk space when exceeded results in a warning alert. type: str high_availability: choices: diff --git a/plugins/modules/ssh_config.py b/plugins/modules/ssh_config.py index b4d6ed16bf..6a83095f37 100644 --- a/plugins/modules/ssh_config.py +++ b/plugins/modules/ssh_config.py @@ -49,7 +49,7 @@ options: host: description: - The endpoint this configuration is valid for. - - Can be an actual address on the internet or an alias that will connect to the value of O(hostname). + - It can be an actual address on the internet or an alias that connects to the value of O(hostname). required: true type: str hostname: @@ -66,7 +66,7 @@ options: type: str identity_file: description: - - The path to an identity file (SSH private key) that will be used when connecting to this host. + - The path to an identity file (SSH private key) that is used when connecting to this host. - File need to exist and have mode V(0600) to be valid. type: path identities_only: @@ -141,7 +141,7 @@ options: version_added: 10.1.0 other_options: description: - - Provides the option to specify arbitrary SSH config entry options via a dictionary. + - Allows specifying arbitrary SSH config entry options using a dictionary. - The key names must be lower case. Keys with upper case values are rejected. - The values must be strings. Other values are rejected. type: dict @@ -198,22 +198,27 @@ hosts_change_diff: description: A list of host diff changes. returned: on change type: list - sample: [ - { - "example.com": { - "new": { - "hostname": "github.com", - "identityfile": ["/tmp/test_ssh_config/fake_id_rsa"], - "port": "2224" - }, - "old": { - "hostname": "github.com", - "identityfile": ["/tmp/test_ssh_config/fake_id_rsa"], - "port": "2224" + sample: + [ + { + "example.com": { + "new": { + "hostname": "github.com", + "identityfile": [ + "/tmp/test_ssh_config/fake_id_rsa" + ], + "port": "2224" + }, + "old": { + "hostname": "github.com", + "identityfile": [ + "/tmp/test_ssh_config/fake_id_rsa" + ], + "port": "2224" + } } } - } - ] + ] """ import os @@ -385,7 +390,7 @@ class SSHConfig(object): def main(): module = AnsibleModule( argument_spec=dict( - group=dict(default=None, type='str'), + group=dict(type='str'), host=dict(type='str', required=True), hostname=dict(type='str'), host_key_algorithms=dict(type='str', no_log=False), @@ -393,24 +398,20 @@ def main(): identities_only=dict(type='bool'), other_options=dict(type='dict'), port=dict(type='str'), - proxycommand=dict(type='str', default=None), - proxyjump=dict(type='str', default=None), + proxycommand=dict(type='str'), + proxyjump=dict(type='str'), forward_agent=dict(type='bool'), add_keys_to_agent=dict(type='bool'), remote_user=dict(type='str'), - ssh_config_file=dict(default=None, type='path'), + ssh_config_file=dict(type='path'), state=dict(type='str', default='present', choices=['present', 'absent']), - strict_host_key_checking=dict( - type='str', - default=None, - choices=['yes', 'no', 'ask', 'accept-new'], - ), - controlmaster=dict(type='str', default=None, choices=['yes', 'no', 'ask', 'auto', 'autoask']), - controlpath=dict(type='str', default=None), - controlpersist=dict(type='str', default=None), + strict_host_key_checking=dict(type='str', choices=['yes', 'no', 'ask', 'accept-new']), + controlmaster=dict(type='str', choices=['yes', 'no', 'ask', 'auto', 'autoask']), + controlpath=dict(type='str'), + controlpersist=dict(type='str'), dynamicforward=dict(type='str'), - user=dict(default=None, type='str'), - user_known_hosts_file=dict(type='str', default=None), + user=dict(type='str'), + user_known_hosts_file=dict(type='str'), ), supports_check_mode=True, mutually_exclusive=[ diff --git a/plugins/modules/stacki_host.py b/plugins/modules/stacki_host.py index bfa4cccff5..095e0b7256 100644 --- a/plugins/modules/stacki_host.py +++ b/plugins/modules/stacki_host.py @@ -119,25 +119,6 @@ EXAMPLES = r""" state: absent """ -RETURN = r""" -changed: - description: Response to whether or not the API call completed successfully. - returned: always - type: bool - sample: true - -stdout: - description: The set of responses from the commands. - returned: always - type: list - sample: ['...', '...'] - -stdout_lines: - description: The value of stdout split into a list. - returned: always - type: list - sample: [['...', '...'], ['...'], ['...']] -""" import json diff --git a/plugins/modules/statusio_maintenance.py b/plugins/modules/statusio_maintenance.py index 9928267bde..c823a286c5 100644 --- a/plugins/modules/statusio_maintenance.py +++ b/plugins/modules/statusio_maintenance.py @@ -111,7 +111,7 @@ options: minutes: type: int description: - - The length of time in UTC that the maintenance will run (starting from playbook runtime). + - The duration of the maintenance window (starting from playbook runtime). default: 10 start_date: type: str @@ -344,30 +344,22 @@ def main(): api_id=dict(required=True), api_key=dict(required=True, no_log=True), statuspage=dict(required=True), - state=dict(required=False, default='present', - choices=['present', 'absent']), - url=dict(default='https://api.status.io', required=False), - components=dict(type='list', elements='str', required=False, default=None, - aliases=['component']), - containers=dict(type='list', elements='str', required=False, default=None, - aliases=['container']), - all_infrastructure_affected=dict(type='bool', default=False, - required=False), - automation=dict(type='bool', default=False, required=False), - title=dict(required=False, default='A new maintenance window'), - desc=dict(required=False, default='Created by Ansible'), - minutes=dict(type='int', required=False, default=10), - maintenance_notify_now=dict(type='bool', default=False, - required=False), - maintenance_notify_72_hr=dict(type='bool', default=False, - required=False), - maintenance_notify_24_hr=dict(type='bool', default=False, - required=False), - maintenance_notify_1_hr=dict(type='bool', default=False, - required=False), - maintenance_id=dict(required=False, default=None), - start_date=dict(default=None, required=False), - start_time=dict(default=None, required=False) + state=dict(default='present', choices=['present', 'absent']), + url=dict(default='https://api.status.io'), + components=dict(type='list', elements='str', aliases=['component']), + containers=dict(type='list', elements='str', aliases=['container']), + all_infrastructure_affected=dict(type='bool', default=False), + automation=dict(type='bool', default=False), + title=dict(default='A new maintenance window'), + desc=dict(default='Created by Ansible'), + minutes=dict(type='int', default=10), + maintenance_notify_now=dict(type='bool', default=False), + maintenance_notify_72_hr=dict(type='bool', default=False), + maintenance_notify_24_hr=dict(type='bool', default=False), + maintenance_notify_1_hr=dict(type='bool', default=False), + maintenance_id=dict(), + start_date=dict(), + start_time=dict() ), supports_check_mode=True, ) diff --git a/plugins/modules/sudoers.py b/plugins/modules/sudoers.py index ac1ff91ff5..f353859a98 100644 --- a/plugins/modules/sudoers.py +++ b/plugins/modules/sudoers.py @@ -42,7 +42,7 @@ options: required: true description: - The name of the sudoers rule. - - This will be used for the filename for the sudoers file managed by this rule. + - This is used for the filename for the sudoers file managed by this rule. type: str noexec: description: @@ -52,7 +52,7 @@ options: version_added: 8.4.0 nopassword: description: - - Whether a password is required when command is run with sudo. + - Whether a password is not required when command is run with sudo. default: true type: bool setenv: @@ -69,12 +69,12 @@ options: version_added: 6.2.0 runas: description: - - Specify the target user the command(s) will run as. + - Specify the target user the command(s) runs as. type: str version_added: 4.7.0 sudoers_path: description: - - The path which sudoers config files will be managed in. + - The path which sudoers config files are managed in. default: /etc/sudoers.d type: str state: @@ -92,9 +92,9 @@ options: type: str validation: description: - - If V(absent), the sudoers rule will be added without validation. - - If V(detect) and visudo is available, then the sudoers rule will be validated by visudo. - - If V(required), visudo must be available to validate the sudoers rule. + - If V(absent), the sudoers rule is added without validation. + - If V(detect) and C(visudo) is available, then the sudoers rule is validated by C(visudo). + - If V(required), C(visudo) must be available to validate the sudoers rule. type: str default: detect choices: [absent, detect, required] diff --git a/plugins/modules/supervisorctl.py b/plugins/modules/supervisorctl.py index 7df1674fea..c2ceb1a52b 100644 --- a/plugins/modules/supervisorctl.py +++ b/plugins/modules/supervisorctl.py @@ -26,8 +26,8 @@ options: type: str description: - The name of the supervisord program or group to manage. - - The name will be taken as group name when it ends with a colon V(:). - - If O(name=all), all programs and program groups will be managed. + - The name is taken as group name when it ends with a colon V(:). + - If O(name=all), all programs and program groups are managed. required: true config: type: path @@ -67,12 +67,11 @@ options: description: - Path to C(supervisorctl) executable. notes: - - When O(state=present), the module will call C(supervisorctl reread) then C(supervisorctl add) if the program/group does - not exist. - - When O(state=restarted), the module will call C(supervisorctl update) then call C(supervisorctl restart). - - When O(state=absent), the module will call C(supervisorctl reread) then C(supervisorctl remove) to remove the target program/group. - If the program/group is still running, the action will fail. If you want to stop the program/group before removing, use - O(stop_before_removing=true). + - When O(state=present), the module calls C(supervisorctl reread) then C(supervisorctl add) if the program/group does not + exist. + - When O(state=restarted), the module calls C(supervisorctl update) then calls C(supervisorctl restart). + - When O(state=absent), the module calls C(supervisorctl reread) then C(supervisorctl remove) to remove the target program/group. + If the program/group is still running, the action fails. If you want to stop the program/group before removing, use O(stop_before_removing=true). requirements: ["supervisorctl"] author: - "Matt Wright (@mattupstate)" diff --git a/plugins/modules/svc.py b/plugins/modules/svc.py index 42b6bcbeb9..4a6e21ef5f 100644 --- a/plugins/modules/svc.py +++ b/plugins/modules/svc.py @@ -30,10 +30,10 @@ options: required: true state: description: - - V(started)/V(stopped) are idempotent actions that will not run commands unless necessary. - - V(restarted) will always bounce the svc (svc -t) and V(killed) will always bounce the svc (svc -k). - - V(reloaded) will send a sigusr1 (svc -1). - - V(once) will run a normally downed svc once (svc -o), not really an idempotent operation. + - V(started)/V(stopped) are idempotent actions that do not run commands unless necessary. + - V(restarted) always bounces the svc (svc -t) and V(killed) always bounces the svc (svc -k). + - V(reloaded) sends a sigusr1 (svc -1). + - V(once) runs a normally downed svc once (svc -o), not really an idempotent operation. type: str choices: [killed, once, reloaded, restarted, started, stopped] downed: diff --git a/plugins/modules/svr4pkg.py b/plugins/modules/svr4pkg.py index 34aa599e01..76d65c8f43 100644 --- a/plugins/modules/svr4pkg.py +++ b/plugins/modules/svr4pkg.py @@ -16,7 +16,7 @@ short_description: Manage Solaris SVR4 packages description: - Manages SVR4 packages on Solaris 10 and 11. - These were the native packages on Solaris <= 10 and are available as a legacy feature in Solaris 11. - - Note that this is a very basic packaging system. It will not enforce dependencies on install or remove. + - Note that this is a very basic packaging system. It does not enforce dependencies on install or remove. author: "Boyd Adamson (@brontitall)" extends_documentation_fragment: - community.general.attributes @@ -192,10 +192,10 @@ def main(): argument_spec=dict( name=dict(required=True), state=dict(required=True, choices=['present', 'absent']), - src=dict(default=None), - proxy=dict(default=None), - response_file=dict(default=None), - zone=dict(required=False, default='all', choices=['current', 'all']), + src=dict(), + proxy=dict(), + response_file=dict(), + zone=dict(default='all', choices=['current', 'all']), category=dict(default=False, type='bool') ), supports_check_mode=True diff --git a/plugins/modules/swdepot.py b/plugins/modules/swdepot.py index 628c63f810..69ed726aa0 100644 --- a/plugins/modules/swdepot.py +++ b/plugins/modules/swdepot.py @@ -16,7 +16,7 @@ DOCUMENTATION = r""" module: swdepot short_description: Manage packages with swdepot package manager (HP-UX) description: - - Will install, upgrade and remove packages with swdepot package manager (HP-UX). + - Installs, upgrades, and removes packages with C(swdepot) package manager (HP-UX). notes: [] author: "Raul Melo (@melodous)" extends_documentation_fragment: @@ -134,7 +134,7 @@ def main(): argument_spec=dict( name=dict(aliases=['pkg'], required=True), state=dict(choices=['present', 'absent', 'latest'], required=True), - depot=dict(default=None, required=False) + depot=dict() ), supports_check_mode=True ) diff --git a/plugins/modules/swupd.py b/plugins/modules/swupd.py index 5b5dbbc48a..c01904821c 100644 --- a/plugins/modules/swupd.py +++ b/plugins/modules/swupd.py @@ -96,16 +96,6 @@ EXAMPLES = r""" manifest: 12920 """ -RETURN = r""" -stdout: - description: C(stdout) of C(swupd). - returned: always - type: str -stderr: - description: C(stderr) of C(swupd). - returned: always - type: str -""" import os from ansible.module_utils.basic import AnsibleModule diff --git a/plugins/modules/syslogger.py b/plugins/modules/syslogger.py index dbe4513d34..7f7dfabd38 100644 --- a/plugins/modules/syslogger.py +++ b/plugins/modules/syslogger.py @@ -167,17 +167,17 @@ def main(): module_args = dict( ident=dict(type='str', default='ansible_syslogger'), msg=dict(type='str', required=True), - priority=dict(type='str', required=False, + priority=dict(type='str', choices=["emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"], default='info'), - facility=dict(type='str', required=False, + facility=dict(type='str', choices=["kern", "user", "mail", "daemon", "auth", "lpr", "news", "uucp", "cron", "syslog", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7"], default='daemon'), - log_pid=dict(type='bool', required=False, default=False) + log_pid=dict(type='bool', default=False) ) module = AnsibleModule( diff --git a/plugins/modules/syspatch.py b/plugins/modules/syspatch.py index 3cedc220f7..f46671fa74 100644 --- a/plugins/modules/syspatch.py +++ b/plugins/modules/syspatch.py @@ -59,20 +59,6 @@ EXAMPLES = r""" """ RETURN = r""" -rc: - description: The command return code (0 means success). - returned: always - type: int -stdout: - description: C(syspatch) standard output. - returned: always - type: str - sample: "001_rip6cksum" -stderr: - description: C(syspatch) standard error. - returned: always - type: str - sample: "syspatch: need root privileges" reboot_needed: description: Whether or not a reboot is required after an update. returned: always @@ -103,7 +89,6 @@ def syspatch_run(module): cmd = module.get_bin_path('syspatch', True) changed = False reboot_needed = False - warnings = [] # Set safe defaults for run_flag and check_flag run_flag = ['-c'] @@ -145,11 +130,11 @@ def syspatch_run(module): # Kernel update applied reboot_needed = True elif out.lower().find('syspatch updated itself') >= 0: - warnings.append('Syspatch was updated. Please run syspatch again.') + module.warn('Syspatch was updated. Please run syspatch again.') # If no stdout, then warn user if len(out) == 0: - warnings.append('syspatch had suggested changes, but stdout was empty.') + module.warn('syspatch had suggested changes, but stdout was empty.') changed = True else: @@ -161,7 +146,6 @@ def syspatch_run(module): rc=rc, stderr=err, stdout=out, - warnings=warnings ) diff --git a/plugins/modules/sysrc.py b/plugins/modules/sysrc.py index dad379d1c0..a3e24830a0 100644 --- a/plugins/modules/sysrc.py +++ b/plugins/modules/sysrc.py @@ -7,6 +7,7 @@ # SPDX-License-Identifier: GPL-3.0-or-later from __future__ import absolute_import, division, print_function + __metaclass__ = type DOCUMENTATION = r""" @@ -94,165 +95,122 @@ EXAMPLES = r""" jail: testjail """ -RETURN = r""" -changed: - description: Return changed for sysrc actions. - returned: always - type: bool - sample: true -""" -from ansible.module_utils.basic import AnsibleModule +from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper + +import os import re -class Sysrc(object): - def __init__(self, module, name, value, path, delim, jail): - self.module = module - self.name = name - self.changed = False - self.value = value - self.path = path - self.delim = delim - self.jail = jail - self.sysrc = module.get_bin_path('sysrc', True) - - def has_unknown_variable(self, out, err): - # newer versions of sysrc use stderr instead of stdout - return err.find("unknown variable") > 0 or out.find("unknown variable") > 0 - - def exists(self): - """ - Tests whether the name is in the file. If parameter value is defined, - then tests whether name=value is in the file. These tests are necessary - because sysrc doesn't use exit codes. Instead, let sysrc read the - file's content and create a dictionary comprising the configuration. - Use this dictionary to preform the tests. - """ - (rc, out, err) = self.run_sysrc('-e', '-a') - conf = dict([i.split('=', 1) for i in out.splitlines()]) - if self.value is None: - return self.name in conf - else: - return self.name in conf and conf[self.name] == '"%s"' % self.value - - def contains(self): - (rc, out, err) = self.run_sysrc('-n', self.name) - if self.has_unknown_variable(out, err): - return False - - return self.value in out.strip().split(self.delim) - - def present(self): - if self.exists(): - return - - if not self.module.check_mode: - (rc, out, err) = self.run_sysrc("%s=%s" % (self.name, self.value)) - - self.changed = True - - def absent(self): - if not self.exists(): - return - - # inversed since we still need to mark as changed - if not self.module.check_mode: - (rc, out, err) = self.run_sysrc('-x', self.name) - if self.has_unknown_variable(out, err): - return - - self.changed = True - - def value_present(self): - if self.contains(): - return - - if self.module.check_mode: - self.changed = True - return - - setstring = '%s+=%s%s' % (self.name, self.delim, self.value) - (rc, out, err) = self.run_sysrc(setstring) - if out.find("%s:" % self.name) == 0: - values = out.split(' -> ')[1].strip().split(self.delim) - if self.value in values: - self.changed = True - - def value_absent(self): - if not self.contains(): - return - - if self.module.check_mode: - self.changed = True - return - - setstring = '%s-=%s%s' % (self.name, self.delim, self.value) - (rc, out, err) = self.run_sysrc(setstring) - if out.find("%s:" % self.name) == 0: - values = out.split(' -> ')[1].strip().split(self.delim) - if self.value not in values: - self.changed = True - - def run_sysrc(self, *args): - cmd = [self.sysrc, '-f', self.path] - if self.jail: - cmd += ['-j', self.jail] - cmd.extend(args) - - (rc, out, err) = self.module.run_command(cmd) - - return (rc, out, err) - - -def main(): - module = AnsibleModule( +class Sysrc(StateModuleHelper): + module = dict( argument_spec=dict( name=dict(type='str', required=True), - value=dict(type='str', default=None), + value=dict(type='str'), state=dict(type='str', default='present', choices=['absent', 'present', 'value_present', 'value_absent']), path=dict(type='str', default='/etc/rc.conf'), delim=dict(type='str', default=' '), - jail=dict(type='str', default=None), + jail=dict(type='str') ), - supports_check_mode=True, + supports_check_mode=True ) + output_params = ('value',) + use_old_vardict = False - name = module.params.pop('name') - # OID style names are not supported - if not re.match('^[a-zA-Z0-9_]+$', name): - module.fail_json( - msg="Name may only contain alphanumeric and underscore characters" - ) + def __init_module__(self): + # OID style names are not supported + if not re.match(r'^\w+$', self.vars.name, re.ASCII): + self.module.fail_json(msg="Name may only contain alpha-numeric and underscore characters") - value = module.params.pop('value') - state = module.params.pop('state') - path = module.params.pop('path') - delim = module.params.pop('delim') - jail = module.params.pop('jail') - result = dict( - name=name, - state=state, - value=value, - path=path, - delim=delim, - jail=jail - ) + self.sysrc = self.module.get_bin_path('sysrc', True) - rc_value = Sysrc(module, name, value, path, delim, jail) + def _contains(self): + value = self._get() + if value is None: + return False, None - if state == 'present': - rc_value.present() - elif state == 'absent': - rc_value.absent() - elif state == 'value_present': - rc_value.value_present() - elif state == 'value_absent': - rc_value.value_absent() + value = value.split(self.vars.delim) - result['changed'] = rc_value.changed + return self.vars.value in value, value - module.exit_json(**result) + def _get(self): + if not os.path.exists(self.vars.path): + return None + + (rc, out, err) = self._sysrc('-v', '-n', self.vars.name) + if "unknown variable" in err or "unknown variable" in out: + # Prior to FreeBSD 11.1 sysrc would write "unknown variable" to stdout and not stderr + # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=229806 + return None + + if out.startswith(self.vars.path): + return out.split(':', 1)[1].strip() + + return None + + def _modify(self, op, changed): + (rc, out, err) = self._sysrc("%s%s=%s%s" % (self.vars.name, op, self.vars.delim, self.vars.value)) + if out.startswith("%s:" % self.vars.name): + return changed(out.split(' -> ')[1].strip().split(self.vars.delim)) + + return False + + def _sysrc(self, *args): + cmd = [self.sysrc, '-f', self.vars.path] + if self.vars.jail: + cmd += ['-j', self.vars.jail] + cmd.extend(args) + + (rc, out, err) = self.module.run_command(cmd) + if "Permission denied" in err: + self.module.fail_json(msg="Permission denied for %s" % self.vars.path) + + return rc, out, err + + def state_absent(self): + if self._get() is None: + return + + if not self.check_mode: + self._sysrc('-x', self.vars.name) + + self.changed = True + + def state_present(self): + value = self._get() + if value == self.vars.value: + return + + if self.vars.value is None: + self.vars.set('value', value) + return + + if not self.check_mode: + self._sysrc("%s=%s" % (self.vars.name, self.vars.value)) + + self.changed = True + + def state_value_absent(self): + (contains, _unused) = self._contains() + if not contains: + return + + self.changed = self.check_mode or self._modify('-', lambda values: self.vars.value not in values) + + def state_value_present(self): + (contains, value) = self._contains() + if contains: + return + + if self.vars.value is None: + self.vars.set('value', value) + return + + self.changed = self.check_mode or self._modify('+', lambda values: self.vars.value in values) + + +def main(): + Sysrc.execute() if __name__ == '__main__': diff --git a/plugins/modules/systemd_creds_decrypt.py b/plugins/modules/systemd_creds_decrypt.py index fbe80f2f16..c896737a93 100644 --- a/plugins/modules/systemd_creds_decrypt.py +++ b/plugins/modules/systemd_creds_decrypt.py @@ -100,16 +100,12 @@ def main(): """Decrypt secret using systemd-creds.""" module = AnsibleModule( argument_spec=dict( - name=dict(type="str", required=False), - newline=dict(type="bool", required=False, default=False), + name=dict(type="str"), + newline=dict(type="bool", default=False), secret=dict(type="str", required=True, no_log=True), - timestamp=dict(type="str", required=False), - transcode=dict( - type="str", - choices=["base64", "unbase64", "hex", "unhex"], - required=False, - ), - user=dict(type="str", required=False), + timestamp=dict(type="str"), + transcode=dict(type="str", choices=["base64", "unbase64", "hex", "unhex"]), + user=dict(type="str"), ), supports_check_mode=True, ) diff --git a/plugins/modules/systemd_creds_encrypt.py b/plugins/modules/systemd_creds_encrypt.py index 6f6e635416..2c4912427e 100644 --- a/plugins/modules/systemd_creds_encrypt.py +++ b/plugins/modules/systemd_creds_encrypt.py @@ -97,12 +97,12 @@ def main(): """Encrypt secret using systemd-creds.""" module = AnsibleModule( argument_spec=dict( - name=dict(type="str", required=False), - not_after=dict(type="str", required=False), + name=dict(type="str"), + not_after=dict(type="str"), pretty=dict(type="bool", default=False), secret=dict(type="str", required=True, no_log=True), - timestamp=dict(type="str", required=False), - user=dict(type="str", required=False), + timestamp=dict(type="str"), + user=dict(type="str"), ), supports_check_mode=True, ) diff --git a/plugins/modules/systemd_info.py b/plugins/modules/systemd_info.py index 139365856d..12f308849c 100644 --- a/plugins/modules/systemd_info.py +++ b/plugins/modules/systemd_info.py @@ -14,13 +14,13 @@ short_description: Gather C(systemd) unit info description: - This module gathers info about systemd units (services, targets, sockets, mounts, timers). - Timer units are supported since community.general 10.5.0. - - It runs C(systemctl list-units) (or processes selected units) and collects properties - for each unit using C(systemctl show). - - In case a unit has multiple properties with the same name, only the value of the first one will be collected. - - Even if a unit has a RV(units.loadstate) of V(not-found) or V(masked), it is returned, - but only with the minimal properties (RV(units.name), RV(units.loadstate), RV(units.activestate), RV(units.substate)). - - When O(unitname) and O(extra_properties) are used, the module first checks if the unit exists, - then check if properties exist. If not, the module fails. + - It runs C(systemctl list-units) (or processes selected units) and collects properties for each unit using C(systemctl + show). + - In case a unit has multiple properties with the same name, only the value of the first one is collected. + - Even if a unit has a RV(units.loadstate) of V(not-found) or V(masked), it is returned, but only with the minimal properties + (RV(units.name), RV(units.loadstate), RV(units.activestate), RV(units.substate)). + - When O(unitname) and O(extra_properties) are used, the module first checks if the unit exists, then check if properties + exist. If not, the module fails. - When O(unitname) is used with wildcard expressions, the module checks for units that match the indicated expressions, if units are not present for all the indicated expressions, the module fails. version_added: "10.4.0" @@ -89,7 +89,7 @@ RETURN = r""" units: description: - Dictionary of systemd unit info keyed by unit name. - - Additional fields will be returned depending on the value of O(extra_properties). + - Additional fields are returned depending on the value of O(extra_properties). returned: success type: dict elements: dict @@ -116,7 +116,8 @@ units: substate: description: - The detailed sub state of the unit. - - The most common values are V(running), V(dead), V(exited), V(failed), V(listening), V(active), and V(mounted), but other values are possible as well. + - The most common values are V(running), V(dead), V(exited), V(failed), V(listening), V(active), and V(mounted), but + other values are possible as well. returned: always type: str sample: running diff --git a/plugins/modules/sysupgrade.py b/plugins/modules/sysupgrade.py index cb9eb08226..d247e9d74c 100644 --- a/plugins/modules/sysupgrade.py +++ b/plugins/modules/sysupgrade.py @@ -25,7 +25,7 @@ options: snapshot: description: - Apply the latest snapshot. - - Otherwise release will be applied. + - Otherwise release is applied. default: false type: bool force: @@ -36,14 +36,13 @@ options: keep_files: description: - Keep the files under C(/home/_sysupgrade). - - By default, the files will be deleted after the upgrade. + - By default, the files are deleted after the upgrade. default: false type: bool fetch_only: description: - Fetch and verify files and create C(/bsd.upgrade) but do not reboot. - - Set to V(false) if you want C(sysupgrade) to reboot. This will cause Ansible to error, as it expects the module to - exit gracefully. See the examples. + - Set to V(false) if you want C(sysupgrade) to reboot. This causes the module to fail. See the examples. default: true type: bool installurl: @@ -79,21 +78,6 @@ EXAMPLES = r""" ignore_errors: true """ -RETURN = r""" -rc: - description: The command return code (0 means success). - returned: always - type: int -stdout: - description: Sysupgrade standard output. - returned: always - type: str -stderr: - description: Sysupgrade standard error. - returned: always - type: str - sample: "sysupgrade: need root privileges" -""" from ansible.module_utils.basic import AnsibleModule @@ -102,7 +86,6 @@ def sysupgrade_run(module): sysupgrade_bin = module.get_bin_path('/usr/sbin/sysupgrade', required=True) cmd = [sysupgrade_bin] changed = False - warnings = [] # Setup command flags if module.params['snapshot']: @@ -138,7 +121,6 @@ def sysupgrade_run(module): rc=rc, stderr=err, stdout=out, - warnings=warnings ) diff --git a/plugins/modules/taiga_issue.py b/plugins/modules/taiga_issue.py index e614b235ec..d7f8824c95 100644 --- a/plugins/modules/taiga_issue.py +++ b/plugins/modules/taiga_issue.py @@ -255,18 +255,18 @@ def manage_issue(taiga_host, project_name, issue_subject, issue_priority, def main(): module = AnsibleModule( argument_spec=dict( - taiga_host=dict(type='str', required=False, default="https://api.taiga.io"), + taiga_host=dict(type='str', default="https://api.taiga.io"), project=dict(type='str', required=True), subject=dict(type='str', required=True), issue_type=dict(type='str', required=True), - priority=dict(type='str', required=False, default="Normal"), - status=dict(type='str', required=False, default="New"), - severity=dict(type='str', required=False, default="Normal"), - description=dict(type='str', required=False, default=""), - attachment=dict(type='path', required=False, default=None), - attachment_description=dict(type='str', required=False, default=""), - tags=dict(required=False, default=[], type='list', elements='str'), - state=dict(type='str', required=False, choices=['present', 'absent'], default='present'), + priority=dict(type='str', default="Normal"), + status=dict(type='str', default="New"), + severity=dict(type='str', default="Normal"), + description=dict(type='str', default=""), + attachment=dict(type='path'), + attachment_description=dict(type='str', default=""), + tags=dict(default=[], type='list', elements='str'), + state=dict(type='str', choices=['present', 'absent'], default='present'), ), supports_check_mode=True ) diff --git a/plugins/modules/telegram.py b/plugins/modules/telegram.py index 6773f48bf5..abaa72c83e 100644 --- a/plugins/modules/telegram.py +++ b/plugins/modules/telegram.py @@ -21,7 +21,7 @@ description: - Send notifications using telegram bot, to a verified group or user. - Also, the user may try to use any other telegram bot API method, if you specify O(api_method) argument. notes: - - You will require a telegram account and create telegram bot to use this module. + - You need a telegram account and create telegram bot to use this module. extends_documentation_fragment: - community.general.attributes attributes: diff --git a/plugins/modules/terraform.py b/plugins/modules/terraform.py index dd34ba9a0e..a5adbcbe7e 100644 --- a/plugins/modules/terraform.py +++ b/plugins/modules/terraform.py @@ -58,19 +58,19 @@ options: purge_workspace: description: - Only works with state = absent. - - If true, the workspace will be deleted after the "terraform destroy" action. - - The 'default' workspace will not be deleted. + - If V(true), the O(workspace) is deleted after the C(terraform destroy) action. + - If O(workspace=default) then it is not deleted. default: false type: bool plan_file: description: - - The path to an existing Terraform plan file to apply. If this is not specified, Ansible will build a new TF plan and - execute it. Note that this option is required if 'state' has the 'planned' value. + - The path to an existing Terraform plan file to apply. If this is not specified, Ansible builds a new TF plan and execute + it. Note that this option is required if O(state=planned). type: path state_file: description: - The path to an existing Terraform state file to use when building plan. If this is not specified, the default C(terraform.tfstate) - will be used. + is used. - This option is ignored when plan is specified. type: path variables_files: @@ -91,7 +91,7 @@ options: - Ansible dictionaries are mapped to terraform objects. - Ansible lists are mapped to terraform lists. - Ansible booleans are mapped to terraform booleans. - - B(Note) passwords passed as variables will be visible in the log output. Make sure to use C(no_log=true) in production!. + - B(Note) passwords passed as variables are visible in the log output. Make sure to use C(no_log=true) in production!. type: dict complex_vars: description: @@ -104,7 +104,7 @@ options: version_added: 5.7.0 targets: description: - - A list of specific resources to target in this plan/application. The resources selected here will also auto-include + - A list of specific resources to target in this plan/application. The resources selected here are also auto-include any dependencies. type: list elements: str @@ -120,7 +120,7 @@ options: type: int force_init: description: - - To avoid duplicating infra, if a state file cannot be found this will force a C(terraform init). Generally, this should + - To avoid duplicating infra, if a state file cannot be found this forces a C(terraform init). Generally, this should be turned off unless you intend to provision an entirely new Terraform deployment. default: false type: bool @@ -272,11 +272,6 @@ outputs: type: str returned: always description: The value of the output as interpolated by Terraform. -stdout: - type: str - description: Full C(terraform) command stdout, in case you want to display it or examine the event log. - returned: always - sample: '' command: type: str description: Full C(terraform) command built by this module, in case you want to re-run the command outside the module or diff --git a/plugins/modules/timezone.py b/plugins/modules/timezone.py index 37eb2f94a6..6e105c0bad 100644 --- a/plugins/modules/timezone.py +++ b/plugins/modules/timezone.py @@ -57,20 +57,6 @@ author: - Indrajit Raychaudhuri (@indrajitr) """ -RETURN = r""" -diff: - description: The differences about the given arguments. - returned: success - type: complex - contains: - before: - description: The values before change. - type: dict - after: - description: The values after change. - type: dict -""" - EXAMPLES = r""" - name: Set timezone to Asia/Tokyo become: true diff --git a/plugins/modules/twilio.py b/plugins/modules/twilio.py index 09169075a1..4d9dd6ac19 100644 --- a/plugins/modules/twilio.py +++ b/plugins/modules/twilio.py @@ -150,7 +150,7 @@ def main(): msg=dict(required=True), from_number=dict(required=True), to_numbers=dict(required=True, aliases=['to_number'], type='list', elements='str'), - media_url=dict(default=None, required=False), + media_url=dict(), ), supports_check_mode=True ) diff --git a/plugins/modules/typetalk.py b/plugins/modules/typetalk.py index 505c1a4abd..8728bfb21a 100644 --- a/plugins/modules/typetalk.py +++ b/plugins/modules/typetalk.py @@ -14,6 +14,10 @@ module: typetalk short_description: Send a message to typetalk description: - Send a message to typetalk using typetalk API. +deprecated: + removed_in: 13.0.0 + why: The typetalk service will be discontinued on Dec 2025. See U(https://nulab.com/blog/company-news/typetalk-sunsetting/). + alternative: There is none. extends_documentation_fragment: - community.general.attributes attributes: diff --git a/plugins/modules/utm_aaa_group.py b/plugins/modules/utm_aaa_group.py index b29f3d50af..d1444b5bd7 100644 --- a/plugins/modules/utm_aaa_group.py +++ b/plugins/modules/utm_aaa_group.py @@ -28,7 +28,7 @@ attributes: options: name: description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. type: str required: true adirectory_groups: @@ -210,20 +210,20 @@ def main(): module = UTMModule( argument_spec=dict( name=dict(type='str', required=True), - adirectory_groups=dict(type='list', elements='str', required=False, default=[]), - adirectory_groups_sids=dict(type='dict', required=False, default={}), - backend_match=dict(type='str', required=False, default="none", + adirectory_groups=dict(type='list', elements='str', default=[]), + adirectory_groups_sids=dict(type='dict', default={}), + backend_match=dict(type='str', default="none", choices=["none", "adirectory", "edirectory", "radius", "tacacs", "ldap"]), - comment=dict(type='str', required=False, default=""), - dynamic=dict(type='str', required=False, default="none", choices=["none", "ipsec_dn", "directory_groups"]), - edirectory_groups=dict(type='list', elements='str', required=False, default=[]), - ipsec_dn=dict(type='str', required=False, default=""), - ldap_attribute=dict(type='str', required=False, default=""), - ldap_attribute_value=dict(type='str', required=False, default=""), - members=dict(type='list', elements='str', required=False, default=[]), - network=dict(type='str', required=False, default=""), - radius_groups=dict(type='list', elements='str', required=False, default=[]), - tacacs_groups=dict(type='list', elements='str', required=False, default=[]), + comment=dict(type='str', default=""), + dynamic=dict(type='str', default="none", choices=["none", "ipsec_dn", "directory_groups"]), + edirectory_groups=dict(type='list', elements='str', default=[]), + ipsec_dn=dict(type='str', default=""), + ldap_attribute=dict(type='str', default=""), + ldap_attribute_value=dict(type='str', default=""), + members=dict(type='list', elements='str', default=[]), + network=dict(type='str', default=""), + radius_groups=dict(type='list', elements='str', default=[]), + tacacs_groups=dict(type='list', elements='str', default=[]), ) ) try: diff --git a/plugins/modules/utm_aaa_group_info.py b/plugins/modules/utm_aaa_group_info.py index 91fe8ce930..ee0d1c1234 100644 --- a/plugins/modules/utm_aaa_group_info.py +++ b/plugins/modules/utm_aaa_group_info.py @@ -29,7 +29,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true extends_documentation_fragment: diff --git a/plugins/modules/utm_ca_host_key_cert.py b/plugins/modules/utm_ca_host_key_cert.py index b67531c061..1e6fa1c713 100644 --- a/plugins/modules/utm_ca_host_key_cert.py +++ b/plugins/modules/utm_ca_host_key_cert.py @@ -29,7 +29,7 @@ attributes: options: name: description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true type: str ca: @@ -148,9 +148,9 @@ def main(): ca=dict(type='str', required=True), meta=dict(type='str', required=True), certificate=dict(type='str', required=True), - comment=dict(type='str', required=False), - encrypted=dict(type='bool', required=False, default=False), - key=dict(type='str', required=False, no_log=True), + comment=dict(type='str'), + encrypted=dict(type='bool', default=False), + key=dict(type='str', no_log=True), ) ) try: diff --git a/plugins/modules/utm_ca_host_key_cert_info.py b/plugins/modules/utm_ca_host_key_cert_info.py index cab6657ab6..a0fcb97146 100644 --- a/plugins/modules/utm_ca_host_key_cert_info.py +++ b/plugins/modules/utm_ca_host_key_cert_info.py @@ -28,7 +28,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true extends_documentation_fragment: diff --git a/plugins/modules/utm_dns_host.py b/plugins/modules/utm_dns_host.py index 2eb404b38c..e1a63e1f73 100644 --- a/plugins/modules/utm_dns_host.py +++ b/plugins/modules/utm_dns_host.py @@ -29,7 +29,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true address: type: str @@ -130,7 +130,7 @@ result: description: Whether the ipv6 address is resolved or not. type: bool timeout: - description: The timeout until a new resolving will be attempted. + description: The timeout until a new resolving is attempted. type: int """ @@ -144,14 +144,14 @@ def main(): module = UTMModule( argument_spec=dict( name=dict(type='str', required=True), - address=dict(type='str', required=False, default='0.0.0.0'), - address6=dict(type='str', required=False, default='::'), - comment=dict(type='str', required=False, default=""), - hostname=dict(type='str', required=False), - interface=dict(type='str', required=False, default=""), - resolved=dict(type='bool', required=False, default=False), - resolved6=dict(type='bool', required=False, default=False), - timeout=dict(type='int', required=False, default=0), + address=dict(type='str', default='0.0.0.0'), + address6=dict(type='str', default='::'), + comment=dict(type='str', default=""), + hostname=dict(type='str'), + interface=dict(type='str', default=""), + resolved=dict(type='bool', default=False), + resolved6=dict(type='bool', default=False), + timeout=dict(type='int', default=0), ) ) try: diff --git a/plugins/modules/utm_network_interface_address.py b/plugins/modules/utm_network_interface_address.py index 1e3d2ee5c3..7212897655 100644 --- a/plugins/modules/utm_network_interface_address.py +++ b/plugins/modules/utm_network_interface_address.py @@ -29,7 +29,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true address: type: str @@ -123,10 +123,10 @@ def main(): argument_spec=dict( name=dict(type='str', required=True), address=dict(type='str', required=True), - comment=dict(type='str', required=False, default=""), - address6=dict(type='str', required=False), - resolved=dict(type='bool', required=False), - resolved6=dict(type='bool', required=False), + comment=dict(type='str', default=""), + address6=dict(type='str'), + resolved=dict(type='bool'), + resolved6=dict(type='bool'), ) ) try: diff --git a/plugins/modules/utm_network_interface_address_info.py b/plugins/modules/utm_network_interface_address_info.py index b9c394c848..a5b3ff7b3b 100644 --- a/plugins/modules/utm_network_interface_address_info.py +++ b/plugins/modules/utm_network_interface_address_info.py @@ -27,7 +27,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true extends_documentation_fragment: diff --git a/plugins/modules/utm_proxy_auth_profile.py b/plugins/modules/utm_proxy_auth_profile.py index 207c4ba156..96ae3aa869 100644 --- a/plugins/modules/utm_proxy_auth_profile.py +++ b/plugins/modules/utm_proxy_auth_profile.py @@ -30,7 +30,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true aaa: type: list @@ -316,29 +316,29 @@ def main(): name=dict(type='str', required=True), aaa=dict(type='list', elements='str', required=True), basic_prompt=dict(type='str', required=True), - backend_mode=dict(type='str', required=False, default="None", choices=['Basic', 'None']), - backend_strip_basic_auth=dict(type='bool', required=False, default=True), - backend_user_prefix=dict(type='str', required=False, default=""), - backend_user_suffix=dict(type='str', required=False, default=""), - comment=dict(type='str', required=False, default=""), - frontend_cookie=dict(type='str', required=False), - frontend_cookie_secret=dict(type='str', required=False, no_log=True), - frontend_form=dict(type='str', required=False), - frontend_form_template=dict(type='str', required=False, default=""), - frontend_login=dict(type='str', required=False), - frontend_logout=dict(type='str', required=False), - frontend_mode=dict(type='str', required=False, default="Basic", choices=['Basic', 'Form']), - frontend_realm=dict(type='str', required=False), - frontend_session_allow_persistency=dict(type='bool', required=False, default=False), + backend_mode=dict(type='str', default="None", choices=['Basic', 'None']), + backend_strip_basic_auth=dict(type='bool', default=True), + backend_user_prefix=dict(type='str', default=""), + backend_user_suffix=dict(type='str', default=""), + comment=dict(type='str', default=""), + frontend_cookie=dict(type='str'), + frontend_cookie_secret=dict(type='str', no_log=True), + frontend_form=dict(type='str'), + frontend_form_template=dict(type='str', default=""), + frontend_login=dict(type='str'), + frontend_logout=dict(type='str'), + frontend_mode=dict(type='str', default="Basic", choices=['Basic', 'Form']), + frontend_realm=dict(type='str'), + frontend_session_allow_persistency=dict(type='bool', default=False), frontend_session_lifetime=dict(type='int', required=True), - frontend_session_lifetime_limited=dict(type='bool', required=False, default=True), - frontend_session_lifetime_scope=dict(type='str', required=False, default="hours", choices=['days', 'hours', 'minutes']), + frontend_session_lifetime_limited=dict(type='bool', default=True), + frontend_session_lifetime_scope=dict(type='str', default="hours", choices=['days', 'hours', 'minutes']), frontend_session_timeout=dict(type='int', required=True), - frontend_session_timeout_enabled=dict(type='bool', required=False, default=True), - frontend_session_timeout_scope=dict(type='str', required=False, default="minutes", choices=['days', 'hours', 'minutes']), - logout_delegation_urls=dict(type='list', elements='str', required=False, default=[]), - logout_mode=dict(type='str', required=False, default="None", choices=['None', 'Delegation']), - redirect_to_requested_url=dict(type='bool', required=False, default=False) + frontend_session_timeout_enabled=dict(type='bool', default=True), + frontend_session_timeout_scope=dict(type='str', default="minutes", choices=['days', 'hours', 'minutes']), + logout_delegation_urls=dict(type='list', elements='str', default=[]), + logout_mode=dict(type='str', default="None", choices=['None', 'Delegation']), + redirect_to_requested_url=dict(type='bool', default=False) ) ) try: diff --git a/plugins/modules/utm_proxy_exception.py b/plugins/modules/utm_proxy_exception.py index 96cb592e59..174156394c 100644 --- a/plugins/modules/utm_proxy_exception.py +++ b/plugins/modules/utm_proxy_exception.py @@ -29,7 +29,7 @@ attributes: options: name: description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true type: str op: @@ -220,20 +220,20 @@ def main(): module = UTMModule( argument_spec=dict( name=dict(type='str', required=True), - op=dict(type='str', required=False, default='AND', choices=['AND', 'OR']), - path=dict(type='list', elements='str', required=False, default=[]), - skip_custom_threats_filters=dict(type='list', elements='str', required=False, default=[]), - skip_threats_filter_categories=dict(type='list', elements='str', required=False, default=[]), - skipav=dict(type='bool', required=False, default=False), - skipbadclients=dict(type='bool', required=False, default=False), - skipcookie=dict(type='bool', required=False, default=False), - skipform=dict(type='bool', required=False, default=False), - skipform_missingtoken=dict(type='bool', required=False, default=False), - skiphtmlrewrite=dict(type='bool', required=False, default=False), - skiptft=dict(type='bool', required=False, default=False), - skipurl=dict(type='bool', required=False, default=False), - source=dict(type='list', elements='str', required=False, default=[]), - status=dict(type='bool', required=False, default=True), + op=dict(type='str', default='AND', choices=['AND', 'OR']), + path=dict(type='list', elements='str', default=[]), + skip_custom_threats_filters=dict(type='list', elements='str', default=[]), + skip_threats_filter_categories=dict(type='list', elements='str', default=[]), + skipav=dict(type='bool', default=False), + skipbadclients=dict(type='bool', default=False), + skipcookie=dict(type='bool', default=False), + skipform=dict(type='bool', default=False), + skipform_missingtoken=dict(type='bool', default=False), + skiphtmlrewrite=dict(type='bool', default=False), + skiptft=dict(type='bool', default=False), + skipurl=dict(type='bool', default=False), + source=dict(type='list', elements='str', default=[]), + status=dict(type='bool', default=True), ) ) try: diff --git a/plugins/modules/utm_proxy_frontend.py b/plugins/modules/utm_proxy_frontend.py index 09f0cdd4bc..5330311516 100644 --- a/plugins/modules/utm_proxy_frontend.py +++ b/plugins/modules/utm_proxy_frontend.py @@ -30,7 +30,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true add_content_type_header: description: @@ -76,12 +76,12 @@ options: default: [] htmlrewrite: description: - - Whether to enable html rewrite or not. + - Whether to enable HTML rewrite or not. type: bool default: false htmlrewrite_cookies: description: - - Whether to enable html rewrite cookie or not. + - Whether to enable HTML rewrite cookie or not. type: bool default: false implicitredirect: @@ -204,7 +204,7 @@ result: description: List of associated proxy exceptions. type: list htmlrewrite: - description: State of html rewrite. + description: State of HTML rewrite. type: bool htmlrewrite_cookies: description: Whether the HTML rewrite cookie is set. @@ -251,26 +251,26 @@ def main(): module = UTMModule( argument_spec=dict( name=dict(type='str', required=True), - add_content_type_header=dict(type='bool', required=False, default=False), - address=dict(type='str', required=False, default="REF_DefaultInternalAddress"), - allowed_networks=dict(type='list', elements='str', required=False, default=["REF_NetworkAny"]), - certificate=dict(type='str', required=False, default=""), - comment=dict(type='str', required=False, default=""), - disable_compression=dict(type='bool', required=False, default=False), - domain=dict(type='list', elements='str', required=False), - exceptions=dict(type='list', elements='str', required=False, default=[]), - htmlrewrite=dict(type='bool', required=False, default=False), - htmlrewrite_cookies=dict(type='bool', required=False, default=False), - implicitredirect=dict(type='bool', required=False, default=False), - lbmethod=dict(type='str', required=False, default="bybusyness", + add_content_type_header=dict(type='bool', default=False), + address=dict(type='str', default="REF_DefaultInternalAddress"), + allowed_networks=dict(type='list', elements='str', default=["REF_NetworkAny"]), + certificate=dict(type='str', default=""), + comment=dict(type='str', default=""), + disable_compression=dict(type='bool', default=False), + domain=dict(type='list', elements='str'), + exceptions=dict(type='list', elements='str', default=[]), + htmlrewrite=dict(type='bool', default=False), + htmlrewrite_cookies=dict(type='bool', default=False), + implicitredirect=dict(type='bool', default=False), + lbmethod=dict(type='str', default="bybusyness", choices=['bybusyness', 'bytraffic', 'byrequests', '']), - locations=dict(type='list', elements='str', required=False, default=[]), - port=dict(type='int', required=False, default=80), - preservehost=dict(type='bool', required=False, default=False), - profile=dict(type='str', required=False, default=""), - status=dict(type='bool', required=False, default=True), - type=dict(type='str', required=False, default="http", choices=['http', 'https']), - xheaders=dict(type='bool', required=False, default=False), + locations=dict(type='list', elements='str', default=[]), + port=dict(type='int', default=80), + preservehost=dict(type='bool', default=False), + profile=dict(type='str', default=""), + status=dict(type='bool', default=True), + type=dict(type='str', default="http", choices=['http', 'https']), + xheaders=dict(type='bool', default=False), ) ) try: diff --git a/plugins/modules/utm_proxy_frontend_info.py b/plugins/modules/utm_proxy_frontend_info.py index 722e2621a2..859ee67de1 100644 --- a/plugins/modules/utm_proxy_frontend_info.py +++ b/plugins/modules/utm_proxy_frontend_info.py @@ -29,7 +29,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true extends_documentation_fragment: @@ -90,7 +90,7 @@ result: description: List of associated proxy exceptions. type: list htmlrewrite: - description: State of html rewrite. + description: State of HTML rewrite. type: bool htmlrewrite_cookies: description: Whether the HTML rewrite cookie is set. diff --git a/plugins/modules/utm_proxy_location.py b/plugins/modules/utm_proxy_location.py index 95ee210e97..15b89bb1a2 100644 --- a/plugins/modules/utm_proxy_location.py +++ b/plugins/modules/utm_proxy_location.py @@ -30,7 +30,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true access_control: description: @@ -198,19 +198,19 @@ def main(): module = UTMModule( argument_spec=dict( name=dict(type='str', required=True), - access_control=dict(type='str', required=False, default="0", choices=['0', '1']), - allowed_networks=dict(type='list', elements='str', required=False, default=['REF_NetworkAny']), - auth_profile=dict(type='str', required=False, default=""), - backend=dict(type='list', elements='str', required=False, default=[]), - be_path=dict(type='str', required=False, default=""), - comment=dict(type='str', required=False, default=""), - denied_networks=dict(type='list', elements='str', required=False, default=[]), - hot_standby=dict(type='bool', required=False, default=False), - path=dict(type='str', required=False, default="/"), - status=dict(type='bool', required=False, default=True), - stickysession_id=dict(type='str', required=False, default='ROUTEID'), - stickysession_status=dict(type='bool', required=False, default=False), - websocket_passthrough=dict(type='bool', required=False, default=False), + access_control=dict(type='str', default="0", choices=['0', '1']), + allowed_networks=dict(type='list', elements='str', default=['REF_NetworkAny']), + auth_profile=dict(type='str', default=""), + backend=dict(type='list', elements='str', default=[]), + be_path=dict(type='str', default=""), + comment=dict(type='str', default=""), + denied_networks=dict(type='list', elements='str', default=[]), + hot_standby=dict(type='bool', default=False), + path=dict(type='str', default="/"), + status=dict(type='bool', default=True), + stickysession_id=dict(type='str', default='ROUTEID'), + stickysession_status=dict(type='bool', default=False), + websocket_passthrough=dict(type='bool', default=False), ) ) try: diff --git a/plugins/modules/utm_proxy_location_info.py b/plugins/modules/utm_proxy_location_info.py index 0512d4be15..7a8db919c2 100644 --- a/plugins/modules/utm_proxy_location_info.py +++ b/plugins/modules/utm_proxy_location_info.py @@ -29,7 +29,7 @@ options: name: type: str description: - - The name of the object. Will be used to identify the entry. + - The name of the object that identifies the entry. required: true extends_documentation_fragment: diff --git a/plugins/modules/vdo.py b/plugins/modules/vdo.py index a176e038eb..dbfa44f5b6 100644 --- a/plugins/modules/vdo.py +++ b/plugins/modules/vdo.py @@ -48,8 +48,8 @@ options: default: present activated: description: - - The C(activate) status for a VDO volume. If this is set to V(false), the VDO volume cannot be started, and it will - not start on system startup. However, on initial creation, a VDO volume with "activated" set to "off" will be running, + - The C(activate) status for a VDO volume. If this is set to V(false), the VDO volume cannot be started, and it does + not start on system startup. However, on initial creation, a VDO volume with O(activated=false) is set to be running until stopped. This is the default behavior of the C(vdo create) command; it provides the user an opportunity to write a base amount of metadata (filesystem, LVM headers, and so on) to the VDO volume prior to stopping the volume, and leaving it deactivated until ready to use. diff --git a/plugins/modules/vertica_configuration.py b/plugins/modules/vertica_configuration.py index 39ed27dc2d..d97fbf5ed4 100644 --- a/plugins/modules/vertica_configuration.py +++ b/plugins/modules/vertica_configuration.py @@ -139,12 +139,12 @@ def main(): module = AnsibleModule( argument_spec=dict( parameter=dict(required=True, aliases=['name']), - value=dict(default=None), - db=dict(default=None), + value=dict(), + db=dict(), cluster=dict(default='localhost'), port=dict(default='5433'), login_user=dict(default='dbadmin'), - login_password=dict(default=None, no_log=True), + login_password=dict(no_log=True), ), supports_check_mode=True) if not pyodbc_found: diff --git a/plugins/modules/vertica_info.py b/plugins/modules/vertica_info.py index 29f8669c27..340e782f31 100644 --- a/plugins/modules/vertica_info.py +++ b/plugins/modules/vertica_info.py @@ -227,9 +227,9 @@ def main(): argument_spec=dict( cluster=dict(default='localhost'), port=dict(default='5433'), - db=dict(default=None), + db=dict(), login_user=dict(default='dbadmin'), - login_password=dict(default=None, no_log=True), + login_password=dict(no_log=True), ), supports_check_mode=True) if not pyodbc_found: diff --git a/plugins/modules/vertica_role.py b/plugins/modules/vertica_role.py index d814aca273..550c612b8d 100644 --- a/plugins/modules/vertica_role.py +++ b/plugins/modules/vertica_role.py @@ -180,7 +180,7 @@ def main(): module = AnsibleModule( argument_spec=dict( role=dict(required=True, aliases=['name']), - assigned_roles=dict(default=None, aliases=['assigned_role']), + assigned_roles=dict(aliases=['assigned_role']), state=dict(default='present', choices=['absent', 'present']), db=dict(), cluster=dict(default='localhost'), diff --git a/plugins/modules/vmadm.py b/plugins/modules/vmadm.py index 8808eeea11..fc7504fba5 100644 --- a/plugins/modules/vmadm.py +++ b/plugins/modules/vmadm.py @@ -107,7 +107,8 @@ options: flexible_disk_size: required: false description: - - This sets an upper bound for the amount of space that a bhyve instance may use for its disks and snapshots of those disks (in MiBs). + - This sets an upper bound for the amount of space that a bhyve instance may use for its disks and snapshots of those + disks (in MiBs). type: int version_added: 10.5.0 force: diff --git a/plugins/modules/xbps.py b/plugins/modules/xbps.py index 3087e4d79d..dc9d131bd7 100644 --- a/plugins/modules/xbps.py +++ b/plugins/modules/xbps.py @@ -363,7 +363,7 @@ def main(): module = AnsibleModule( argument_spec=dict( - name=dict(default=None, aliases=['pkg', 'package'], type='list', elements='str'), + name=dict(aliases=['pkg', 'package'], type='list', elements='str'), state=dict(default='present', choices=['present', 'installed', 'latest', 'absent', 'removed']), diff --git a/plugins/modules/xcc_redfish_command.py b/plugins/modules/xcc_redfish_command.py index 8e5cbf7d3e..9dbbe8016f 100644 --- a/plugins/modules/xcc_redfish_command.py +++ b/plugins/modules/xcc_redfish_command.py @@ -273,33 +273,34 @@ redfish_facts: description: Resource content. returned: when command == GetResource or command == GetCollectionResource type: dict - sample: '{ - "redfish_facts": { - "data": { - "@odata.etag": "\"3179bf00d69f25a8b3c\"", - "@odata.id": "/redfish/v1/Managers/1/NetworkProtocol/Oem/Lenovo/DNS", - "@odata.type": "#LenovoDNS.v1_0_0.LenovoDNS", - "DDNS": [ - { - "DDNSEnable": true, - "DomainName": "", - "DomainNameSource": "DHCP" - } - ], - "DNSEnable": true, - "Description": "This resource is used to represent a DNS resource for a Redfish implementation.", - "IPv4Address1": "10.103.62.178", - "IPv4Address2": "0.0.0.0", - "IPv4Address3": "0.0.0.0", - "IPv6Address1": "::", - "IPv6Address2": "::", - "IPv6Address3": "::", - "Id": "LenovoDNS", - "PreferredAddresstype": "IPv4" - }, - "ret": true + sample: + { + "redfish_facts": { + "data": { + "@odata.etag": "\"3179bf00d69f25a8b3c\"", + "@odata.id": "/redfish/v1/Managers/1/NetworkProtocol/Oem/Lenovo/DNS", + "@odata.type": "#LenovoDNS.v1_0_0.LenovoDNS", + "DDNS": [ + { + "DDNSEnable": true, + "DomainName": "", + "DomainNameSource": "DHCP" + } + ], + "DNSEnable": true, + "Description": "This resource is used to represent a DNS resource for a Redfish implementation.", + "IPv4Address1": "10.103.62.178", + "IPv4Address2": "0.0.0.0", + "IPv4Address3": "0.0.0.0", + "IPv6Address1": "::", + "IPv6Address2": "::", + "IPv6Address3": "::", + "Id": "LenovoDNS", + "PreferredAddresstype": "IPv4" + }, + "ret": true + } } - }' """ from ansible.module_utils.basic import AnsibleModule diff --git a/plugins/modules/xdg_mime.py b/plugins/modules/xdg_mime.py index 7974420a8d..cf297187a4 100644 --- a/plugins/modules/xdg_mime.py +++ b/plugins/modules/xdg_mime.py @@ -31,16 +31,15 @@ attributes: options: mime_types: description: - - One or more MIME types for which a default handler will be set. + - One or more MIME types for which a default handler is set. type: list elements: str required: true handler: description: - Sets the default handler for the specified MIME types. - - The desktop file must be installed in the system. - If the desktop file is not installed, the module - does not fail, but the handler is not set either. + - The desktop file must be installed in the system. If the desktop file is not installed, the module does not fail, + but the handler is not set either. - You must pass a handler in the form V(*.desktop), otherwise the module fails. type: str required: true diff --git a/plugins/modules/xenserver_guest.py b/plugins/modules/xenserver_guest.py index da1f5439d0..44f9192b7e 100644 --- a/plugins/modules/xenserver_guest.py +++ b/plugins/modules/xenserver_guest.py @@ -394,141 +394,143 @@ instance: description: Metadata about the VM. returned: always type: dict - sample: { - "cdrom": { - "type": "none" - }, - "customization_agent": "native", - "disks": [ - { - "name": "testvm_11-0", - "name_desc": "", - "os_device": "xvda", - "size": 42949672960, - "sr": "Local storage", - "sr_uuid": "0af1245e-bdb0-ba33-1446-57a962ec4075", - "vbd_userdevice": "0" + sample: + { + "cdrom": { + "type": "none" }, - { - "name": "testvm_11-1", - "name_desc": "", - "os_device": "xvdb", - "size": 42949672960, - "sr": "Local storage", - "sr_uuid": "0af1245e-bdb0-ba33-1446-57a962ec4075", - "vbd_userdevice": "1" + "customization_agent": "native", + "disks": [ + { + "name": "testvm_11-0", + "name_desc": "", + "os_device": "xvda", + "size": 42949672960, + "sr": "Local storage", + "sr_uuid": "0af1245e-bdb0-ba33-1446-57a962ec4075", + "vbd_userdevice": "0" + }, + { + "name": "testvm_11-1", + "name_desc": "", + "os_device": "xvdb", + "size": 42949672960, + "sr": "Local storage", + "sr_uuid": "0af1245e-bdb0-ba33-1446-57a962ec4075", + "vbd_userdevice": "1" + } + ], + "domid": "56", + "folder": "", + "hardware": { + "memory_mb": 8192, + "num_cpu_cores_per_socket": 2, + "num_cpus": 4 + }, + "home_server": "", + "is_template": false, + "name": "testvm_11", + "name_desc": "", + "networks": [ + { + "gateway": "192.168.0.254", + "gateway6": "fc00::fffe", + "ip": "192.168.0.200", + "ip6": [ + "fe80:0000:0000:0000:e9cb:625a:32c5:c291", + "fc00:0000:0000:0000:0000:0000:0000:0001" + ], + "mac": "ba:91:3a:48:20:76", + "mtu": "1500", + "name": "Pool-wide network associated with eth1", + "netmask": "255.255.255.128", + "prefix": "25", + "prefix6": "64", + "vif_device": "0" + } + ], + "other_config": { + "base_template_name": "Windows Server 2016 (64-bit)", + "import_task": "OpaqueRef:e43eb71c-45d6-5351-09ff-96e4fb7d0fa5", + "install-methods": "cdrom", + "instant": "true", + "mac_seed": "f83e8d8a-cfdc-b105-b054-ef5cb416b77e" + }, + "platform": { + "acpi": "1", + "apic": "true", + "cores-per-socket": "2", + "device_id": "0002", + "hpet": "true", + "nx": "true", + "pae": "true", + "timeoffset": "-25200", + "vga": "std", + "videoram": "8", + "viridian": "true", + "viridian_reference_tsc": "true", + "viridian_time_ref_count": "true" + }, + "state": "poweredon", + "uuid": "e3c0b2d5-5f05-424e-479c-d3df8b3e7cda", + "xenstore_data": { + "vm-data": "" } - ], - "domid": "56", - "folder": "", - "hardware": { - "memory_mb": 8192, - "num_cpu_cores_per_socket": 2, - "num_cpus": 4 - }, - "home_server": "", - "is_template": false, - "name": "testvm_11", - "name_desc": "", - "networks": [ - { - "gateway": "192.168.0.254", - "gateway6": "fc00::fffe", - "ip": "192.168.0.200", - "ip6": [ - "fe80:0000:0000:0000:e9cb:625a:32c5:c291", - "fc00:0000:0000:0000:0000:0000:0000:0001" - ], - "mac": "ba:91:3a:48:20:76", - "mtu": "1500", - "name": "Pool-wide network associated with eth1", - "netmask": "255.255.255.128", - "prefix": "25", - "prefix6": "64", - "vif_device": "0" - } - ], - "other_config": { - "base_template_name": "Windows Server 2016 (64-bit)", - "import_task": "OpaqueRef:e43eb71c-45d6-5351-09ff-96e4fb7d0fa5", - "install-methods": "cdrom", - "instant": "true", - "mac_seed": "f83e8d8a-cfdc-b105-b054-ef5cb416b77e" - }, - "platform": { - "acpi": "1", - "apic": "true", - "cores-per-socket": "2", - "device_id": "0002", - "hpet": "true", - "nx": "true", - "pae": "true", - "timeoffset": "-25200", - "vga": "std", - "videoram": "8", - "viridian": "true", - "viridian_reference_tsc": "true", - "viridian_time_ref_count": "true" - }, - "state": "poweredon", - "uuid": "e3c0b2d5-5f05-424e-479c-d3df8b3e7cda", - "xenstore_data": { - "vm-data": "" } - } changes: description: Detected or made changes to VM. returned: always type: list - sample: [ - { - "hardware": [ - "num_cpus" - ] - }, - { - "disks_changed": [ - [], - [ - "size" + sample: + [ + { + "hardware": [ + "num_cpus" ] - ] - }, - { - "disks_new": [ - { - "name": "new-disk", - "name_desc": "", - "position": 2, - "size_gb": "4", - "vbd_userdevice": "2" - } - ] - }, - { - "cdrom": [ - "type", - "iso_name" - ] - }, - { - "networks_changed": [ - [ - "mac" - ], - ] - }, - { - "networks_new": [ - { - "name": "Pool-wide network associated with eth2", - "position": 1, - "vif_device": "1" - } - ] - }, - "need_poweredoff" - ] + }, + { + "disks_changed": [ + [], + [ + "size" + ] + ] + }, + { + "disks_new": [ + { + "name": "new-disk", + "name_desc": "", + "position": 2, + "size_gb": "4", + "vbd_userdevice": "2" + } + ] + }, + { + "cdrom": [ + "type", + "iso_name" + ] + }, + { + "networks_changed": [ + [ + "mac" + ] + ] + }, + { + "networks_new": [ + { + "name": "Pool-wide network associated with eth2", + "position": 1, + "vif_device": "1" + } + ] + }, + "need_poweredoff" + ] """ import re diff --git a/plugins/modules/xml.py b/plugins/modules/xml.py index 31deb4145d..3a41cd8514 100644 --- a/plugins/modules/xml.py +++ b/plugins/modules/xml.py @@ -333,12 +333,15 @@ actions: description: A dictionary with the original xpath, namespaces and state. type: dict returned: success - sample: {xpath: xpath, namespaces: [namespace1, namespace2], state: present} -backup_file: - description: The name of the backup file that was created. - type: str - returned: when O(backup=true) - sample: /path/to/file.xml.1942.2017-08-24@14:16:01~ + sample: + { + "xpath": "xpath", + "namespaces": [ + "namespace1", + "namespace2" + ], + "state": "present" + } count: description: The count of xpath matches. type: int @@ -348,10 +351,6 @@ matches: description: The xpath matches found. type: list returned: when parameter O(print_match) is set -msg: - description: A message related to the performed action(s). - type: str - returned: always xmlstring: description: An XML string of the resulting output. type: str diff --git a/plugins/modules/yarn.py b/plugins/modules/yarn.py index 553e789e89..75b624e9d2 100644 --- a/plugins/modules/yarn.py +++ b/plugins/modules/yarn.py @@ -283,12 +283,12 @@ class Yarn(object): def main(): arg_spec = dict( - name=dict(default=None), - path=dict(default=None, type='path'), - version=dict(default=None), + name=dict(), + path=dict(type='path'), + version=dict(), production=dict(default=False, type='bool'), - executable=dict(default=None, type='path'), - registry=dict(default=None), + executable=dict(type='path'), + registry=dict(), state=dict(default='present', choices=['present', 'absent', 'latest']), ignore_scripts=dict(default=False, type='bool'), ) diff --git a/plugins/modules/yum_versionlock.py b/plugins/modules/yum_versionlock.py index 9982700928..183ffdc6fe 100644 --- a/plugins/modules/yum_versionlock.py +++ b/plugins/modules/yum_versionlock.py @@ -80,7 +80,7 @@ packages: returned: success type: list elements: str - sample: ['httpd'] + sample: ["httpd"] state: description: State of package(s). returned: success diff --git a/plugins/modules/zpool.py b/plugins/modules/zpool.py index 0de563078c..3cce255415 100644 --- a/plugins/modules/zpool.py +++ b/plugins/modules/zpool.py @@ -20,8 +20,8 @@ attributes: check_mode: support: partial details: - - In check mode, any C(zpool) subcommand that supports the dry-run flag (C(-n)) will be run with C(-n) and its - simulated output is included in the module's diff results. + - In check mode, any C(zpool) subcommand that supports the dry-run flag (C(-n)) will be run with C(-n) and its simulated + output is included in the module's diff results. diff_mode: support: full author: diff --git a/plugins/modules/zypper.py b/plugins/modules/zypper.py index 8ed359d32e..a9e3bf5257 100644 --- a/plugins/modules/zypper.py +++ b/plugins/modules/zypper.py @@ -605,22 +605,22 @@ def main(): module = AnsibleModule( argument_spec=dict( name=dict(required=True, aliases=['pkg'], type='list', elements='str'), - state=dict(required=False, default='present', choices=['absent', 'installed', 'latest', 'present', 'removed', 'dist-upgrade']), - type=dict(required=False, default='package', choices=['package', 'patch', 'pattern', 'product', 'srcpackage', 'application']), - extra_args_precommand=dict(required=False, default=None), - disable_gpg_check=dict(required=False, default=False, type='bool'), - disable_recommends=dict(required=False, default=True, type='bool'), - force=dict(required=False, default=False, type='bool'), - force_resolution=dict(required=False, default=False, type='bool'), - update_cache=dict(required=False, aliases=['refresh'], default=False, type='bool'), - oldpackage=dict(required=False, default=False, type='bool'), - extra_args=dict(required=False, default=None), - allow_vendor_change=dict(required=False, default=False, type='bool'), - replacefiles=dict(required=False, default=False, type='bool'), - clean_deps=dict(required=False, default=False, type='bool'), - simple_errors=dict(required=False, default=False, type='bool'), - quiet=dict(required=False, default=True, type='bool'), - skip_post_errors=dict(required=False, default=False, type='bool'), + state=dict(default='present', choices=['absent', 'installed', 'latest', 'present', 'removed', 'dist-upgrade']), + type=dict(default='package', choices=['package', 'patch', 'pattern', 'product', 'srcpackage', 'application']), + extra_args_precommand=dict(), + disable_gpg_check=dict(default=False, type='bool'), + disable_recommends=dict(default=True, type='bool'), + force=dict(default=False, type='bool'), + force_resolution=dict(default=False, type='bool'), + update_cache=dict(aliases=['refresh'], default=False, type='bool'), + oldpackage=dict(default=False, type='bool'), + extra_args=dict(), + allow_vendor_change=dict(default=False, type='bool'), + replacefiles=dict(default=False, type='bool'), + clean_deps=dict(default=False, type='bool'), + simple_errors=dict(default=False, type='bool'), + quiet=dict(default=True, type='bool'), + skip_post_errors=dict(default=False, type='bool'), ), supports_check_mode=True ) diff --git a/plugins/modules/zypper_repository.py b/plugins/modules/zypper_repository.py index 17de63bb6d..e6beeca9a4 100644 --- a/plugins/modules/zypper_repository.py +++ b/plugins/modules/zypper_repository.py @@ -250,7 +250,7 @@ def repo_exists(module, repodata, overwrite_multiple): module.fail_json(msg=errmsg) -def addmodify_repo(module, repodata, old_repos, zypper_version, warnings): +def addmodify_repo(module, repodata, old_repos, zypper_version): "Adds the repo, removes old repos before, that would conflict." repo = repodata['url'] cmd = _get_cmd(module, 'addrepo', '--check') @@ -263,7 +263,7 @@ def addmodify_repo(module, repodata, old_repos, zypper_version, warnings): if zypper_version >= LooseVersion('1.12.25'): cmd.extend(['--priority', str(repodata['priority'])]) else: - warnings.append("Setting priority only available for zypper >= 1.12.25. Ignoring priority argument.") + module.warn("Setting priority only available for zypper >= 1.12.25. Ignoring priority argument.") if repodata['enabled'] == '0': cmd.append('--disable') @@ -277,7 +277,7 @@ def addmodify_repo(module, repodata, old_repos, zypper_version, warnings): else: cmd.append('--no-gpgcheck') else: - warnings.append("Enabling/disabling gpgcheck only available for zypper >= 1.6.2. Using zypper default value.") + module.warn("Enabling/disabling gpgcheck only available for zypper >= 1.6.2. Using zypper default value.") if repodata['autorefresh'] == '1': cmd.append('--refresh') @@ -326,17 +326,17 @@ def runrefreshrepo(module, auto_import_keys=False, shortname=None): def main(): module = AnsibleModule( argument_spec=dict( - name=dict(required=False), - repo=dict(required=False), + name=dict(), + repo=dict(), state=dict(choices=['present', 'absent'], default='present'), - runrefresh=dict(required=False, default=False, type='bool'), - description=dict(required=False), - disable_gpg_check=dict(required=False, default=False, type='bool'), - autorefresh=dict(required=False, default=True, type='bool', aliases=['refresh']), - priority=dict(required=False, type='int'), - enabled=dict(required=False, default=True, type='bool'), - overwrite_multiple=dict(required=False, default=False, type='bool'), - auto_import_keys=dict(required=False, default=False, type='bool'), + runrefresh=dict(default=False, type='bool'), + description=dict(), + disable_gpg_check=dict(default=False, type='bool'), + autorefresh=dict(default=True, type='bool', aliases=['refresh']), + priority=dict(type='int'), + enabled=dict(default=True, type='bool'), + overwrite_multiple=dict(default=False, type='bool'), + auto_import_keys=dict(default=False, type='bool'), ), supports_check_mode=False, required_one_of=[['state', 'runrefresh']], @@ -350,7 +350,6 @@ def main(): runrefresh = module.params['runrefresh'] zypper_version = get_zypper_version(module) - warnings = [] # collect warning messages for final output repodata = { 'url': repo, @@ -460,7 +459,7 @@ def main(): if runrefresh: runrefreshrepo(module, auto_import_keys, shortname) exit_unchanged() - rc, stdout, stderr = addmodify_repo(module, repodata, old_repos, zypper_version, warnings) + rc, stdout, stderr = addmodify_repo(module, repodata, old_repos, zypper_version) if rc == 0 and (runrefresh or auto_import_keys): runrefreshrepo(module, auto_import_keys, shortname) elif state == 'absent': @@ -469,9 +468,9 @@ def main(): rc, stdout, stderr = remove_repo(module, shortname) if rc == 0: - module.exit_json(changed=True, repodata=repodata, state=state, warnings=warnings) + module.exit_json(changed=True, repodata=repodata, state=state) else: - module.fail_json(msg="Zypper failed with rc %s" % rc, rc=rc, stdout=stdout, stderr=stderr, repodata=repodata, state=state, warnings=warnings) + module.fail_json(msg="Zypper failed with rc %s" % rc, rc=rc, stdout=stdout, stderr=stderr, repodata=repodata, state=state) if __name__ == '__main__': diff --git a/tests/integration/targets/android_sdk/tasks/setup.yml b/tests/integration/targets/android_sdk/tasks/setup.yml index 8ded283533..9965403367 100644 --- a/tests/integration/targets/android_sdk/tasks/setup.yml +++ b/tests/integration/targets/android_sdk/tasks/setup.yml @@ -15,6 +15,7 @@ files: - '{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml' - '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml' + - '{{ ansible_distribution }}.yml' - '{{ ansible_os_family }}.yml' paths: - '{{ role_path }}/vars' diff --git a/tests/integration/targets/android_sdk/vars/Fedora.yml b/tests/integration/targets/android_sdk/vars/Fedora.yml new file mode 100644 index 0000000000..e48443f0b5 --- /dev/null +++ b/tests/integration/targets/android_sdk/vars/Fedora.yml @@ -0,0 +1,6 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +openjdk_pkg: java-21-openjdk-headless diff --git a/tests/integration/targets/android_sdk/vars/RedHat-9.yml b/tests/integration/targets/android_sdk/vars/RedHat-9.yml new file mode 100644 index 0000000000..e48443f0b5 --- /dev/null +++ b/tests/integration/targets/android_sdk/vars/RedHat-9.yml @@ -0,0 +1,6 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +openjdk_pkg: java-21-openjdk-headless diff --git a/tests/integration/targets/apache2_module/tasks/actualtest.yml b/tests/integration/targets/apache2_module/tasks/actualtest.yml index 5bf66db9fb..88e063fe92 100644 --- a/tests/integration/targets/apache2_module/tasks/actualtest.yml +++ b/tests/integration/targets/apache2_module/tasks/actualtest.yml @@ -186,7 +186,7 @@ - name: ensure configcheck fails task with when run without mpm modules assert: that: - - "{{ item.failed }}" + - item is failed with_items: "{{ remove_with_configcheck.results }}" - name: try to disable all mpm modules without configcheck diff --git a/tests/integration/targets/apk/tasks/main.yml b/tests/integration/targets/apk/tasks/main.yml index 0e1b0ae429..b8e0e2efbe 100644 --- a/tests/integration/targets/apk/tasks/main.yml +++ b/tests/integration/targets/apk/tasks/main.yml @@ -158,3 +158,64 @@ that: - results is not changed - (results.packages | default([]) | length) == 0 + + - name: Install package with empty name + community.general.apk: + name: "" + register: result_empty + ignore_errors: true + + - name: Assert failure due to empty package name + ansible.builtin.assert: + that: + - result_empty is failed + - "'Package name(s) cannot be empty or whitespace-only' == result_empty.msg" + + - name: Install package name with only spaces + community.general.apk: + name: [" "] + register: result_spaces + ignore_errors: true + + - name: Assert failure due to whitespace-only package name + ansible.builtin.assert: + that: + - result_spaces is failed + - "'Package name(s) cannot be empty or whitespace-only' == result_spaces.msg" + + - name: Do not accept list with valid and empty string + community.general.apk: + name: ["busybox", ""] + register: result_invalid_mixed + ignore_errors: true + + - name: Assert failure with mixed package list + ansible.builtin.assert: + that: + - result_invalid_mixed is failed + - "'Package name(s) cannot be empty or whitespace-only' == result_invalid_mixed.msg" + + - name: Reject package name list with multiple empty/whitespace-only strings + community.general.apk: + name: ["", " "] + register: result_multiple_empty + ignore_errors: true + + - name: Assert failure due to all package names being empty or whitespace + ansible.builtin.assert: + that: + - result_multiple_empty is failed + - "'Package name(s) cannot be empty or whitespace-only' == result_multiple_empty.msg" + + - name: Reject empty package name with update_cache parameter + community.general.apk: + name: "" + update_cache: true + register: result_empty_package_with_update_cache + ignore_errors: true + + - name: Assert failure due to all package names being empty or whitespace + ansible.builtin.assert: + that: + - result_empty_package_with_update_cache is failed + - "'Package name(s) cannot be empty or whitespace-only' == result_empty_package_with_update_cache.msg" diff --git a/tests/integration/targets/callback_diy/tasks/main.yml b/tests/integration/targets/callback_diy/tasks/main.yml index 9520ac5d55..f1d0c65a5d 100644 --- a/tests/integration/targets/callback_diy/tasks/main.yml +++ b/tests/integration/targets/callback_diy/tasks/main.yml @@ -443,3 +443,63 @@ - "" - "PLAY RECAP *********************************************************************" - "testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 " + + - name: Set on_any_msg + environment: + ANSIBLE_NOCOLOR: 'true' + ANSIBLE_FORCE_COLOR: 'false' + ANSIBLE_STDOUT_CALLBACK: community.general.diy + ANSIBLE_CALLBACK_DIY_ON_ANY_MSG: foo + playbook: !unsafe | + - hosts: testhost + gather_facts: false + tasks: + - name: A loop + debug: + msg: "{{ item }}" + loop: + - 1 + - 2 + - name: Sample task name + debug: + msg: sample debug msg + - name: Skipped task + command: ls / + when: false + expected_output: + - "foo" + - "" + - "PLAY [testhost] ****************************************************************" + - "foo" + - "" + - "TASK [A loop] ******************************************************************" + - "foo" + - "foo" + - "ok: [testhost] => (item=1) => {" + - " \"msg\": 1" + - "}" + - "foo" + - "ok: [testhost] => (item=2) => {" + - " \"msg\": 2" + - "}" + - "foo" + - "foo" + - "" + - "TASK [Sample task name] ********************************************************" + - "foo" + - "foo" + - "ok: [testhost] => {" + - " \"msg\": \"sample debug msg\"" + - "}" + - "foo" + - "" + - "TASK [Skipped task] ************************************************************" + - "foo" + - "foo" + - "skipping: [testhost]" + - "foo" + - "" + - "PLAY RECAP *********************************************************************" + - "testhost : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 " + - "" + - "foo" diff --git a/tests/integration/targets/cronvar/tasks/main.yml b/tests/integration/targets/cronvar/tasks/main.yml index 73ec41abca..0d3ae30daf 100644 --- a/tests/integration/targets/cronvar/tasks/main.yml +++ b/tests/integration/targets/cronvar/tasks/main.yml @@ -122,3 +122,36 @@ - custom_varcheck1.stdout == '1' - custom_varcheck2.stdout == '1' - custom_varcheck3.stdout == '0' + + +- name: Add variable with empty string + community.general.cronvar: + name: EMPTY_VAR + value: "" + state: present + +- name: Assert empty var present + ansible.builtin.shell: crontab -l + register: result + changed_when: false + +- name: Assert line is quoted + ansible.builtin.assert: + that: >- + 'EMPTY_VAR=""' in result.stdout + +- name: Attempt to add cron variable to non-existent parent directory + cronvar: + name: NOPARENT_VAR + value: noparentval + cron_file: /nonexistent/foo + user: root + register: invalid_directory_cronvar_result + ignore_errors: true + +- name: Assert that the cronvar task failed due to invalid directory + ansible.builtin.assert: + that: + - invalid_directory_cronvar_result is failed + - >- + "Parent directory '/nonexistent' does not exist for cron_file: '/nonexistent/foo'" == invalid_directory_cronvar_result.msg diff --git a/tests/integration/targets/decompress/tasks/dest.yml b/tests/integration/targets/decompress/tasks/dest.yml index 9a7bbe499f..4afd39e7b3 100644 --- a/tests/integration/targets/decompress/tasks/dest.yml +++ b/tests/integration/targets/decompress/tasks/dest.yml @@ -34,7 +34,8 @@ - name: Test that file exists assert: - that: "{{ item.stat.exists }}" + that: + - item.stat.exists quiet: true loop: "{{ result_files_stat.results }}" loop_control: diff --git a/tests/integration/targets/django_command/aliases b/tests/integration/targets/django_command/aliases index a742f24fea..c14251f85e 100644 --- a/tests/integration/targets/django_command/aliases +++ b/tests/integration/targets/django_command/aliases @@ -20,4 +20,5 @@ skip/rhel9.2 skip/rhel9.3 skip/rhel9.4 skip/rhel9.5 +skip/rhel9.6 skip/rhel10.0 diff --git a/tests/integration/targets/django_manage/aliases b/tests/integration/targets/django_manage/aliases index a742f24fea..c14251f85e 100644 --- a/tests/integration/targets/django_manage/aliases +++ b/tests/integration/targets/django_manage/aliases @@ -20,4 +20,5 @@ skip/rhel9.2 skip/rhel9.3 skip/rhel9.4 skip/rhel9.5 +skip/rhel9.6 skip/rhel10.0 diff --git a/tests/integration/targets/filter_jc/aliases b/tests/integration/targets/filter_jc/aliases index 62fbc2daba..978a58095d 100644 --- a/tests/integration/targets/filter_jc/aliases +++ b/tests/integration/targets/filter_jc/aliases @@ -8,3 +8,4 @@ skip/freebsd13.3 # FIXME - ruyaml compilation fails skip/freebsd14.0 # FIXME - ruyaml compilation fails skip/freebsd14.1 # FIXME - ruyaml compilation fails skip/freebsd14.2 # FIXME - ruyaml compilation fails +skip/freebsd14.3 # FIXME - ruyaml compilation fails diff --git a/tests/integration/targets/filter_json_query/tasks/main.yml b/tests/integration/targets/filter_json_query/tasks/main.yml index 92db6d876a..0195ddb5dd 100644 --- a/tests/integration/targets/filter_json_query/tasks/main.yml +++ b/tests/integration/targets/filter_json_query/tasks/main.yml @@ -11,4 +11,23 @@ - name: Test json_query filter assert: that: - - "users | community.general.json_query('[*].hosts[].host') == ['host_a', 'host_b', 'host_c', 'host_d']" + - >- + users | community.general.json_query('[*].hosts[].host') == ['host_a', 'host_b', 'host_c', 'host_d'] + - >- + ports | json_query("[?contains(ports, `22`)]") == [ports[0]] + - >- + ports | json_query("[?contains(rule_desc, `ssh`)]") == [ports[0]] + - >- + my_complex_data | json_query('users[?id==`1`]') == [my_complex_data['users'][0]] + vars: + my_complex_data: + users: + - id: 1 + name: Alice + roles: ["admin", "dev"] + status: active + ports: + - ports: [22] + rule_desc: "ssh" + - ports: [80] + rule_desc: "http" diff --git a/tests/integration/targets/homectl/aliases b/tests/integration/targets/homectl/aliases index 3e4ed8c114..3621858566 100644 --- a/tests/integration/targets/homectl/aliases +++ b/tests/integration/targets/homectl/aliases @@ -13,4 +13,5 @@ skip/rhel9.2 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ skip/rhel9.3 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ skip/rhel9.4 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ skip/rhel9.5 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ +skip/rhel9.6 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ skip/rhel10.0 # See https://www.reddit.com/r/Fedora/comments/si7nzk/homectl/ diff --git a/tests/integration/targets/iso_extract/aliases b/tests/integration/targets/iso_extract/aliases index 2c58f9253e..00569608e0 100644 --- a/tests/integration/targets/iso_extract/aliases +++ b/tests/integration/targets/iso_extract/aliases @@ -13,6 +13,7 @@ skip/rhel9.2 # FIXME skip/rhel9.3 # FIXME skip/rhel9.4 # FIXME skip/rhel9.5 # FIXME +skip/rhel9.6 # FIXME skip/rhel10.0 # FIXME skip/freebsd12.4 # FIXME skip/freebsd13.2 # FIXME @@ -22,3 +23,4 @@ skip/freebsd13.5 # FIXME skip/freebsd14.0 # FIXME skip/freebsd14.1 # FIXME skip/freebsd14.2 # FIXME +skip/freebsd14.3 # FIXME diff --git a/tests/integration/targets/ldap_search/tasks/tests/schema.yml b/tests/integration/targets/ldap_search/tasks/tests/schema.yml index 63dd3fdf68..ca26305b82 100644 --- a/tests/integration/targets/ldap_search/tasks/tests/schema.yml +++ b/tests/integration/targets/ldap_search/tasks/tests/schema.yml @@ -22,4 +22,5 @@ that: - output is not failed - output.results | length >= 1 - - "{{ 'displayName' in output.results.0.attrs }}" + - >- + 'displayName' in output.results.0.attrs diff --git a/tests/integration/targets/listen_ports_facts/tasks/main.yml b/tests/integration/targets/listen_ports_facts/tasks/main.yml index 0e583e7a13..5da5b03784 100644 --- a/tests/integration/targets/listen_ports_facts/tasks/main.yml +++ b/tests/integration/targets/listen_ports_facts/tasks/main.yml @@ -110,3 +110,32 @@ loop: "{{ [tcp_listen, udp_listen]|flatten }}" when: item.name == 'nc' ignore_errors: true + + +- when: ansible_os_family == "Debian" + block: + - name: Remove netstat and ss dependencies to simulate missing executables + ansible.builtin.package: + name: + - net-tools + - iproute2 + state: absent + ignore_errors: true + + - name: Trigger listen_ports_facts with missing tools + community.general.listen_ports_facts: + register: listen_ports_failure_result + ignore_errors: true + + - name: Assert graceful failure when dependencies are missing + ansible.builtin.assert: + that: + - listen_ports_failure_result is failed + - "'Unable to find any of the supported commands' in listen_ports_failure_result.msg" + + - name: Reinstall netstat and ss dependencies after test + ansible.builtin.package: + name: + - net-tools + - iproute2 + state: present diff --git a/tests/integration/targets/lvg/aliases b/tests/integration/targets/lvg/aliases index cbe489d88b..eb76529397 100644 --- a/tests/integration/targets/lvg/aliases +++ b/tests/integration/targets/lvg/aliases @@ -11,3 +11,4 @@ skip/freebsd skip/osx skip/macos skip/alpine3.21 # TODO try to fix +skip/alpine3.22 # TODO try to fix diff --git a/tests/integration/targets/odbc/aliases b/tests/integration/targets/odbc/aliases index 3802d30f87..ee15fde5bb 100644 --- a/tests/integration/targets/odbc/aliases +++ b/tests/integration/targets/odbc/aliases @@ -13,5 +13,6 @@ skip/rhel9.2 skip/rhel9.3 skip/rhel9.4 skip/rhel9.5 +skip/rhel9.6 skip/rhel10.0 skip/freebsd diff --git a/tests/integration/targets/pkgng/tasks/freebsd.yml b/tests/integration/targets/pkgng/tasks/freebsd.yml index 2dcd7b02a8..b51ad836bd 100644 --- a/tests/integration/targets/pkgng/tasks/freebsd.yml +++ b/tests/integration/targets/pkgng/tasks/freebsd.yml @@ -534,12 +534,14 @@ # # NOTE: FreeBSD 14.2 fails as well (someone with FreeBSD knowledge has to take a look) # + # NOTE: FreeBSD 14.3 fails as well (someone with FreeBSD knowledge has to take a look) + # # See also # https://github.com/ansible-collections/community.general/issues/5795 when: >- (ansible_distribution_version is version('12.01', '>=') and ansible_distribution_version is version('12.3', '<')) or (ansible_distribution_version is version('13.6', '>=') and ansible_distribution_version is version('14.0', '<')) - or ansible_distribution_version is version('14.3', '>=') + or ansible_distribution_version is version('14.4', '>=') block: - name: Setup testjail include_tasks: setup-testjail.yml diff --git a/tests/integration/targets/setup_java_keytool/tasks/main.yml b/tests/integration/targets/setup_java_keytool/tasks/main.yml index 9f156425d8..56ba7a9581 100644 --- a/tests/integration/targets/setup_java_keytool/tasks/main.yml +++ b/tests/integration/targets/setup_java_keytool/tasks/main.yml @@ -22,6 +22,7 @@ files: - '{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml' - '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml' + - '{{ ansible_distribution }}.yml' - '{{ ansible_os_family }}.yml' paths: - '{{ role_path }}/vars' diff --git a/tests/integration/targets/setup_java_keytool/vars/Fedora.yml b/tests/integration/targets/setup_java_keytool/vars/Fedora.yml new file mode 100644 index 0000000000..5f77ea9bba --- /dev/null +++ b/tests/integration/targets/setup_java_keytool/vars/Fedora.yml @@ -0,0 +1,7 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +keytool_package_names: + - java-21-openjdk-headless diff --git a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.3.yml b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.3.yml deleted file mode 100644 index 5bbfaff128..0000000000 --- a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.3.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -# Copyright (c) Ansible Project -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later - -# Do nothing diff --git a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.3.yml b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.3.yml new file mode 120000 index 0000000000..0b06951496 --- /dev/null +++ b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.3.yml @@ -0,0 +1 @@ +nothing.yml \ No newline at end of file diff --git a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.5.yml b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.5.yml deleted file mode 100644 index 5bbfaff128..0000000000 --- a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.5.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -# Copyright (c) Ansible Project -# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) -# SPDX-License-Identifier: GPL-3.0-or-later - -# Do nothing diff --git a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.5.yml b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.5.yml new file mode 120000 index 0000000000..0b06951496 --- /dev/null +++ b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.5.yml @@ -0,0 +1 @@ +nothing.yml \ No newline at end of file diff --git a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.6.yml b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.6.yml new file mode 120000 index 0000000000..0b06951496 --- /dev/null +++ b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.6.yml @@ -0,0 +1 @@ +nothing.yml \ No newline at end of file diff --git a/tests/integration/targets/sysrc/files/10394.conf b/tests/integration/targets/sysrc/files/10394.conf new file mode 100644 index 0000000000..fe0bc5b145 --- /dev/null +++ b/tests/integration/targets/sysrc/files/10394.conf @@ -0,0 +1,7 @@ +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later +k1="v1" +jail_list=" + foo + bar" \ No newline at end of file diff --git a/tests/integration/targets/sysrc/tasks/main.yml b/tests/integration/targets/sysrc/tasks/main.yml index 549a1b8387..f1135d488f 100644 --- a/tests/integration/targets/sysrc/tasks/main.yml +++ b/tests/integration/targets/sysrc/tasks/main.yml @@ -369,14 +369,79 @@ - "value_2 == sysrc_equals_sign_2.value" - "value_2 == conf.spamd_flags" + ## + ## sysrc - #10004 state=absent when using default settings will report `changed=true` + ## + - name: Test that a key from /etc/defaults/rc.conf is not used to mark changed + sysrc: + name: dumpdev + state: absent + path: /tmp/10004.conf + register: sysrc_10004_absent + failed_when: sysrc_10004_absent.changed + + - name: Test that a delimited key from /etc/defaults/rc.conf is not used to mark changed + sysrc: + name: rc_conf_files + state: value_absent + path: /tmp/10004.conf + register: sysrc_10004_value_absent + failed_when: sysrc_10004_value_absent.changed + + - name: Test that a key from /etc/defaults/rc.conf is not used to mark changed without a path + sysrc: + name: static_routes + state: absent + register: sysrc_absent_default + failed_when: sysrc_absent_default.changed + + ## + ## sysrc - #10394 Ensure that files with multi-line values work + ## + - name: Copy 10394.conf + copy: + src: 10394.conf + dest: /tmp/10394.conf + + - name: Change value for k1 + sysrc: + name: k1 + value: v2 + path: /tmp/10394.conf + register: sysrc_10394_changed + + - name: Get file content + shell: "cat /tmp/10394.conf" + register: sysrc_10394_content + + - name: Ensure sysrc changed k1 from v1 to v2 + assert: + that: + - sysrc_10394_changed.changed + - > + 'k1="v2"' in sysrc_10394_content.stdout_lines + + ## + ## sysrc - additional tests + ## + - name: Ensure failure on OID style name since sysrc does not support them + sysrc: + name: not.valid.var + value: test + register: sysrc_name_check + failed_when: + - sysrc_name_check is not failed + - > + 'Name may only contain alpha-numeric and underscore characters' != sysrc_name_check.msg + always: - name: Restore /etc/rc.conf copy: - content: "{{ cached_etc_rcconf_content }}" + content: "{{ cached_etc_rcconf_content.stdout }}" dest: /etc/rc.conf - name: Restore /boot/loader.conf copy: - content: "{{ cached_boot_loaderconf_content }}" + content: "{{ cached_boot_loaderconf_content.stdout }}" dest: /boot/loader.conf diff --git a/tests/integration/targets/ufw/aliases b/tests/integration/targets/ufw/aliases index 0d89cc8fea..07227edc3f 100644 --- a/tests/integration/targets/ufw/aliases +++ b/tests/integration/targets/ufw/aliases @@ -15,6 +15,7 @@ skip/rhel9.2 # FIXME skip/rhel9.3 # FIXME skip/rhel9.4 # FIXME skip/rhel9.5 # FIXME +skip/rhel9.6 # FIXME skip/rhel10.0 # FIXME skip/docker needs/root diff --git a/tests/integration/targets/zpool/aliases b/tests/integration/targets/zpool/aliases index 80743b7cb5..083656f786 100644 --- a/tests/integration/targets/zpool/aliases +++ b/tests/integration/targets/zpool/aliases @@ -12,3 +12,4 @@ skip/osx skip/macos skip/rhel skip/docker +skip/alpine # TODO: figure out what goes wrong diff --git a/tests/unit/plugins/connection/test_wsl.py b/tests/unit/plugins/connection/test_wsl.py index 8b0d6cdd5b..c28d1fbec9 100644 --- a/tests/unit/plugins/connection/test_wsl.py +++ b/tests/unit/plugins/connection/test_wsl.py @@ -12,7 +12,6 @@ from ansible_collections.community.general.plugins.connection.wsl import authent from ansible_collections.community.general.plugins.module_utils._filelock import FileLock, LockTimeout from ansible.errors import AnsibleError, AnsibleAuthenticationFailure, AnsibleConnectionFailure from ansible.module_utils.common.text.converters import to_bytes -from ansible.module_utils.compat.paramiko import paramiko from ansible.playbook.play_context import PlayContext from ansible.plugins.loader import connection_loader from io import StringIO @@ -20,6 +19,9 @@ from pathlib import Path from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, MagicMock, mock_open +paramiko = pytest.importorskip('paramiko') + + @pytest.fixture def connection(): play_context = PlayContext() diff --git a/tests/unit/plugins/modules/test_github_repo.py b/tests/unit/plugins/modules/test_github_repo.py index 846f766723..9a76fc4b69 100644 --- a/tests/unit/plugins/modules/test_github_repo.py +++ b/tests/unit/plugins/modules/test_github_repo.py @@ -7,11 +7,15 @@ __metaclass__ = type import re import json +import pytest from httmock import with_httmock, urlmatch, response from ansible_collections.community.internal_test_tools.tests.unit.compat import unittest from ansible_collections.community.general.plugins.modules import github_repo +pytest.importorskip('github') + + @urlmatch(netloc=r'.*') def debug_mock(url, request): print(request.original.__dict__) diff --git a/tests/unit/plugins/modules/test_lxca_cmms.py b/tests/unit/plugins/modules/test_lxca_cmms.py index 888a6c8d52..3c79148022 100644 --- a/tests/unit/plugins/modules/test_lxca_cmms.py +++ b/tests/unit/plugins/modules/test_lxca_cmms.py @@ -61,8 +61,8 @@ class TestMyModule(): command_options=dict(default='cmms', choices=['cmms', 'cmms_by_uuid', 'cmms_by_chassis_uuid']), auth_url=dict(required=True), - uuid=dict(default=None), - chassis=dict(default=None), + uuid=dict(), + chassis=dict(), ) _setup_conn.return_value = "Fake connection" _execute_module.return_value = [] diff --git a/tests/unit/plugins/modules/test_lxca_nodes.py b/tests/unit/plugins/modules/test_lxca_nodes.py index 98c8a551d4..1f8ab84368 100644 --- a/tests/unit/plugins/modules/test_lxca_nodes.py +++ b/tests/unit/plugins/modules/test_lxca_nodes.py @@ -63,8 +63,8 @@ class TestMyModule(): 'nodes_status_managed', 'nodes_status_unmanaged']), auth_url=dict(required=True), - uuid=dict(default=None), - chassis=dict(default=None), + uuid=dict(), + chassis=dict(), ) _setup_conn.return_value = "Fake connection" _execute_module.return_value = []