diff --git a/.azure-pipelines/azure-pipelines.yml b/.azure-pipelines/azure-pipelines.yml
index 455d0659b4..fb6d415745 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:7.0.0
+ image: quay.io/ansible/azure-pipelines-test-container:6.0.0
pool: Standard
@@ -70,19 +70,6 @@ stages:
- test: 2
- test: 3
- test: 4
- - stage: Sanity_2_19
- displayName: Sanity 2.19
- dependsOn: []
- jobs:
- - template: templates/matrix.yml
- parameters:
- nameFormat: Test {0}
- testFormat: 2.19/sanity/{0}
- targets:
- - test: 1
- - test: 2
- - test: 3
- - test: 4
- stage: Sanity_2_18
displayName: Sanity 2.18
dependsOn: []
@@ -119,24 +106,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: []
- jobs:
- - template: templates/matrix.yml
- parameters:
- nameFormat: Python {0}
- testFormat: 2.19/units/{0}/1
- targets:
- - test: 3.8
- - test: "3.11"
- - test: "3.13"
- stage: Units_2_18
displayName: Units 2.18
dependsOn: []
@@ -147,7 +122,6 @@ 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
@@ -159,7 +133,6 @@ stages:
testFormat: 2.17/units/{0}/1
targets:
- test: 3.7
- - test: "3.10"
- test: "3.12"
## Remote
@@ -171,10 +144,10 @@ stages:
parameters:
testFormat: devel/{0}
targets:
- - name: Alpine 3.22
- test: alpine/3.22
- # - name: Fedora 42
- # test: fedora/42
+ - name: Alpine 3.21
+ test: alpine/3.21
+ # - name: Fedora 41
+ # test: fedora/41
- name: Ubuntu 22.04
test: ubuntu/22.04
- name: Ubuntu 24.04
@@ -193,30 +166,12 @@ stages:
test: macos/15.3
- name: RHEL 10.0
test: rhel/10.0
- - 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:
- - 1
- - 2
- - 3
- - stage: Remote_2_19
- displayName: Remote 2.19
- dependsOn: []
- jobs:
- - template: templates/matrix.yml
- 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
+ - name: FreeBSD 13.5
+ test: freebsd/13.5
groups:
- 1
- 2
@@ -247,8 +202,8 @@ stages:
parameters:
testFormat: 2.17/{0}
targets:
- - name: FreeBSD 13.5
- test: freebsd/13.5
+ - name: FreeBSD 13.3
+ test: freebsd/13.3
- name: RHEL 9.3
test: rhel/9.3
groups:
@@ -264,31 +219,15 @@ stages:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux/{0}
- targets:
- - name: Fedora 42
- test: fedora42
- - name: Alpine 3.22
- test: alpine322
- - name: Ubuntu 22.04
- test: ubuntu2204
- - name: Ubuntu 24.04
- test: ubuntu2404
- groups:
- - 1
- - 2
- - 3
- - stage: Docker_2_19
- displayName: Docker 2.19
- dependsOn: []
- jobs:
- - template: templates/matrix.yml
- parameters:
- testFormat: 2.19/linux/{0}
targets:
- name: Fedora 41
test: fedora41
- name: Alpine 3.21
test: alpine321
+ - name: Ubuntu 22.04
+ test: ubuntu2204
+ - name: Ubuntu 24.04
+ test: ubuntu2404
groups:
- 1
- 2
@@ -361,19 +300,8 @@ stages:
# nameFormat: Python {0}
# testFormat: devel/generic/{0}/1
# targets:
-# - test: '3.9'
-# - test: '3.12'
-# - test: '3.14'
-# - stage: Generic_2_19
-# displayName: Generic 2.19
-# dependsOn: []
-# jobs:
-# - template: templates/matrix.yml
-# parameters:
-# nameFormat: Python {0}
-# testFormat: 2.19/generic/{0}/1
-# targets:
-# - test: '3.9'
+# - test: '3.8'
+# - test: '3.11'
# - test: '3.13'
# - stage: Generic_2_18
# displayName: Generic 2.18
@@ -402,26 +330,21 @@ stages:
condition: succeededOrFailed()
dependsOn:
- Sanity_devel
- - Sanity_2_19
- Sanity_2_18
- Sanity_2_17
- Units_devel
- - Units_2_19
- Units_2_18
- Units_2_17
- Remote_devel_extra_vms
- Remote_devel
- - Remote_2_19
- Remote_2_18
- Remote_2_17
- Docker_devel
- - Docker_2_19
- Docker_2_18
- Docker_2_17
- Docker_community_devel
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
# - Generic_devel
-# - Generic_2_19
# - Generic_2_18
# - Generic_2_17
jobs:
diff --git a/.github/BOTMETA.yml b/.github/BOTMETA.yml
index 8a2ce082f2..fc5f7abbdc 100644
--- a/.github/BOTMETA.yml
+++ b/.github/BOTMETA.yml
@@ -92,8 +92,6 @@ files:
maintainers: ryancurrah
$callbacks/syslog_json.py:
maintainers: imjoseangel
- $callbacks/tasks_only.py:
- maintainers: felixfontein
$callbacks/timestamp.py:
maintainers: kurokobo
$callbacks/unixy.py:
@@ -783,8 +781,6 @@ files:
maintainers: brettmilford unnecessary-username juanmcasanova
$modules/jenkins_build_info.py:
maintainers: juanmcasanova
- $modules/jenkins_credential.py:
- maintainers: YoussefKhalidAli
$modules/jenkins_job.py:
maintainers: sermilrod
$modules/jenkins_job_info.py:
@@ -903,8 +899,6 @@ files:
maintainers: abulimov
$modules/lvm_pv.py:
maintainers: klention
- $modules/lvm_pv_move_data.py:
- maintainers: klention
$modules/lvg_rename.py:
maintainers: lszomor
$modules/lvol.py:
@@ -1059,9 +1053,7 @@ files:
$modules/ovh_monthly_billing.py:
maintainers: fraff
$modules/pacemaker_cluster.py:
- maintainers: matbu munchtoast
- $modules/pacemaker_info.py:
- maintainers: munchtoast
+ maintainers: matbu
$modules/pacemaker_resource.py:
maintainers: munchtoast
$modules/packet_:
@@ -1521,22 +1513,6 @@ files:
maintainers: russoz
docs/docsite/rst/guide_deps.rst:
maintainers: russoz
- docs/docsite/rst/guide_iocage.rst:
- maintainers: russoz felixfontein
- docs/docsite/rst/guide_iocage_inventory.rst:
- maintainers: vbotka
- docs/docsite/rst/guide_iocage_inventory_aliases.rst:
- maintainers: vbotka
- docs/docsite/rst/guide_iocage_inventory_basics.rst:
- maintainers: vbotka
- docs/docsite/rst/guide_iocage_inventory_dhcp.rst:
- maintainers: vbotka
- docs/docsite/rst/guide_iocage_inventory_hooks.rst:
- maintainers: vbotka
- docs/docsite/rst/guide_iocage_inventory_properties.rst:
- maintainers: vbotka
- docs/docsite/rst/guide_iocage_inventory_tags.rst:
- maintainers: vbotka
docs/docsite/rst/guide_modulehelper.rst:
maintainers: russoz
docs/docsite/rst/guide_online.rst:
diff --git a/.gitignore b/.gitignore
index e427699798..5c6e9c86c6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -530,4 +530,3 @@ tests/integration/cloud-config-*.ini
# VSCode specific extensions
.vscode/settings.json
-.ansible
diff --git a/.yamllint b/.yamllint
deleted file mode 100644
index c10d86ab19..0000000000
--- a/.yamllint
+++ /dev/null
@@ -1,52 +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
-
-extends: default
-
-ignore: |
- /changelogs/
-
-rules:
- line-length:
- max: 1000
- level: error
- document-start: disable
- document-end: disable
- truthy:
- level: error
- allowed-values:
- - 'true'
- - 'false'
- indentation:
- spaces: 2
- indent-sequences: true
- key-duplicates: enable
- trailing-spaces: enable
- new-line-at-end-of-file: disable
- hyphens:
- max-spaces-after: 1
- empty-lines:
- max: 2
- max-start: 0
- max-end: 0
- commas:
- max-spaces-before: 0
- min-spaces-after: 1
- max-spaces-after: 1
- colons:
- max-spaces-before: 0
- max-spaces-after: 1
- brackets:
- min-spaces-inside: 0
- max-spaces-inside: 0
- braces:
- min-spaces-inside: 0
- max-spaces-inside: 1
- octal-values:
- forbid-implicit-octal: true
- forbid-explicit-octal: true
- comments:
- min-spaces-from-content: 1
- comments-indentation: false
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b35c52441b..6de163a728 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,551 @@
-# Placeholder changelog
+# Community General Release Notes
-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.
+**Topics**
+
+- 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\.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\.
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 119e04e170..092a39e2b7 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,538 @@
-Placeholder changelog
-=====================
+===============================
+Community General Release Notes
+===============================
-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.
+.. contents:: Topics
+
+This changelog describes changes after version 10.0.0.
+
+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.
diff --git a/README.md b/README.md
index dbfc8c0f07..d4fe43e157 100644
--- a/README.md
+++ b/README.md
@@ -7,9 +7,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
# Community General Collection
[](https://docs.ansible.com/ansible/devel/collections/community/general/)
-[](https://dev.azure.com/ansible/community.general/_build?definitionId=31)
-[](https://github.com/ansible-collections/community.general/actions)
-[](https://github.com/ansible-collections/community.general/actions)
+[](https://dev.azure.com/ansible/community.general/_build?definitionId=31)
+[](https://github.com/ansible-collections/community.general/actions)
+[](https://github.com/ansible-collections/community.general/actions)
[](https://codecov.io/gh/ansible-collections/community.general)
[](https://api.reuse.software/info/github.com/ansible-collections/community.general)
@@ -39,7 +39,7 @@ For more information about communication, see the [Ansible communication guide](
## Tested with Ansible
-Tested with the current ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19 releases and the current development version of ansible-core. Ansible-core versions before 2.16.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
+Tested with the current ansible-core 2.16, ansible-core 2.17, ansible-core 2.18 releases and the current development version of ansible-core. Ansible-core versions before 2.16.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
## External requirements
@@ -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/main/CHANGELOG.md).
+See the [changelog](https://github.com/ansible-collections/community.general/blob/stable-11/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/main/COPYING) for the full text.
+See [LICENSES/GPL-3.0-or-later.txt](https://github.com/ansible-collections/community.general/blob/stable-11/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/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).
+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).
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/antsibull-nox.toml b/antsibull-nox.toml
index c631d3a3af..76e8947a02 100644
--- a/antsibull-nox.toml
+++ b/antsibull-nox.toml
@@ -14,33 +14,8 @@
[sessions]
-[sessions.lint]
-run_isort = false
-run_black = false
-run_flake8 = false
-run_pylint = false
-run_yamllint = true
-yamllint_config = ".yamllint"
-# yamllint_config_plugins = ".yamllint-docs"
-# yamllint_config_plugins_examples = ".yamllint-examples"
-run_mypy = false
-
[sessions.docs_check]
validate_collection_refs="all"
-codeblocks_restrict_types = [
- "ansible-output",
- "console",
- "ini",
- "json",
- "python",
- "shell",
- "yaml",
- "yaml+jinja",
- "text",
-]
-codeblocks_restrict_type_exact_case = true
-codeblocks_allow_without_type = false
-codeblocks_allow_literal_blocks = false
[sessions.license_check]
diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml
index f8129d5d73..ae6353cb56 100644
--- a/changelogs/changelog.yaml
+++ b/changelogs/changelog.yaml
@@ -1,3 +1,1100 @@
---
-ancestor: 11.0.0
-releases: {}
+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'
diff --git a/changelogs/config.yaml b/changelogs/config.yaml
index 578b8c3765..32ffe27f2b 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,4 +40,3 @@ 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
deleted file mode 100644
index d1cfee7816..0000000000
--- a/changelogs/fragments/10227-pacemaker-cluster-and-resource-enhancement.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-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
deleted file mode 100644
index eec12e8669..0000000000
--- a/changelogs/fragments/10231-keycloak-add-client-credentials-authentication.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index 29d71ca393..0000000000
--- a/changelogs/fragments/10267-add-cloudflare-ptr-record-support.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index 9f91040d63..0000000000
--- a/changelogs/fragments/10269-cloudflare-dns-refactor.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index d28e2ac833..0000000000
--- a/changelogs/fragments/10271--disable_lookups.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index 6fff590fee..0000000000
--- a/changelogs/fragments/10285-fstr-plugins.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-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
deleted file mode 100644
index 9d71bd17d8..0000000000
--- a/changelogs/fragments/10311-xfconf-refactor.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index 53436ea7d6..0000000000
--- a/changelogs/fragments/10323-nmcli-improvements.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index f8f74a336c..0000000000
--- a/changelogs/fragments/10328-redundant-brackets.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-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
deleted file mode 100644
index 5e5209edda..0000000000
--- a/changelogs/fragments/10329-catapult-deprecation.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index 00cd71f559..0000000000
--- a/changelogs/fragments/10339-github_app_access_token.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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/10346-jenkins-plugins-fixes.yml b/changelogs/fragments/10346-jenkins-plugins-fixes.yml
deleted file mode 100644
index 382fe7aa53..0000000000
--- a/changelogs/fragments/10346-jenkins-plugins-fixes.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-bugfixes:
- - "jenkins_plugin - install latest compatible version instead of latest (https://github.com/ansible-collections/community.general/issues/854, https://github.com/ansible-collections/community.general/pull/10346)."
- - "jenkins_plugin - separate Jenkins and external URL credentials (https://github.com/ansible-collections/community.general/issues/4419, https://github.com/ansible-collections/community.general/pull/10346)."
-
-minor_changes:
- - "jenkins_plugin - install dependencies for specific version (https://github.com/ansible-collections/community.general/issue/4995, https://github.com/ansible-collections/community.general/pull/10346)."
diff --git a/changelogs/fragments/10349-incus_connection-error-handling.yml b/changelogs/fragments/10349-incus_connection-error-handling.yml
deleted file mode 100644
index b35da354d2..0000000000
--- a/changelogs/fragments/10349-incus_connection-error-handling.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index e48a6142e8..0000000000
--- a/changelogs/fragments/10359-dependent.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index b1b5db632b..0000000000
--- a/changelogs/fragments/10417-sysrc-refactor.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-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/10422-tasks_only-result_format.yml b/changelogs/fragments/10422-tasks_only-result_format.yml
deleted file mode 100644
index 13e5e749bf..0000000000
--- a/changelogs/fragments/10422-tasks_only-result_format.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - "tasks_only callback plugin - add ``result_format`` and ``pretty_results`` options similarly to the default callback (https://github.com/ansible-collections/community.general/pull/10422)."
diff --git a/changelogs/fragments/10424-scaleway-update-zones.yml b/changelogs/fragments/10424-scaleway-update-zones.yml
deleted file mode 100644
index ffa508cd3a..0000000000
--- a/changelogs/fragments/10424-scaleway-update-zones.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - scaleway_* modules, scaleway inventory plugin - update available zones and API URLs (https://github.com/ansible-collections/community.general/issues/10383, https://github.com/ansible-collections/community.general/pull/10424).
\ No newline at end of file
diff --git a/changelogs/fragments/10434-cpanm-deprecate-compat-mode.yml b/changelogs/fragments/10434-cpanm-deprecate-compat-mode.yml
deleted file mode 100644
index 84b6ecf471..0000000000
--- a/changelogs/fragments/10434-cpanm-deprecate-compat-mode.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-deprecated_features:
- - cpanm - deprecate ``mode=compatibility``, ``mode=new`` should be used instead (https://github.com/ansible-collections/community.general/pull/10434).
diff --git a/changelogs/fragments/10435-github-repo-deprecate-force-defaults.yml b/changelogs/fragments/10435-github-repo-deprecate-force-defaults.yml
deleted file mode 100644
index cccb3a4c5f..0000000000
--- a/changelogs/fragments/10435-github-repo-deprecate-force-defaults.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-deprecated_features:
- - github_repo - deprecate ``force_defaults=true`` (https://github.com/ansible-collections/community.general/pull/10435).
diff --git a/changelogs/fragments/10442-apk-fix-empty-names.yml b/changelogs/fragments/10442-apk-fix-empty-names.yml
deleted file mode 100644
index 24d68b52df..0000000000
--- a/changelogs/fragments/10442-apk-fix-empty-names.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index 1bf39619cc..0000000000
--- a/changelogs/fragments/10445-cronvar-reject-empty-values.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index 40337a424b..0000000000
--- a/changelogs/fragments/10455-capabilities-improve-error-detection.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index 70af0932b3..0000000000
--- a/changelogs/fragments/10458-listen_port_facts-prevent-type-error.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index 4b3f317454..0000000000
--- a/changelogs/fragments/10459-deprecations.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-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
deleted file mode 100644
index c4b77299f5..0000000000
--- a/changelogs/fragments/10461-cronvar-non-existent-dir-crash-fix.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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/10483-sensu-subscription-quotes.yml b/changelogs/fragments/10483-sensu-subscription-quotes.yml
deleted file mode 100644
index 355099684c..0000000000
--- a/changelogs/fragments/10483-sensu-subscription-quotes.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - sensu_subscription - normalize quotes in the module output (https://github.com/ansible-collections/community.general/pull/10483).
diff --git a/changelogs/fragments/10490-rocketchat.yml b/changelogs/fragments/10490-rocketchat.yml
deleted file mode 100644
index 73657ba67c..0000000000
--- a/changelogs/fragments/10490-rocketchat.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-deprecated_features:
- - "rocketchat - the default value for ``is_pre740``, currently ``true``, is deprecated and will change to ``false`` in community.general 13.0.0
- (https://github.com/ansible-collections/community.general/pull/10490)."
diff --git a/changelogs/fragments/10491-irc.yml b/changelogs/fragments/10491-irc.yml
deleted file mode 100644
index 74867e71a7..0000000000
--- a/changelogs/fragments/10491-irc.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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/10493-nagios-services.yml b/changelogs/fragments/10493-nagios-services.yml
deleted file mode 100644
index 3a04556c68..0000000000
--- a/changelogs/fragments/10493-nagios-services.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - nagios - make parameter ``services`` a ``list`` instead of a ``str`` (https://github.com/ansible-collections/community.general/pull/10493).
diff --git a/changelogs/fragments/10494-rfdn-1.yml b/changelogs/fragments/10494-rfdn-1.yml
deleted file mode 100644
index 09a0c442b0..0000000000
--- a/changelogs/fragments/10494-rfdn-1.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-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
deleted file mode 100644
index 89aeab9356..0000000000
--- a/changelogs/fragments/10505-rfdn-2.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-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
deleted file mode 100644
index fae9d118bc..0000000000
--- a/changelogs/fragments/10507-rfdn-3.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-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
deleted file mode 100644
index 6d8f9e7d77..0000000000
--- a/changelogs/fragments/10512-rfdn-4.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-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
deleted file mode 100644
index d930d7345c..0000000000
--- a/changelogs/fragments/10513-rfdn-5.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-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/10514-deprecate-bearychat.yml b/changelogs/fragments/10514-deprecate-bearychat.yml
deleted file mode 100644
index 202210ac8c..0000000000
--- a/changelogs/fragments/10514-deprecate-bearychat.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-deprecated_features:
- - bearychat - module is deprecated and will be removed in community.general 12.0.0 (https://github.com/ansible-collections/community.general/issues/10514).
diff --git a/changelogs/fragments/10520-arg-runcommand-list.yml b/changelogs/fragments/10520-arg-runcommand-list.yml
deleted file mode 100644
index 4479b3a694..0000000000
--- a/changelogs/fragments/10520-arg-runcommand-list.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - apk - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/issues/10479, https://github.com/ansible-collections/community.general/pull/10520).
diff --git a/changelogs/fragments/10523-bzr-cmd-list.yml b/changelogs/fragments/10523-bzr-cmd-list.yml
deleted file mode 100644
index fb6c8a6c47..0000000000
--- a/changelogs/fragments/10523-bzr-cmd-list.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - bzr - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/10523).
diff --git a/changelogs/fragments/10524-capabilities-cmd-list.yml b/changelogs/fragments/10524-capabilities-cmd-list.yml
deleted file mode 100644
index e6af832b5c..0000000000
--- a/changelogs/fragments/10524-capabilities-cmd-list.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - capabilities - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/10524).
diff --git a/changelogs/fragments/10525-composer-cmd-list.yml b/changelogs/fragments/10525-composer-cmd-list.yml
deleted file mode 100644
index a2aebc8a6d..0000000000
--- a/changelogs/fragments/10525-composer-cmd-list.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - composer - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/10525).
diff --git a/changelogs/fragments/10526-easy-install-cmd-list.yml b/changelogs/fragments/10526-easy-install-cmd-list.yml
deleted file mode 100644
index 6fa6717adc..0000000000
--- a/changelogs/fragments/10526-easy-install-cmd-list.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - easy_install - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/10526).
diff --git a/changelogs/fragments/10527-keycloak-idp-well-known-url-support.yml b/changelogs/fragments/10527-keycloak-idp-well-known-url-support.yml
deleted file mode 100644
index cc2ae7efa0..0000000000
--- a/changelogs/fragments/10527-keycloak-idp-well-known-url-support.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - keycloak_identity_provider – add support for ``fromUrl`` to automatically fetch OIDC endpoints from the well-known discovery URL, simplifying identity provider configuration (https://github.com/ansible-collections/community.general/pull/10527).
\ No newline at end of file
diff --git a/changelogs/fragments/10531-wsl-paramiko.yml b/changelogs/fragments/10531-wsl-paramiko.yml
deleted file mode 100644
index 08257d6c78..0000000000
--- a/changelogs/fragments/10531-wsl-paramiko.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index 84c5d985e8..0000000000
--- a/changelogs/fragments/10532-apk.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-bugfixes:
- - "apk - fix check for empty/whitespace-only package names (https://github.com/ansible-collections/community.general/pull/10532)."
diff --git a/changelogs/fragments/10536-imgadm-cmd-list.yml b/changelogs/fragments/10536-imgadm-cmd-list.yml
deleted file mode 100644
index 0f22c774d8..0000000000
--- a/changelogs/fragments/10536-imgadm-cmd-list.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - imgadm - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/10536).
diff --git a/changelogs/fragments/10538-keycloak-realm-add-support-client-options.yml b/changelogs/fragments/10538-keycloak-realm-add-support-client-options.yml
deleted file mode 100644
index 66333b01a8..0000000000
--- a/changelogs/fragments/10538-keycloak-realm-add-support-client-options.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - keycloak_realm - add support for client-related options and Oauth2 device (https://github.com/ansible-collections/community.general/pull/10538).
\ No newline at end of file
diff --git a/changelogs/fragments/10539-json_query.yml b/changelogs/fragments/10539-json_query.yml
deleted file mode 100644
index 7e84b7ecb0..0000000000
--- a/changelogs/fragments/10539-json_query.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index c0de6dd845..0000000000
--- a/changelogs/fragments/10566-merge_variables.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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/10573-logstash-plugin-cmd-list.yml b/changelogs/fragments/10573-logstash-plugin-cmd-list.yml
deleted file mode 100644
index 441c1c49a3..0000000000
--- a/changelogs/fragments/10573-logstash-plugin-cmd-list.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - logstash_plugin - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/issues/10479, https://github.com/ansible-collections/community.general/pull/10520).
diff --git a/changelogs/fragments/10574-django-runner.yml b/changelogs/fragments/10574-django-runner.yml
deleted file mode 100644
index a0bf6ec6d4..0000000000
--- a/changelogs/fragments/10574-django-runner.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-minor_changes:
- - django module utils - remove deprecated parameter ``_DjangoRunner`` call (https://github.com/ansible-collections/community.general/pull/10574).
diff --git a/changelogs/fragments/9499-typetalk-deprecation.yml b/changelogs/fragments/9499-typetalk-deprecation.yml
deleted file mode 100644
index 8323bbe959..0000000000
--- a/changelogs/fragments/9499-typetalk-deprecation.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-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
deleted file mode 100644
index 201d85f71c..0000000000
--- a/changelogs/fragments/become-pipelining.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index 1c7ec89b7d..0000000000
--- a/changelogs/fragments/logstash.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-bugfixes:
- - logstash callback plugin - remove reference to Python 2 library (https://github.com/ansible-collections/community.general/pull/10345).
diff --git a/docs/docsite/extra-docs.yml b/docs/docsite/extra-docs.yml
index 4594ab4c2d..156e93309d 100644
--- a/docs/docsite/extra-docs.yml
+++ b/docs/docsite/extra-docs.yml
@@ -8,10 +8,9 @@ sections:
toctree:
- filter_guide
- test_guide
- - title: Technology Guides
+ - title: Cloud Guides
toctree:
- guide_alicloud
- - guide_iocage
- guide_online
- guide_packet
- guide_scaleway
diff --git a/docs/docsite/rst/filter_guide.rst b/docs/docsite/rst/filter_guide.rst
index da8a90af3c..1c6468ddec 100644
--- a/docs/docsite/rst/filter_guide.rst
+++ b/docs/docsite/rst/filter_guide.rst
@@ -8,7 +8,7 @@
community.general Filter Guide
==============================
-The :anscollection:`community.general collection ` offers several useful filter plugins.
+The :ref:`community.general collection ` offers several useful filter plugins.
.. toctree::
:maxdepth: 2
diff --git a/docs/docsite/rst/guide_iocage.rst b/docs/docsite/rst/guide_iocage.rst
deleted file mode 100644
index 67eb0e8a99..0000000000
--- a/docs/docsite/rst/guide_iocage.rst
+++ /dev/null
@@ -1,15 +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
-
-.. _ansible_collections.community.general.docsite.guide_iocage:
-
-************
-Iocage Guide
-************
-
-.. toctree::
- :maxdepth: 1
-
- guide_iocage_inventory
diff --git a/docs/docsite/rst/guide_iocage_inventory.rst b/docs/docsite/rst/guide_iocage_inventory.rst
deleted file mode 100644
index 4a410c35db..0000000000
--- a/docs/docsite/rst/guide_iocage_inventory.rst
+++ /dev/null
@@ -1,31 +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
-
-.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory:
-
-community.general.iocage inventory plugin
-=========================================
-
-The inventory plugin :ansplugin:`community.general.iocage#inventory` gets the inventory hosts from the iocage jail manager.
-
-See:
-
-* `iocage - A FreeBSD Jail Manager `_
-* `man iocage `_
-* `Jails and Containers `_
-
-.. note::
- The output of the examples is YAML formatted. See the option :ansopt:`ansible.builtin.default#callback:result_format`.
-
-.. toctree::
- :caption: Table of Contents
- :maxdepth: 1
-
- guide_iocage_inventory_basics
- guide_iocage_inventory_dhcp
- guide_iocage_inventory_hooks
- guide_iocage_inventory_properties
- guide_iocage_inventory_tags
- guide_iocage_inventory_aliases
diff --git a/docs/docsite/rst/guide_iocage_inventory_aliases.rst b/docs/docsite/rst/guide_iocage_inventory_aliases.rst
deleted file mode 100644
index 431403d733..0000000000
--- a/docs/docsite/rst/guide_iocage_inventory_aliases.rst
+++ /dev/null
@@ -1,200 +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
-
-.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_aliases:
-
-Aliases
--------
-
-Quoting :ref:`inventory_aliases`:
-
- The ``inventory_hostname`` is the unique identifier for a host in Ansible, this can be an IP or a hostname, but also just an 'alias' or short name for the host.
-
-As root at the iocage host, stop and destroy all jails:
-
-.. code-block:: console
-
- shell> iocage stop ALL
- * Stopping srv_1
- + Executing prestop OK
- + Stopping services OK
- + Tearing down VNET OK
- + Removing devfs_ruleset: 1000 OK
- + Removing jail process OK
- + Executing poststop OK
- * Stopping srv_2
- + Executing prestop OK
- + Stopping services OK
- + Tearing down VNET OK
- + Removing devfs_ruleset: 1001 OK
- + Removing jail process OK
- + Executing poststop OK
- * Stopping srv_3
- + Executing prestop OK
- + Stopping services OK
- + Tearing down VNET OK
- + Removing devfs_ruleset: 1002 OK
- + Removing jail process OK
- + Executing poststop OK
- ansible_client is not running!
-
- shell> iocage destroy -f srv_1 srv_2 srv_3
- Destroying srv_1
- Destroying srv_2
- Destroying srv_3
-
-Create three VNET jails with a DHCP interface from the template *ansible_client*. Use the option ``--count``:
-
-.. code-block:: console
-
- shell> iocage create --short --template ansible_client --count 3 bpf=1 dhcp=1 vnet=1
- 1c11de2d successfully created!
- 9d94cc9e successfully created!
- 052b9557 successfully created!
-
-The names are random. Start the jails:
-
-.. code-block:: console
-
- shell> iocage start ALL
- No default gateway found for ipv6.
- * Starting 052b9557
- + Started OK
- + Using devfs_ruleset: 1000 (iocage generated default)
- + Configuring VNET OK
- + Using IP options: vnet
- + Starting services OK
- + Executing poststart OK
- + DHCP Address: 10.1.0.137/24
- No default gateway found for ipv6.
- * Starting 1c11de2d
- + Started OK
- + Using devfs_ruleset: 1001 (iocage generated default)
- + Configuring VNET OK
- + Using IP options: vnet
- + Starting services OK
- + Executing poststart OK
- + DHCP Address: 10.1.0.146/24
- No default gateway found for ipv6.
- * Starting 9d94cc9e
- + Started OK
- + Using devfs_ruleset: 1002 (iocage generated default)
- + Configuring VNET OK
- + Using IP options: vnet
- + Starting services OK
- + Executing poststart OK
- + DHCP Address: 10.1.0.115/24
- Please convert back to a jail before trying to start ansible_client
-
-List the jails:
-
-.. code-block:: console
-
- shell> iocage list -l
- +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
- +=====+==========+======+=======+======+=================+====================+=====+================+==========+
- | 207 | 052b9557 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.137 | - | ansible_client | no |
- +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | 208 | 1c11de2d | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.146 | - | ansible_client | no |
- +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | 209 | 9d94cc9e | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.115 | - | ansible_client | no |
- +-----+----------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
-
-Set notes. The tag *alias* will be used to create inventory aliases:
-
-.. code-block:: console
-
- shell> iocage set notes="vmm=iocage_02 project=foo alias=srv_1" 052b9557
- notes: none -> vmm=iocage_02 project=foo alias=srv_1
- shell> iocage set notes="vmm=iocage_02 project=foo alias=srv_2" 1c11de2d
- notes: none -> vmm=iocage_02 project=foo alias=srv_2
- shell> iocage set notes="vmm=iocage_02 project=bar alias=srv_3" 9d94cc9e
- notes: none -> vmm=iocage_02 project=bar alias=srv_3
-
-Update the inventory configuration. Set the option
-:ansopt:`community.general.iocage#inventory:inventory_hostname_tag` to :ansval:`alias`. This tag keeps the
-value of the alias. The option :ansopt:`community.general.iocage#inventory:get_properties` must be
-enabled. For example, ``hosts/02_iocage.yml`` contains:
-
-.. code-block:: yaml
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
- get_properties: true
- inventory_hostname_tag: alias
- hooks_results:
- - /var/db/dhclient-hook.address.epair0b
- compose:
- ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
- iocage_tags: dict(iocage_properties.notes | split | map('split', '='))
- keyed_groups:
- - prefix: vmm
- key: iocage_tags.vmm
- - prefix: project
- key: iocage_tags.project
-
-Display tags and groups. Create a playbook ``pb-test-groups.yml`` with the following content:
-
-.. code-block:: yaml+jinja
-
- - hosts: all
- remote_user: admin
-
- vars:
-
- ansible_python_interpreter: auto_silent
-
- tasks:
-
- - debug:
- var: iocage_tags
-
- - debug:
- msg: |
- {% for group in groups %}
- {{ group }}: {{ groups[group] }}
- {% endfor %}
- run_once: true
-
-Run the playbook:
-
-.. code-block:: console
-
- shell> ansible-playbook -i hosts/02_iocage.yml pb-test-groups.yml
-
- PLAY [all] **********************************************************************************************************
-
- TASK [debug] ********************************************************************************************************
- ok: [srv_1] =>
- iocage_tags:
- alias: srv_1
- project: foo
- vmm: iocage_02
- ok: [srv_2] =>
- iocage_tags:
- alias: srv_2
- project: foo
- vmm: iocage_02
- ok: [srv_3] =>
- iocage_tags:
- alias: srv_3
- project: bar
- vmm: iocage_02
-
- TASK [debug] ********************************************************************************************************
- ok: [srv_1] =>
- msg: |-
- all: ['srv_1', 'srv_2', 'srv_3']
- ungrouped: []
- vmm_iocage_02: ['srv_1', 'srv_2', 'srv_3']
- project_foo: ['srv_1', 'srv_2']
- project_bar: ['srv_3']
-
- PLAY RECAP **********************************************************************************************************
- srv_1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- srv_2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- srv_3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
diff --git a/docs/docsite/rst/guide_iocage_inventory_basics.rst b/docs/docsite/rst/guide_iocage_inventory_basics.rst
deleted file mode 100644
index f198edc4f4..0000000000
--- a/docs/docsite/rst/guide_iocage_inventory_basics.rst
+++ /dev/null
@@ -1,128 +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
-
-.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_basics:
-
-Basics
-------
-
-As root at the iocage host, create three VNET jails with a DHCP interface from the template
-*ansible_client*:
-
-.. code-block:: console
-
- shell> iocage create --template ansible_client --name srv_1 bpf=1 dhcp=1 vnet=1
- srv_1 successfully created!
- shell> iocage create --template ansible_client --name srv_2 bpf=1 dhcp=1 vnet=1
- srv_2 successfully created!
- shell> iocage create --template ansible_client --name srv_3 bpf=1 dhcp=1 vnet=1
- srv_3 successfully created!
-
-See: `Configuring a VNET Jail `_.
-
-As admin at the controller, list the jails:
-
-.. code-block:: console
-
- shell> ssh admin@10.1.0.73 iocage list -l
- +------+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
- +======+=======+======+=======+======+=================+====================+=====+================+==========+
- | None | srv_1 | off | down | jail | 14.2-RELEASE-p3 | DHCP (not running) | - | ansible_client | no |
- +------+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | None | srv_2 | off | down | jail | 14.2-RELEASE-p3 | DHCP (not running) | - | ansible_client | no |
- +------+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | None | srv_3 | off | down | jail | 14.2-RELEASE-p3 | DHCP (not running) | - | ansible_client | no |
- +------+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
-
-Create the inventory file ``hosts/02_iocage.yml``
-
-.. code-block:: yaml
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
-
-Display the inventory:
-
-.. code-block:: console
-
- shell> ansible-inventory -i hosts/02_iocage.yml --list --yaml
- all:
- children:
- ungrouped:
- hosts:
- srv_1:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_ip4: '-'
- iocage_ip4_dict:
- ip4: []
- msg: DHCP (not running)
- iocage_ip6: '-'
- iocage_jid: None
- iocage_release: 14.2-RELEASE-p3
- iocage_state: down
- iocage_template: ansible_client
- iocage_type: jail
- srv_2:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_ip4: '-'
- iocage_ip4_dict:
- ip4: []
- msg: DHCP (not running)
- iocage_ip6: '-'
- iocage_jid: None
- iocage_release: 14.2-RELEASE-p3
- iocage_state: down
- iocage_template: ansible_client
- iocage_type: jail
- srv_3:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_ip4: '-'
- iocage_ip4_dict:
- ip4: []
- msg: DHCP (not running)
- iocage_ip6: '-'
- iocage_jid: None
- iocage_release: 14.2-RELEASE-p3
- iocage_state: down
- iocage_template: ansible_client
- iocage_type: jail
-
-Optionally, create shared IP jails:
-
-.. code-block:: console
-
- shell> iocage create --template ansible_client --name srv_1 ip4_addr="em0|10.1.0.101/24"
- srv_1 successfully created!
- shell> iocage create --template ansible_client --name srv_2 ip4_addr="em0|10.1.0.102/24"
- srv_2 successfully created!
- shell> iocage create --template ansible_client --name srv_3 ip4_addr="em0|10.1.0.103/24"
- srv_3 successfully created!
- shell> iocage list -l
- +------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
- | JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
- +======+=======+======+=======+======+=================+===================+=====+================+==========+
- | None | srv_1 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.101/24 | - | ansible_client | no |
- +------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
- | None | srv_2 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.102/24 | - | ansible_client | no |
- +------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
- | None | srv_3 | off | down | jail | 14.2-RELEASE-p3 | em0|10.1.0.103/24 | - | ansible_client | no |
- +------+-------+------+-------+------+-----------------+-------------------+-----+----------------+----------+
-
-See: `Configuring a Shared IP Jail `_
-
-If iocage needs environment variable(s), use the option :ansopt:`community.general.iocage#inventory:env`. For example,
-
-.. code-block:: yaml
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
- env:
- CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
diff --git a/docs/docsite/rst/guide_iocage_inventory_dhcp.rst b/docs/docsite/rst/guide_iocage_inventory_dhcp.rst
deleted file mode 100644
index 3c37366ca6..0000000000
--- a/docs/docsite/rst/guide_iocage_inventory_dhcp.rst
+++ /dev/null
@@ -1,175 +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
-
-.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_dhcp:
-
-DHCP
-----
-
-As root at the iocage host, start the jails:
-
-.. code-block:: console
-
- shell> iocage start ALL
- No default gateway found for ipv6.
- * Starting srv_1
- + Started OK
- + Using devfs_ruleset: 1000 (iocage generated default)
- + Configuring VNET OK
- + Using IP options: vnet
- + Starting services OK
- + Executing poststart OK
- + DHCP Address: 10.1.0.183/24
- No default gateway found for ipv6.
- * Starting srv_2
- + Started OK
- + Using devfs_ruleset: 1001 (iocage generated default)
- + Configuring VNET OK
- + Using IP options: vnet
- + Starting services OK
- + Executing poststart OK
- + DHCP Address: 10.1.0.204/24
- No default gateway found for ipv6.
- * Starting srv_3
- + Started OK
- + Using devfs_ruleset: 1002 (iocage generated default)
- + Configuring VNET OK
- + Using IP options: vnet
- + Starting services OK
- + Executing poststart OK
- + DHCP Address: 10.1.0.169/24
- Please convert back to a jail before trying to start ansible_client
-
-List the jails:
-
-.. code-block:: console
-
- shell> iocage list -l
- +-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
- +=====+=======+======+=======+======+=================+====================+=====+================+==========+
- | 204 | srv_1 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.183 | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | 205 | srv_2 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.204 | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | 206 | srv_3 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.169 | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
-
-As admin at the controller, list the jails. The IP4 tab says "... address requires root":
-
-.. code-block:: console
-
- shell> ssh admin@10.1.0.73 iocage list -l
- +-----+-------+------+-------+------+-----------------+-----------------------------------------+-----+----------------+----------+
- | JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
- +=====+=======+======+=======+======+=================+=========================================+=====+================+==========+
- | 204 | srv_1 | off | up | jail | 14.2-RELEASE-p3 | DHCP (running -- address requires root) | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+-----------------------------------------+-----+----------------+----------+
- | 205 | srv_2 | off | up | jail | 14.2-RELEASE-p3 | DHCP (running -- address requires root) | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+-----------------------------------------+-----+----------------+----------+
- | 206 | srv_3 | off | up | jail | 14.2-RELEASE-p3 | DHCP (running -- address requires root) | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+-----------------------------------------+-----+----------------+----------+
-
-Use sudo if enabled:
-
-.. code-block:: console
-
- shell> ssh admin@10.1.0.73 sudo iocage list -l
- +-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL |
- +=====+=======+======+=======+======+=================+====================+=====+================+==========+
- | 204 | srv_1 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.183 | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | 205 | srv_2 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.204 | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
- | 206 | srv_3 | off | up | jail | 14.2-RELEASE-p3 | epair0b|10.1.0.169 | - | ansible_client | no |
- +-----+-------+------+-------+------+-----------------+--------------------+-----+----------------+----------+
-
-Create the inventory file ``hosts/02_iocage.yml``. Use the option
-:ansopt:`community.general.iocage#inventory:sudo`:
-
-.. code-block:: yaml
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
- sudo: true
-
-Display the inventory:
-
-.. code-block:: console
-
- shell> ansible-inventory -i hosts/02_iocage.yml --list --yaml
- all:
- children:
- ungrouped:
- hosts:
- srv_1:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_ip4: 10.1.0.183
- iocage_ip4_dict:
- ip4:
- - ifc: epair0b
- ip: 10.1.0.183
- mask: '-'
- msg: ''
- iocage_ip6: '-'
- iocage_jid: '204'
- iocage_release: 14.2-RELEASE-p3
- iocage_state: up
- iocage_template: ansible_client
- iocage_type: jail
- srv_2:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_ip4: 10.1.0.204
- iocage_ip4_dict:
- ip4:
- - ifc: epair0b
- ip: 10.1.0.204
- mask: '-'
- msg: ''
- iocage_ip6: '-'
- iocage_jid: '205'
- iocage_release: 14.2-RELEASE-p3
- iocage_state: up
- iocage_template: ansible_client
- iocage_type: jail
- srv_3:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_ip4: 10.1.0.169
- iocage_ip4_dict:
- ip4:
- - ifc: epair0b
- ip: 10.1.0.169
- mask: '-'
- msg: ''
- iocage_ip6: '-'
- iocage_jid: '206'
- iocage_release: 14.2-RELEASE-p3
- iocage_state: up
- iocage_template: ansible_client
- iocage_type: jail
-
-Note: If the option :ansopt:`community.general.iocage#inventory:env` is used and :ansopt:`community.general.iocage#inventory:sudo` is enabled, enable also :ansopt:`community.general.iocage#inventory:sudo_preserve_env`. For example,
-
-.. code-block:: yaml
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
- env:
- CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
- sudo: true
- sudo_preserve_env: true
-
-In this case, make sure the sudo tag ``SETENV`` is used:
-
-.. code-block:: console
-
- shell> ssh admin@10.1.0.73 sudo cat /usr/local/etc/sudoers | grep admin
- admin ALL=(ALL) NOPASSWD:SETENV: ALL
diff --git a/docs/docsite/rst/guide_iocage_inventory_hooks.rst b/docs/docsite/rst/guide_iocage_inventory_hooks.rst
deleted file mode 100644
index 45364fc798..0000000000
--- a/docs/docsite/rst/guide_iocage_inventory_hooks.rst
+++ /dev/null
@@ -1,187 +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
-
-.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_hooks:
-
-Hooks
------
-
-The iocage utility internally opens a console to a jail to get the jail's DHCP address. This
-requires root. If you run the command ``iocage list -l`` as unprivileged user, you'll see the
-message ``DHCP (running -- address requires root)``. If you are not granted the root privilege, use
-``/etc/dhclient-exit-hooks``. For example, in the jail *srv_1*, create the file
-``/zroot/iocage/jails/srv_1/root/etc/dhclient-exit-hooks``
-
-.. code-block:: shell
-
- case "$reason" in
- "BOUND"|"REBIND"|"REBOOT"|"RENEW")
- echo $new_ip_address > /var/db/dhclient-hook.address.$interface
- ;;
- esac
-
-where ``/zroot/iocage`` is the activated pool.
-
-.. code-block:: console
-
- shell> zfs list | grep /zroot/iocage
- zroot/iocage 4.69G 446G 5.08M /zroot/iocage
- zroot/iocage/download 927M 446G 384K /zroot/iocage/download
- zroot/iocage/download/14.1-RELEASE 465M 446G 465M /zroot/iocage/download/14.1-RELEASE
- zroot/iocage/download/14.2-RELEASE 462M 446G 462M /zroot/iocage/download/14.2-RELEASE
- zroot/iocage/images 384K 446G 384K /zroot/iocage/images
- zroot/iocage/jails 189M 446G 480K /zroot/iocage/jails
- zroot/iocage/jails/srv_1 62.9M 446G 464K /zroot/iocage/jails/srv_1
- zroot/iocage/jails/srv_1/root 62.4M 446G 3.53G /zroot/iocage/jails/srv_1/root
- zroot/iocage/jails/srv_2 62.8M 446G 464K /zroot/iocage/jails/srv_2
- zroot/iocage/jails/srv_2/root 62.3M 446G 3.53G /zroot/iocage/jails/srv_2/root
- zroot/iocage/jails/srv_3 62.8M 446G 464K /zroot/iocage/jails/srv_3
- zroot/iocage/jails/srv_3/root 62.3M 446G 3.53G /zroot/iocage/jails/srv_3/root
- zroot/iocage/log 688K 446G 688K /zroot/iocage/log
- zroot/iocage/releases 2.93G 446G 384K /zroot/iocage/releases
- zroot/iocage/releases/14.2-RELEASE 2.93G 446G 384K /zroot/iocage/releases/14.2-RELEASE
- zroot/iocage/releases/14.2-RELEASE/root 2.93G 446G 2.88G /zroot/iocage/releases/14.2-RELEASE/root
- zroot/iocage/templates 682M 446G 416K /zroot/iocage/templates
- zroot/iocage/templates/ansible_client 681M 446G 432K /zroot/iocage/templates/ansible_client
- zroot/iocage/templates/ansible_client/root 681M 446G 3.53G /zroot/iocage/templates/ansible_client/root
-
-See: `man dhclient-script `_
-
-Create the inventory configuration. Use the option :ansopt:`community.general.iocage#inventory:hooks_results` instead of :ansopt:`community.general.iocage#inventory:sudo`:
-
-.. code-block:: console
-
- shell> cat hosts/02_iocage.yml
-
-.. code-block:: yaml
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
- hooks_results:
- - /var/db/dhclient-hook.address.epair0b
-
-.. note::
-
- The option :ansopt:`community.general.iocage#inventory:hooks_results` expects the poolname to be mounted to ``/poolname``. For example, if you
- activate the pool iocage, this plugin expects to find the :ansopt:`community.general.iocage#inventory:hooks_results` items in the path
- /iocage/iocage/jails//root. If you mount the poolname to a different path, the easiest
- remedy is to create a symlink.
-
-As admin at the controller, display the inventory:
-
-.. code-block:: console
-
- shell> ansible-inventory -i hosts/02_iocage.yml --list --yaml
- all:
- children:
- ungrouped:
- hosts:
- srv_1:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_hooks:
- - 10.1.0.183
- iocage_ip4: '-'
- iocage_ip4_dict:
- ip4: []
- msg: DHCP (running -- address requires root)
- iocage_ip6: '-'
- iocage_jid: '204'
- iocage_release: 14.2-RELEASE-p3
- iocage_state: up
- iocage_template: ansible_client
- iocage_type: jail
- srv_2:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_hooks:
- - 10.1.0.204
- iocage_ip4: '-'
- iocage_ip4_dict:
- ip4: []
- msg: DHCP (running -- address requires root)
- iocage_ip6: '-'
- iocage_jid: '205'
- iocage_release: 14.2-RELEASE-p3
- iocage_state: up
- iocage_template: ansible_client
- iocage_type: jail
- srv_3:
- iocage_basejail: 'no'
- iocage_boot: 'off'
- iocage_hooks:
- - 10.1.0.169
- iocage_ip4: '-'
- iocage_ip4_dict:
- ip4: []
- msg: DHCP (running -- address requires root)
- iocage_ip6: '-'
- iocage_jid: '206'
- iocage_release: 14.2-RELEASE-p3
- iocage_state: up
- iocage_template: ansible_client
- iocage_type: jail
-
-Compose the variable ``ansible_host``. For example, ``hosts/02_iocage.yml`` could look like:
-
-.. code-block:: yaml+jinja
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
- hooks_results:
- - /var/db/dhclient-hook.address.epair0b
- compose:
- ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
-
-Test the jails. Create a playbook ``pb-test-uname.yml``:
-
-.. code-block:: yaml
-
- - hosts: all
- remote_user: admin
-
- vars:
-
- ansible_python_interpreter: auto_silent
-
- tasks:
-
- - command: uname -a
- register: out
-
- - debug:
- var: out.stdout
-
-See: :ref:`working_with_bsd`
-
-Run the playbook:
-
-.. code-block:: console
-
- shell> ansible-playbook -i hosts/02_iocage.yml pb-test-uname.yml
-
- PLAY [all] **********************************************************************************************************
-
- TASK [command] ******************************************************************************************************
- changed: [srv_3]
- changed: [srv_1]
- changed: [srv_2]
-
- TASK [debug] ********************************************************************************************************
- ok: [srv_1] =>
- out.stdout: FreeBSD srv-1 14.2-RELEASE-p1 FreeBSD 14.2-RELEASE-p1 GENERIC amd64
- ok: [srv_3] =>
- out.stdout: FreeBSD srv-3 14.2-RELEASE-p1 FreeBSD 14.2-RELEASE-p1 GENERIC amd64
- ok: [srv_2] =>
- out.stdout: FreeBSD srv-2 14.2-RELEASE-p1 FreeBSD 14.2-RELEASE-p1 GENERIC amd64
-
- PLAY RECAP **********************************************************************************************************
- srv_1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- srv_2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- srv_3 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
-Note: This playbook and the inventory configuration works also for the *Shared IP Jails*.
diff --git a/docs/docsite/rst/guide_iocage_inventory_properties.rst b/docs/docsite/rst/guide_iocage_inventory_properties.rst
deleted file mode 100644
index d044f2e7f2..0000000000
--- a/docs/docsite/rst/guide_iocage_inventory_properties.rst
+++ /dev/null
@@ -1,201 +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
-
-.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_properties:
-
-Properties
-----------
-
-Optionally, in the inventory file ``hosts/02_iocage.yml``, get the iocage properties. Enable
-:ansopt:`community.general.iocage#inventory:get_properties`:
-
-.. code-block:: yaml+jinja
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
- get_properties: true
- hooks_results:
- - /var/db/dhclient-hook.address.epair0b
- compose:
- ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
-
-Display the properties. Create the playbook ``pb-test-properties.yml``:
-
-.. code-block:: yaml
-
- - hosts: all
- remote_user: admin
-
- vars:
-
- ansible_python_interpreter: auto_silent
-
- tasks:
-
- - debug:
- var: iocage_properties
-
-Run the playbook. Limit the inventory to *srv_3*:
-
-.. code-block:: console
-
- shell> ansible-playbook -i hosts/02_iocage.yml -l srv_3 pb-test-properties.yml
-
- PLAY [all] **********************************************************************************************************
-
- TASK [debug] ********************************************************************************************************
- ok: [srv_3] =>
- iocage_properties:
- CONFIG_VERSION: '33'
- allow_chflags: '0'
- allow_mlock: '0'
- allow_mount: '1'
- allow_mount_devfs: '0'
- allow_mount_fdescfs: '0'
- allow_mount_fusefs: '0'
- allow_mount_linprocfs: '0'
- allow_mount_linsysfs: '0'
- allow_mount_nullfs: '0'
- allow_mount_procfs: '0'
- allow_mount_tmpfs: '0'
- allow_mount_zfs: '0'
- allow_nfsd: '0'
- allow_quotas: '0'
- allow_raw_sockets: '0'
- allow_set_hostname: '1'
- allow_socket_af: '0'
- allow_sysvipc: '0'
- allow_tun: '0'
- allow_vmm: '0'
- assign_localhost: '0'
- available: readonly
- basejail: '0'
- boot: '0'
- bpf: '1'
- children_max: '0'
- cloned_release: 14.2-RELEASE
- comment: none
- compression: 'on'
- compressratio: readonly
- coredumpsize: 'off'
- count: '1'
- cpuset: 'off'
- cputime: 'off'
- datasize: 'off'
- dedup: 'off'
- defaultrouter: auto
- defaultrouter6: auto
- depends: none
- devfs_ruleset: '4'
- dhcp: '1'
- enforce_statfs: '2'
- exec_clean: '1'
- exec_created: /usr/bin/true
- exec_fib: '0'
- exec_jail_user: root
- exec_poststart: /usr/bin/true
- exec_poststop: /usr/bin/true
- exec_prestart: /usr/bin/true
- exec_prestop: /usr/bin/true
- exec_start: /bin/sh /etc/rc
- exec_stop: /bin/sh /etc/rc.shutdown
- exec_system_jail_user: '0'
- exec_system_user: root
- exec_timeout: '60'
- host_domainname: none
- host_hostname: srv-3
- host_hostuuid: srv_3
- host_time: '1'
- hostid: ea2ba7d1-4fcd-f13f-82e4-8b32c0a03403
- hostid_strict_check: '0'
- interfaces: vnet0:bridge0
- ip4: new
- ip4_addr: none
- ip4_saddrsel: '1'
- ip6: new
- ip6_addr: none
- ip6_saddrsel: '1'
- ip_hostname: '0'
- jail_zfs: '0'
- jail_zfs_dataset: iocage/jails/srv_3/data
- jail_zfs_mountpoint: none
- last_started: '2025-06-11 04:29:23'
- localhost_ip: none
- login_flags: -f root
- mac_prefix: 02a098
- maxproc: 'off'
- memorylocked: 'off'
- memoryuse: 'off'
- min_dyn_devfs_ruleset: '1000'
- mount_devfs: '1'
- mount_fdescfs: '1'
- mount_linprocfs: '0'
- mount_procfs: '0'
- mountpoint: readonly
- msgqqueued: 'off'
- msgqsize: 'off'
- nat: '0'
- nat_backend: ipfw
- nat_forwards: none
- nat_interface: none
- nat_prefix: '172.16'
- nmsgq: 'off'
- notes: none
- nsem: 'off'
- nsemop: 'off'
- nshm: 'off'
- nthr: 'off'
- openfiles: 'off'
- origin: readonly
- owner: root
- pcpu: 'off'
- plugin_name: none
- plugin_repository: none
- priority: '99'
- pseudoterminals: 'off'
- quota: none
- readbps: 'off'
- readiops: 'off'
- release: 14.2-RELEASE-p3
- reservation: none
- resolver: /etc/resolv.conf
- rlimits: 'off'
- rtsold: '0'
- securelevel: '2'
- shmsize: 'off'
- source_template: ansible_client
- stacksize: 'off'
- state: up
- stop_timeout: '30'
- swapuse: 'off'
- sync_state: none
- sync_target: none
- sync_tgt_zpool: none
- sysvmsg: new
- sysvsem: new
- sysvshm: new
- template: '0'
- type: jail
- used: readonly
- vmemoryuse: 'off'
- vnet: '1'
- vnet0_mac: 02a0983da05d 02a0983da05e
- vnet0_mtu: auto
- vnet1_mac: none
- vnet1_mtu: auto
- vnet2_mac: none
- vnet2_mtu: auto
- vnet3_mac: none
- vnet3_mtu: auto
- vnet_default_interface: auto
- vnet_default_mtu: '1500'
- vnet_interfaces: none
- wallclock: 'off'
- writebps: 'off'
- writeiops: 'off'
-
- PLAY RECAP **********************************************************************************************************
- srv_3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
diff --git a/docs/docsite/rst/guide_iocage_inventory_tags.rst b/docs/docsite/rst/guide_iocage_inventory_tags.rst
deleted file mode 100644
index afb645198c..0000000000
--- a/docs/docsite/rst/guide_iocage_inventory_tags.rst
+++ /dev/null
@@ -1,117 +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
-
-.. _ansible_collections.community.general.docsite.guide_iocage.guide_iocage_inventory.guide_iocage_inventory_tags:
-
-Tags
-----
-
-Quoting `man iocage `_
-
-.. code-block:: text
-
- PROPERTIES
- ...
- notes="any string"
- Custom notes for miscellaneous tagging.
- Default: none
- Source: local
-
-We will use the format `notes="tag1=value1 tag2=value2 ..."`.
-
-.. note::
-
- The iocage tags have nothing to do with the :ref:`tags`.
-
-As root at the iocage host, set notes. For example,
-
-.. code-block:: console
-
- shell> iocage set notes="vmm=iocage_02 project=foo" srv_1
- notes: none -> vmm=iocage_02 project=foo
- shell> iocage set notes="vmm=iocage_02 project=foo" srv_2
- notes: none -> vmm=iocage_02 project=foo
- shell> iocage set notes="vmm=iocage_02 project=bar" srv_3
- notes: none -> vmm=iocage_02 project=bar
-
-Update the inventory configuration. Compose a dictionary *iocage_tags* and create groups. The option
-:ansopt:`community.general.iocage#inventory:get_properties` must be enabled.
-For example, ``hosts/02_iocage.yml`` could look like:
-
-.. code-block:: yaml
-
- plugin: community.general.iocage
- host: 10.1.0.73
- user: admin
- get_properties: true
- hooks_results:
- - /var/db/dhclient-hook.address.epair0b
- compose:
- ansible_host: (iocage_hooks.0 == '-') | ternary(iocage_ip4, iocage_hooks.0)
- iocage_tags: dict(iocage_properties.notes | split | map('split', '='))
- keyed_groups:
- - prefix: vmm
- key: iocage_tags.vmm
- - prefix: project
- key: iocage_tags.project
-
-Display tags and groups. Create a playbook ``pb-test-groups.yml``:
-
-.. code-block:: yaml+jinja
-
- - hosts: all
- remote_user: admin
-
- vars:
-
- ansible_python_interpreter: auto_silent
-
- tasks:
-
- - debug:
- var: iocage_tags
-
- - debug:
- msg: |
- {% for group in groups %}
- {{ group }}: {{ groups[group] }}
- {% endfor %}
- run_once: true
-
-Run the playbook:
-
-.. code-block:: console
-
- shell> ansible-playbook -i hosts/02_iocage.yml pb-test-groups.yml
-
- PLAY [all] **********************************************************************************************************
-
- TASK [debug] ********************************************************************************************************
- ok: [srv_1] =>
- iocage_tags:
- project: foo
- vmm: iocage_02
- ok: [srv_2] =>
- iocage_tags:
- project: foo
- vmm: iocage_02
- ok: [srv_3] =>
- iocage_tags:
- project: bar
- vmm: iocage_02
-
- TASK [debug] ********************************************************************************************************
- ok: [srv_1] =>
- msg: |-
- all: ['srv_1', 'srv_2', 'srv_3']
- ungrouped: []
- vmm_iocage_02: ['srv_1', 'srv_2', 'srv_3']
- project_foo: ['srv_1', 'srv_2']
- project_bar: ['srv_3']
-
- PLAY RECAP **********************************************************************************************************
- srv_1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- srv_2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- srv_3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
diff --git a/docs/docsite/rst/guide_vardict.rst b/docs/docsite/rst/guide_vardict.rst
index 1beef0c57f..f65b09055b 100644
--- a/docs/docsite/rst/guide_vardict.rst
+++ b/docs/docsite/rst/guide_vardict.rst
@@ -51,7 +51,7 @@ And by the time the module is about to exit:
That makes the return value of the module:
-.. code-block:: json
+.. code-block:: javascript
{
"abc": 123,
diff --git a/docs/docsite/rst/test_guide.rst b/docs/docsite/rst/test_guide.rst
index a1f5723df4..7a261c7552 100644
--- a/docs/docsite/rst/test_guide.rst
+++ b/docs/docsite/rst/test_guide.rst
@@ -8,7 +8,7 @@
community.general Test (Plugin) Guide
=====================================
-The :anscollection:`community.general collection ` offers currently one test plugin.
+The :ref:`community.general collection ` offers currently one test plugin.
.. contents:: Topics
diff --git a/galaxy.yml b/galaxy.yml
index a39ffcc7e5..a51b7f2569 100644
--- a/galaxy.yml
+++ b/galaxy.yml
@@ -5,7 +5,7 @@
namespace: community
name: general
-version: 11.2.0
+version: 11.0.0
readme: README.md
authors:
- Ansible (https://github.com/ansible)
diff --git a/meta/runtime.yml b/meta/runtime.yml
index eac1072b5c..174493bc72 100644
--- a/meta/runtime.yml
+++ b/meta/runtime.yml
@@ -116,14 +116,6 @@ plugin_routing:
deprecation:
removal_version: 13.0.0
warning_text: Project Atomic was sunset by the end of 2019.
- bearychat:
- deprecation:
- removal_version: 12.0.0
- warning_text: Chat service is no longer available.
- catapult:
- deprecation:
- removal_version: 13.0.0
- warning_text: DNS fails to resolve the API endpoint used by the module since Oct 2024. See https://github.com/ansible-collections/community.general/issues/10318 for details.
cisco_spark:
redirect: community.general.cisco_webex
clc_alert_policy:
@@ -962,10 +954,6 @@ 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 ca12faea0d..13aef19874 100644
--- a/plugins/become/doas.py
+++ b/plugins/become/doas.py
@@ -72,7 +72,7 @@ options:
prompt_l10n:
description:
- List of localized strings to match for prompt detection.
- - If empty the plugin uses the built-in one.
+ - If empty we will use the built in one.
type: list
elements: string
default: []
@@ -83,9 +83,6 @@ 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
@@ -102,10 +99,6 @@ 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/ksu.py b/plugins/become/ksu.py
index be56fd6128..1c936e46da 100644
--- a/plugins/become/ksu.py
+++ b/plugins/become/ksu.py
@@ -73,7 +73,7 @@ options:
prompt_l10n:
description:
- List of localized strings to match for prompt detection.
- - If empty the plugin uses the built-in one.
+ - If empty we will use the built in one.
type: list
elements: string
default: []
diff --git a/plugins/become/machinectl.py b/plugins/become/machinectl.py
index ad3daa916d..81a9d06f86 100644
--- a/plugins/become/machinectl.py
+++ b/plugins/become/machinectl.py
@@ -71,12 +71,10 @@ options:
- section: machinectl_become_plugin
key: password
notes:
- - When not using this plugin with user V(root), it only works correctly with a polkit rule which alters the behaviour
- 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.
+ - When not using this plugin with user V(root), it only works correctly with a polkit rule which will alter the behaviour
+ of 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 work if it
+ is used in context with the root user, because then no further prompt will be shown by machinectl.
"""
EXAMPLES = r"""
@@ -109,10 +107,6 @@ 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/become/pfexec.py b/plugins/become/pfexec.py
index 9faf1ffc63..65690f359b 100644
--- a/plugins/become/pfexec.py
+++ b/plugins/become/pfexec.py
@@ -6,7 +6,7 @@ from __future__ import annotations
DOCUMENTATION = r"""
name: pfexec
-short_description: Profile based execution
+short_description: profile based execution
description:
- This become plugins allows your remote/login user to execute commands as another user using the C(pfexec) utility.
author: Ansible Core Team
diff --git a/plugins/become/run0.py b/plugins/become/run0.py
index dce7c22448..39e4667e7a 100644
--- a/plugins/become/run0.py
+++ b/plugins/become/run0.py
@@ -61,7 +61,7 @@ options:
- name: ANSIBLE_RUN0_FLAGS
type: string
notes:
- - This plugin only works when a C(polkit) rule is in place.
+ - This plugin will only work when a C(polkit) rule is in place.
"""
EXAMPLES = r"""
diff --git a/plugins/cache/pickle.py b/plugins/cache/pickle.py
index 1e9ffcb264..7dae0f2d85 100644
--- a/plugins/cache/pickle.py
+++ b/plugins/cache/pickle.py
@@ -17,7 +17,7 @@ options:
_uri:
required: true
description:
- - Path in which the cache plugin saves the files.
+ - Path in which the cache plugin will save the files.
env:
- name: ANSIBLE_CACHE_PLUGIN_CONNECTION
ini:
diff --git a/plugins/cache/yaml.py b/plugins/cache/yaml.py
index 8bf61f6898..676423d3b6 100644
--- a/plugins/cache/yaml.py
+++ b/plugins/cache/yaml.py
@@ -17,7 +17,7 @@ options:
_uri:
required: true
description:
- - Path in which the cache plugin saves the files.
+ - Path in which the cache plugin will save the files.
env:
- name: ANSIBLE_CACHE_PLUGIN_CONNECTION
ini:
diff --git a/plugins/callback/context_demo.py b/plugins/callback/context_demo.py
index e846aa2786..28be2882b6 100644
--- a/plugins/callback/context_demo.py
+++ b/plugins/callback/context_demo.py
@@ -10,7 +10,7 @@ DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: context_demo
type: aggregate
-short_description: Demo callback that adds play/task context
+short_description: demo callback that adds play/task context
description:
- Displays some play and task context along with normal output.
- This is mostly for demo purposes.
diff --git a/plugins/callback/counter_enabled.py b/plugins/callback/counter_enabled.py
index 2377d46585..15fc85a01b 100644
--- a/plugins/callback/counter_enabled.py
+++ b/plugins/callback/counter_enabled.py
@@ -12,11 +12,11 @@ DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: counter_enabled
type: stdout
-short_description: Adds counters to the output items (tasks and hosts/task)
+short_description: adds counters to the output items (tasks and hosts/task)
description:
- Use this callback when you need a kind of progress bar on a large environments.
- - You can see how many tasks has the playbook to run, and which one is actually running.
- - You can see how many hosts may run a task, and which of them is actually running.
+ - You will know how many tasks has the playbook to run, and which one is actually running.
+ - You will know how many hosts may run a task, and which of them is actually running.
extends_documentation_fragment:
- default_callback
requirements:
diff --git a/plugins/callback/dense.py b/plugins/callback/dense.py
index 1fd68b5d60..67cad4fd8f 100644
--- a/plugins/callback/dense.py
+++ b/plugins/callback/dense.py
@@ -9,11 +9,11 @@ from __future__ import annotations
DOCUMENTATION = r"""
name: dense
type: stdout
-short_description: Minimal stdout output
+short_description: minimal stdout output
extends_documentation_fragment:
- default_callback
description:
- - When in verbose mode it acts the same as the default callback.
+ - When in verbose mode it will act the same as the default callback.
author:
- Dag Wieers (@dagwieers)
requirements:
@@ -263,8 +263,12 @@ class CallbackModule(CallbackModule_default):
sys.stdout.write(colors[self.hosts[name]['state']] + name + vt100.reset)
sys.stdout.flush()
+# if result._result.get('diff', False):
+# sys.stdout.write('\n' + vt100.linewrap)
sys.stdout.write(vt100.linewrap)
+# self.keep = True
+
def _display_task_banner(self):
if not self.shown_title:
self.shown_title = True
@@ -308,12 +312,12 @@ class CallbackModule(CallbackModule_default):
delegated_vars = result._result.get('_ansible_delegated_vars', None)
if delegated_vars:
- sys.stdout.write(f"{vt100.reset}{result._host.get_name()}>{colors[status]}{delegated_vars['ansible_host']}")
+ sys.stdout.write(f"{vt100.reset + result._host.get_name()}>{colors[status]}{delegated_vars['ansible_host']}")
else:
sys.stdout.write(result._host.get_name())
sys.stdout.write(f": {dump}\n")
- sys.stdout.write(f"{vt100.reset}{vt100.save}{vt100.clearline}")
+ sys.stdout.write(vt100.reset + vt100.save + vt100.clearline)
sys.stdout.flush()
if status == 'changed':
diff --git a/plugins/callback/diy.py b/plugins/callback/diy.py
index f84789d010..a4369daadd 100644
--- a/plugins/callback/diy.py
+++ b/plugins/callback/diy.py
@@ -23,15 +23,15 @@ notes:
that is available using the other various execution contexts, such as playbook, play, task, and so on so forth.
- Options being set by their respective variable input can only be set using the variable if the variable was set in a context
that is available to the respective callback. Use the C(ansible_callback_diy) dictionary to see what is available to a
- callback. Additionally, C(ansible_callback_diy.top_level_var_names) outputs the top level variable names available
+ callback. Additionally, C(ansible_callback_diy.top_level_var_names) will output the top level variable names available
to the callback.
- Each option value is rendered as a template before being evaluated. This allows for the dynamic usage of an option. For
- example, V("{{ 'yellow' if ansible_callback_diy.result.is_changed else 'bright green' }}").
- - 'B(Condition) for all C(msg) options: if value V(is None or omit), then the option is not being used. B(Effect): use of
- the C(default) callback plugin for output.'
- - 'B(Condition) for all C(msg) options: if value V(is not None and not omit and length is not greater than 0), then the
+ example, C("{{ 'yellow' if ansible_callback_diy.result.is_changed else 'bright green' }}").
+ - 'B(Condition) for all C(msg) options: if value C(is None or omit), then the option is not being used. B(Effect): use
+ of the C(default) callback plugin for output.'
+ - 'B(Condition) for all C(msg) options: if value C(is not None and not omit and length is not greater than 0), then the
option is being used without output. B(Effect): suppress output.'
- - 'B(Condition) for all C(msg) options: if value V(is not None and not omit and length is greater than 0), then the option
+ - 'B(Condition) for all C(msg) options: if value C(is not None and not omit and length is greater than 0), then the option
is being used with output. B(Effect): render value as template and output.'
- 'Valid color values: V(black), V(bright gray), V(blue), V(white), V(green), V(bright blue), V(cyan), V(bright green),
V(red), V(bright cyan), V(purple), V(bright red), V(yellow), V(bright purple), V(dark gray), V(bright yellow), V(magenta),
diff --git a/plugins/callback/jabber.py b/plugins/callback/jabber.py
index c5a0881e14..10aa866142 100644
--- a/plugins/callback/jabber.py
+++ b/plugins/callback/jabber.py
@@ -10,7 +10,7 @@ DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: jabber
type: notification
-short_description: Post task events to a Jabber server
+short_description: post task events to a Jabber server
description:
- The chatty part of ChatOps with a Hipchat server as a target.
- This callback plugin sends status updates to a HipChat channel during playbook execution.
@@ -36,7 +36,7 @@ options:
env:
- name: JABBER_PASS
to:
- description: Chat identifier that receives the message.
+ description: Chat identifier that will receive the message.
type: str
required: true
env:
diff --git a/plugins/callback/log_plays.py b/plugins/callback/log_plays.py
index 3de6c0bec0..483976acae 100644
--- a/plugins/callback/log_plays.py
+++ b/plugins/callback/log_plays.py
@@ -10,7 +10,7 @@ DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: log_plays
type: notification
-short_description: Write playbook output to log file
+short_description: write playbook output to log file
description:
- This callback writes playbook output to a file per host in the C(/var/log/ansible/hosts) directory.
requirements:
@@ -19,7 +19,7 @@ requirements:
options:
log_folder:
default: /var/log/ansible/hosts
- description: The folder where log files are created.
+ description: The folder where log files will be created.
type: str
env:
- name: ANSIBLE_LOG_FOLDER
diff --git a/plugins/callback/loganalytics.py b/plugins/callback/loganalytics.py
index bd6b89fde1..bd3ca4018d 100644
--- a/plugins/callback/loganalytics.py
+++ b/plugins/callback/loganalytics.py
@@ -11,7 +11,7 @@ type: notification
short_description: Posts task results to Azure Log Analytics
author: "Cyrus Li (@zhcli) "
description:
- - This callback plugin posts task results in JSON formatted to an Azure Log Analytics workspace.
+ - This callback plugin will post task results in JSON formatted to an Azure Log Analytics workspace.
- Credits to authors of splunk callback plugin.
version_added: "2.4.0"
requirements:
diff --git a/plugins/callback/logdna.py b/plugins/callback/logdna.py
index 9ceb6547b2..90fe6d4465 100644
--- a/plugins/callback/logdna.py
+++ b/plugins/callback/logdna.py
@@ -11,7 +11,7 @@ name: logdna
type: notification
short_description: Sends playbook logs to LogDNA
description:
- - This callback reports logs from playbook actions, tasks, and events to LogDNA (U(https://app.logdna.com)).
+ - This callback will report logs from playbook actions, tasks, and events to LogDNA (U(https://app.logdna.com)).
requirements:
- LogDNA Python Library (U(https://github.com/logdna/python))
- whitelisting in configuration
diff --git a/plugins/callback/logentries.py b/plugins/callback/logentries.py
index 796398d6b6..bc5d7e03ce 100644
--- a/plugins/callback/logentries.py
+++ b/plugins/callback/logentries.py
@@ -11,7 +11,7 @@ name: logentries
type: notification
short_description: Sends events to Logentries
description:
- - This callback plugin generates JSON objects and send them to Logentries using TCP for auditing/debugging purposes.
+ - This callback plugin will generate JSON objects and send them to Logentries using TCP for auditing/debugging purposes.
requirements:
- whitelisting in configuration
- certifi (Python library)
diff --git a/plugins/callback/logstash.py b/plugins/callback/logstash.py
index 8b5acc6b9f..9d299e50ed 100644
--- a/plugins/callback/logstash.py
+++ b/plugins/callback/logstash.py
@@ -12,7 +12,7 @@ name: logstash
type: notification
short_description: Sends events to Logstash
description:
- - This callback reports facts and task events to Logstash U(https://www.elastic.co/products/logstash).
+ - This callback will report facts and task events to Logstash U(https://www.elastic.co/products/logstash).
requirements:
- whitelisting in configuration
- logstash (Python library)
@@ -127,7 +127,9 @@ class CallbackModule(CallbackBase):
if not HAS_LOGSTASH:
self.disabled = True
- self._display.warning("The required python3-logstash is not installed.")
+ self._display.warning("The required python-logstash/python3-logstash is not installed. "
+ "pip install python-logstash for Python 2"
+ "pip install python3-logstash for Python 3")
self.start_time = now()
@@ -180,7 +182,7 @@ class CallbackModule(CallbackBase):
data['status'] = "OK"
data['ansible_playbook'] = playbook._file_name
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.info(
"START PLAYBOOK | %s", data['ansible_playbook'], extra=data
)
@@ -205,7 +207,7 @@ class CallbackModule(CallbackBase):
data['ansible_playbook_duration'] = runtime.total_seconds()
data['ansible_result'] = json.dumps(summarize_stat) # deprecated field
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.info(
"FINISH PLAYBOOK | %s", json.dumps(summarize_stat), extra=data
)
@@ -224,7 +226,7 @@ class CallbackModule(CallbackBase):
data['ansible_play_id'] = self.play_id
data['ansible_play_name'] = self.play_name
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.info("START PLAY | %s", self.play_name, extra=data)
else:
self.logger.info("ansible play", extra=data)
@@ -249,7 +251,7 @@ class CallbackModule(CallbackBase):
data['ansible_task'] = task_name
data['ansible_facts'] = self._dump_results(result._result)
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.info(
"SETUP FACTS | %s", self._dump_results(result._result), extra=data
)
@@ -270,7 +272,7 @@ class CallbackModule(CallbackBase):
data['ansible_task_id'] = self.task_id
data['ansible_result'] = self._dump_results(result._result)
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.info(
"TASK OK | %s | RESULT | %s",
task_name, self._dump_results(result._result), extra=data
@@ -291,7 +293,7 @@ class CallbackModule(CallbackBase):
data['ansible_task_id'] = self.task_id
data['ansible_result'] = self._dump_results(result._result)
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.info("TASK SKIPPED | %s", task_name, extra=data)
else:
self.logger.info("ansible skipped", extra=data)
@@ -305,7 +307,7 @@ class CallbackModule(CallbackBase):
data['ansible_play_name'] = self.play_name
data['imported_file'] = imported_file
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.info("IMPORT | %s", imported_file, extra=data)
else:
self.logger.info("ansible import", extra=data)
@@ -319,7 +321,7 @@ class CallbackModule(CallbackBase):
data['ansible_play_name'] = self.play_name
data['imported_file'] = missing_file
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.info("NOT IMPORTED | %s", missing_file, extra=data)
else:
self.logger.info("ansible import", extra=data)
@@ -343,7 +345,7 @@ class CallbackModule(CallbackBase):
data['ansible_result'] = self._dump_results(result._result)
self.errors += 1
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.error(
"TASK FAILED | %s | HOST | %s | RESULT | %s",
task_name, self.hostname,
@@ -366,7 +368,7 @@ class CallbackModule(CallbackBase):
data['ansible_result'] = self._dump_results(result._result)
self.errors += 1
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.error(
"UNREACHABLE | %s | HOST | %s | RESULT | %s",
task_name, self.hostname,
@@ -389,7 +391,7 @@ class CallbackModule(CallbackBase):
data['ansible_result'] = self._dump_results(result._result)
self.errors += 1
- if self.ls_format_version == "v2":
+ if (self.ls_format_version == "v2"):
self.logger.error(
"ASYNC FAILED | %s | HOST | %s | RESULT | %s",
task_name, self.hostname,
diff --git a/plugins/callback/mail.py b/plugins/callback/mail.py
index d05982cd61..80bef26044 100644
--- a/plugins/callback/mail.py
+++ b/plugins/callback/mail.py
@@ -11,7 +11,7 @@ name: mail
type: notification
short_description: Sends failure events through email
description:
- - This callback reports failures through email.
+ - This callback will report failures through email.
author:
- Dag Wieers (@dagwieers)
requirements:
@@ -212,8 +212,7 @@ class CallbackModule(CallbackBase):
if self.itembody:
body += self.itembody
elif result._result.get('failed_when_result') is True:
- fail_cond_list = '\n- '.join(result._task.failed_when)
- fail_cond = self.indent(f"failed_when:\n- {fail_cond_list}")
+ fail_cond = self.indent('failed_when:\n- ' + '\n- '.join(result._task.failed_when))
body += f"due to the following condition:\n\n{fail_cond}\n\n"
elif result._result.get('msg'):
body += self.body_blob(result._result['msg'], 'message')
diff --git a/plugins/callback/null.py b/plugins/callback/null.py
index 0527c1c467..b59389e39a 100644
--- a/plugins/callback/null.py
+++ b/plugins/callback/null.py
@@ -12,7 +12,7 @@ name: 'null'
type: stdout
requirements:
- set as main display callback
-short_description: Do not display stuff to screen
+short_description: do not display stuff to screen
description:
- This callback prevents outputting events to screen.
"""
diff --git a/plugins/callback/opentelemetry.py b/plugins/callback/opentelemetry.py
index 80f24924b9..c46234b724 100644
--- a/plugins/callback/opentelemetry.py
+++ b/plugins/callback/opentelemetry.py
@@ -35,8 +35,8 @@ options:
- Whether to enable this callback only if the given environment variable exists and it is set to V(true).
- This is handy when you use Configuration as Code and want to send distributed traces if running in the CI rather when
running Ansible locally.
- - For such, it evaluates the given O(enable_from_environment) value as environment variable and if set to V(true) this
- plugin is enabled.
+ - For such, it evaluates the given O(enable_from_environment) value as environment variable and if set to true this
+ plugin will be enabled.
env:
- name: ANSIBLE_OPENTELEMETRY_ENABLE_FROM_ENVIRONMENT
ini:
diff --git a/plugins/callback/print_task.py b/plugins/callback/print_task.py
index 809baddb95..7407b0e803 100644
--- a/plugins/callback/print_task.py
+++ b/plugins/callback/print_task.py
@@ -6,7 +6,7 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
-DOCUMENTATION = r"""
+DOCUMENTATION = r'''
name: print_task
type: aggregate
short_description: Prints playbook task snippet to job output
@@ -15,14 +15,14 @@ description:
version_added: 10.7.0
requirements:
- enable in configuration
-"""
+'''
-EXAMPLES = r"""
-ansible.cfg: |-
- # Enable plugin
- [defaults]
- callbacks_enabled=community.general.print_task
-"""
+EXAMPLES = r'''
+ansible.cfg: >
+ # Enable plugin
+ [defaults]
+ callbacks_enabled=community.general.print_task
+'''
from yaml import load, dump
diff --git a/plugins/callback/say.py b/plugins/callback/say.py
index 8a4e93f353..e6da490ec7 100644
--- a/plugins/callback/say.py
+++ b/plugins/callback/say.py
@@ -14,9 +14,9 @@ type: notification
requirements:
- whitelisting in configuration
- the C(/usr/bin/say) command line program (standard on macOS) or C(espeak) command line program
-short_description: Notify using software speech synthesizer
+short_description: notify using software speech synthesizer
description:
- - This plugin uses C(say) or C(espeak) to "speak" about play events.
+ - This plugin will use the C(say) or C(espeak) program to "speak" about play events.
"""
import platform
diff --git a/plugins/callback/selective.py b/plugins/callback/selective.py
index 53d40671bc..9cc805d3cd 100644
--- a/plugins/callback/selective.py
+++ b/plugins/callback/selective.py
@@ -12,7 +12,7 @@ name: selective
type: stdout
requirements:
- set as main display callback
-short_description: Only print certain tasks
+short_description: only print certain tasks
description:
- This callback only prints tasks that have been tagged with C(print_action) or that have failed. This allows operators
to focus on the tasks that provide value only.
diff --git a/plugins/callback/splunk.py b/plugins/callback/splunk.py
index c385050d67..1870bfc1d0 100644
--- a/plugins/callback/splunk.py
+++ b/plugins/callback/splunk.py
@@ -11,7 +11,7 @@ type: notification
short_description: Sends task result events to Splunk HTTP Event Collector
author: "Stuart Hirst (!UNKNOWN) "
description:
- - This callback plugin sends task results as JSON formatted events to a Splunk HTTP collector.
+ - This callback plugin will send task results as JSON formatted events to a Splunk HTTP collector.
- The companion Splunk Monitoring & Diagnostics App is available here U(https://splunkbase.splunk.com/app/4023/).
- Credit to "Ryan Currah (@ryancurrah)" for original source upon which this is based.
requirements:
diff --git a/plugins/callback/sumologic.py b/plugins/callback/sumologic.py
index 7a762c30e8..c12c852db9 100644
--- a/plugins/callback/sumologic.py
+++ b/plugins/callback/sumologic.py
@@ -11,7 +11,7 @@ type: notification
short_description: Sends task result events to Sumologic
author: "Ryan Currah (@ryancurrah)"
description:
- - This callback plugin sends task results as JSON formatted events to a Sumologic HTTP collector source.
+ - This callback plugin will send task results as JSON formatted events to a Sumologic HTTP collector source.
requirements:
- Whitelisting this callback plugin
- 'Create a HTTP collector source in Sumologic and specify a custom timestamp format of V(yyyy-MM-dd HH:mm:ss ZZZZ) and
diff --git a/plugins/callback/syslog_json.py b/plugins/callback/syslog_json.py
index cab3973be1..9e5c78c90c 100644
--- a/plugins/callback/syslog_json.py
+++ b/plugins/callback/syslog_json.py
@@ -12,12 +12,12 @@ name: syslog_json
type: notification
requirements:
- whitelist in configuration
-short_description: Sends JSON events to syslog
+short_description: sends JSON events to syslog
description:
- This plugin logs ansible-playbook and ansible runs to a syslog server in JSON format.
options:
server:
- description: Syslog server that receives the event.
+ description: Syslog server that will receive the event.
type: str
env:
- name: SYSLOG_SERVER
diff --git a/plugins/callback/tasks_only.py b/plugins/callback/tasks_only.py
deleted file mode 100644
index 243ec9661d..0000000000
--- a/plugins/callback/tasks_only.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2025, Felix Fontein
-# 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
-
-from __future__ import annotations
-
-DOCUMENTATION = r"""
-author: Felix Fontein (@felixfontein)
-name: tasks_only
-type: stdout
-version_added: 11.1.0
-short_description: Only show tasks
-description:
- - Removes play start and stats marker from P(ansible.builtin.default#callback)'s output.
- - Can be used to generate output for documentation examples.
- For this, the O(number_of_columns) option should be set to an explicit value.
-extends_documentation_fragment:
- - ansible.builtin.default_callback
- - ansible.builtin.result_format_callback
-options:
- number_of_columns:
- description:
- - Sets the number of columns for Ansible's display.
- type: int
- env:
- - name: ANSIBLE_COLLECTIONS_TASKS_ONLY_NUMBER_OF_COLUMNS
- result_format:
- # Part of the ansible.builtin.result_format_callback doc fragment
- version_added: 11.2.0
- pretty_results:
- # Part of the ansible.builtin.result_format_callback doc fragment
- version_added: 11.2.0
-"""
-
-EXAMPLES = r"""
----
-# Enable callback in ansible.cfg:
-ansible_config: |-
- [defaults]
- stdout_callback = community.general.tasks_only
-
----
-# Enable callback with environment variables:
-environment_variable: |-
- ANSIBLE_STDOUT_CALLBACK=community.general.tasks_only
-"""
-
-from ansible.plugins.callback.default import CallbackModule as Default
-
-
-class CallbackModule(Default):
- CALLBACK_VERSION = 2.0
- CALLBACK_TYPE = 'stdout'
- CALLBACK_NAME = 'community.general.tasks_only'
-
- def v2_playbook_on_play_start(self, play):
- pass
-
- def v2_playbook_on_stats(self, stats):
- pass
-
- def set_options(self, *args, **kwargs):
- result = super(CallbackModule, self).set_options(*args, **kwargs)
- self.number_of_columns = self.get_option("number_of_columns")
- if self.number_of_columns is not None:
- self._display.columns = self.number_of_columns
- return result
diff --git a/plugins/callback/unixy.py b/plugins/callback/unixy.py
index 8fd8c10c94..48f9b2d1f0 100644
--- a/plugins/callback/unixy.py
+++ b/plugins/callback/unixy.py
@@ -11,7 +11,7 @@ DOCUMENTATION = r"""
name: unixy
type: stdout
author: Al Bowles (@akatch)
-short_description: Condensed Ansible output
+short_description: condensed Ansible output
description:
- Consolidated Ansible output in the style of LINUX/UNIX startup logs.
extends_documentation_fragment:
diff --git a/plugins/callback/yaml.py b/plugins/callback/yaml.py
index f02840c9c6..d11dfd0c0a 100644
--- a/plugins/callback/yaml.py
+++ b/plugins/callback/yaml.py
@@ -119,9 +119,6 @@ except ImportError:
def transform_recursively(value, transform):
- # Since 2.19.0b7, this should no longer be needed:
- # https://github.com/ansible/ansible/issues/85325
- # https://github.com/ansible/ansible/pull/85389
if isinstance(value, Mapping):
return {transform(k): transform(v) for k, v in value.items()}
if isinstance(value, Sequence) and not isinstance(value, (str, bytes)):
diff --git a/plugins/connection/incus.py b/plugins/connection/incus.py
index 4f73d05532..842ad8f924 100644
--- a/plugins/connection/incus.py
+++ b/plugins/connection/incus.py
@@ -52,7 +52,7 @@ options:
remote_user:
description:
- User to login/authenticate as.
- - Can be set from the CLI with the C(--user) or C(-u) options.
+ - Can be set from the CLI via the C(--user) or C(-u) options.
type: string
default: root
vars:
@@ -155,35 +155,11 @@ class Connection(ConnectionBase):
stdout = to_text(stdout)
stderr = to_text(stderr)
- if stderr.startswith("Error: ") and stderr.rstrip().endswith(
- ": Instance is not running"
- ):
- raise AnsibleConnectionFailure(
- f"instance not running: {self._instance()} (remote={self.get_option('remote')}, project={self.get_option('project')})"
- )
+ if stderr == "Error: Instance is not running.\n":
+ raise AnsibleConnectionFailure(f"instance not running: {self._instance()}")
- if stderr.startswith("Error: ") and stderr.rstrip().endswith(
- ": Instance not found"
- ):
- raise AnsibleConnectionFailure(
- f"instance not found: {self._instance()} (remote={self.get_option('remote')}, project={self.get_option('project')})"
- )
-
- if (
- stderr.startswith("Error: ")
- and ": User does not have permission " in stderr
- ):
- raise AnsibleConnectionFailure(
- f"instance access denied: {self._instance()} (remote={self.get_option('remote')}, project={self.get_option('project')})"
- )
-
- if (
- stderr.startswith("Error: ")
- and ": User does not have entitlement " in stderr
- ):
- raise AnsibleConnectionFailure(
- f"instance access denied: {self._instance()} (remote={self.get_option('remote')}, project={self.get_option('project')})"
- )
+ if stderr == "Error: Instance not found\n":
+ raise AnsibleConnectionFailure(f"instance not found: {self._instance()}")
return process.returncode, stdout, stderr
diff --git a/plugins/connection/lxd.py b/plugins/connection/lxd.py
index 2cc774a1d4..2670ed1b5f 100644
--- a/plugins/connection/lxd.py
+++ b/plugins/connection/lxd.py
@@ -52,7 +52,7 @@ options:
remote_user:
description:
- User to login/authenticate as.
- - Can be set from the CLI with the C(--user) or C(-u) options.
+ - Can be set from the CLI via the C(--user) or C(-u) options.
type: string
default: root
vars:
diff --git a/plugins/connection/wsl.py b/plugins/connection/wsl.py
index 92ffec52b3..06c0652312 100644
--- a/plugins/connection/wsl.py
+++ b/plugins/connection/wsl.py
@@ -11,11 +11,11 @@ from __future__ import annotations
DOCUMENTATION = r"""
author: Rui Lopes (@rgl)
name: wsl
-short_description: Run tasks in WSL distribution using wsl.exe CLI using SSH
+short_description: Run tasks in WSL distribution using wsl.exe CLI via SSH
requirements:
- paramiko
description:
- - Run commands or put/fetch files to an existing WSL distribution using wsl.exe CLI using SSH.
+ - Run commands or put/fetch files to an existing WSL distribution using wsl.exe CLI via SSH.
- Uses the Python SSH implementation (Paramiko) to connect to the WSL host.
version_added: "10.6.0"
options:
@@ -50,7 +50,7 @@ options:
remote_user:
description:
- User to login/authenticate as.
- - Can be set from the CLI with the C(--user) or C(-u) options.
+ - Can be set from the CLI via the C(--user) or C(-u) options.
type: string
vars:
- name: ansible_user
@@ -69,7 +69,7 @@ options:
password:
description:
- Secret used to either login the SSH server or as a passphrase for SSH keys that require it.
- - Can be set from the CLI with the C(--ask-pass) option.
+ - Can be set from the CLI via the C(--ask-pass) option.
type: string
vars:
- name: ansible_password
@@ -109,7 +109,7 @@ options:
proxy_command:
default: ""
description:
- - Proxy information for running the connection through a jumphost.
+ - Proxy information for running the connection via a jumphost.
- This option is supported by paramiko version 1.9.0 or newer.
type: string
env:
@@ -128,8 +128,7 @@ options:
key: record_host_keys
type: boolean
host_key_checking:
- description: "Set this to V(false) if you want to avoid host key checking by the underlying tools Ansible uses to connect
- to the host."
+ description: "Set this to V(false) if you want to avoid host key checking by the underlying tools Ansible uses to connect to the host."
type: boolean
default: true
env:
@@ -158,7 +157,8 @@ options:
type: float
default: 30
description:
- - Configures, in seconds, the amount of time to wait for the SSH banner to be presented.
+ - Configures, in seconds, the amount of time to wait for the SSH
+ banner to be presented.
- This option is supported by paramiko version 1.15.0 or newer.
ini:
- section: paramiko_connection
@@ -227,20 +227,20 @@ options:
- name: ansible_paramiko_user_known_hosts_file
wsl_distribution:
description:
- - WSL distribution name.
+ - WSL distribution name
type: string
required: true
vars:
- name: wsl_distribution
wsl_user:
description:
- - WSL distribution user.
+ - WSL distribution user
type: string
vars:
- name: wsl_user
become_user:
description:
- - WSL distribution user.
+ - WSL distribution user
type: string
default: root
vars:
@@ -248,7 +248,7 @@ options:
- name: ansible_become_user
become:
description:
- - Whether to use the user defined by O(become_user).
+ - whether to use the user defined by ansible_become_user.
type: bool
default: false
vars:
@@ -315,7 +315,6 @@ import pathlib
import shlex
import socket
import tempfile
-import traceback
import typing as t
from ansible.errors import (
@@ -324,8 +323,9 @@ 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,15 +333,8 @@ 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_IMPORT_ERR is None:
+if t.TYPE_CHECKING and paramiko:
from paramiko import MissingHostKeyPolicy
from paramiko.client import SSHClient
from paramiko.pkey import PKey
@@ -444,7 +437,7 @@ class Connection(ConnectionBase):
def _connect(self) -> Connection:
""" activates the connection object """
- if PARAMIKO_IMPORT_ERR is not None:
+ if paramiko is None:
raise AnsibleError(f'paramiko is not installed: {to_native(PARAMIKO_IMPORT_ERR)}')
port = self.get_option('port')
@@ -529,10 +522,8 @@ class Connection(ConnectionBase):
if u'PID check failed' in msg:
raise AnsibleError('paramiko version issue, please upgrade paramiko on the machine running ansible')
elif u'Private key file is encrypted' in msg:
- msg = (
- f'ssh {self.get_option("remote_user")}@{self.get_options("remote_addr")}:{port} : '
+ msg = f'ssh {self.get_option("remote_user")}@{self.get_options("remote_addr")}:{port} : ' + \
f'{msg}\nTo connect as a different user, use -u .'
- )
raise AnsibleConnectionFailure(msg)
else:
raise AnsibleConnectionFailure(msg)
@@ -665,7 +656,7 @@ class Connection(ConnectionBase):
chan.shutdown_write()
except socket.timeout:
- raise AnsibleError(f'ssh timed out waiting for privilege escalation.\n{to_text(become_output)}')
+ raise AnsibleError('ssh timed out waiting for privilege escalation.\n' + to_text(become_output))
stdout = b''.join(chan.makefile('rb', bufsize))
stderr = b''.join(chan.makefile_stderr('rb', bufsize))
diff --git a/plugins/doc_fragments/alicloud.py b/plugins/doc_fragments/alicloud.py
index cf7255b465..3b810852b7 100644
--- a/plugins/doc_fragments/alicloud.py
+++ b/plugins/doc_fragments/alicloud.py
@@ -16,31 +16,31 @@ options:
alicloud_access_key:
description:
- Alibaba Cloud access key. If not set then the value of environment variable E(ALICLOUD_ACCESS_KEY), E(ALICLOUD_ACCESS_KEY_ID)
- is used instead.
+ will be used instead.
aliases: ['access_key_id', 'access_key']
type: str
alicloud_secret_key:
description:
- Alibaba Cloud secret key. If not set then the value of environment variable E(ALICLOUD_SECRET_KEY), E(ALICLOUD_SECRET_ACCESS_KEY)
- is used instead.
+ will be used instead.
aliases: ['secret_access_key', 'secret_key']
type: str
alicloud_region:
description:
- The Alibaba Cloud region to use. If not specified then the value of environment variable E(ALICLOUD_REGION), E(ALICLOUD_REGION_ID)
- is used instead.
+ will be used instead.
aliases: ['region', 'region_id']
required: true
type: str
alicloud_security_token:
description:
- The Alibaba Cloud security token. If not specified then the value of environment variable E(ALICLOUD_SECURITY_TOKEN)
- is used instead.
+ will be used instead.
aliases: ['security_token']
type: str
alicloud_assume_role:
description:
- - If provided with a role ARN, Ansible attempts to assume this role using the supplied credentials.
+ - If provided with a role ARN, Ansible will attempt to assume this role using the supplied credentials.
- The nested assume_role block supports C(alicloud_assume_role_arn), C(alicloud_assume_role_session_name), C(alicloud_assume_role_session_expiration)
and C(alicloud_assume_role_policy).
type: dict
@@ -48,7 +48,7 @@ options:
alicloud_assume_role_arn:
description:
- The Alibaba Cloud C(role_arn). The ARN of the role to assume. If ARN is set to an empty string, it does not perform
- role switching. It supports environment variable E(ALICLOUD_ASSUME_ROLE_ARN). Ansible executes with provided credentials.
+ role switching. It supports environment variable E(ALICLOUD_ASSUME_ROLE_ARN). ansible will execute with provided credentials.
aliases: ['assume_role_arn']
type: str
alicloud_assume_role_session_name:
@@ -68,7 +68,7 @@ options:
description:
- The RAM Role Name attached on a ECS instance for API operations. You can retrieve this from the 'Access Control' section
of the Alibaba Cloud console.
- - If you are running Ansible from an ECS instance with RAM Instance using RAM Role, Ansible just accesses the metadata
+ - If you are running Ansible from an ECS instance with RAM Instance using RAM Role, Ansible will just access the metadata
U(http://100.100.100.200/latest/meta-data/ram/security-credentials/) to obtain the STS credential.
This is a preferred approach over any other when running in ECS as you can avoid hard coding credentials. Instead
these are leased on-the-fly by Ansible which reduces the chance of leakage.
@@ -83,7 +83,7 @@ options:
description:
- This is the path to the shared credentials file. It can also be sourced from the E(ALICLOUD_SHARED_CREDENTIALS_FILE)
environment variable.
- - If this is not set and a profile is specified, C(~/.aliyun/config.json) is used.
+ - If this is not set and a profile is specified, C(~/.aliyun/config.json) will be used.
type: str
author:
- "He Guimin (@xiaozhu36)"
diff --git a/plugins/doc_fragments/attributes.py b/plugins/doc_fragments/attributes.py
index 18b02575c4..d6cc2b8c25 100644
--- a/plugins/doc_fragments/attributes.py
+++ b/plugins/doc_fragments/attributes.py
@@ -17,7 +17,7 @@ attributes:
check_mode:
description: Can run in C(check_mode) and return changed status prediction without modifying target.
diff_mode:
- description: Returns details on what has changed (or possibly needs changing in C(check_mode)), when in diff mode.
+ description: Will return details on what has changed (or possibly needs changing in C(check_mode)), when in diff mode.
"""
PLATFORM = r"""
@@ -57,7 +57,7 @@ attributes:
options: {}
attributes:
facts:
- description: Action returns an C(ansible_facts) dictionary that updates existing host facts.
+ description: Action returns an C(ansible_facts) dictionary that will update existing host facts.
"""
# Should be used together with the standard fragment and the FACTS fragment
diff --git a/plugins/doc_fragments/bitbucket.py b/plugins/doc_fragments/bitbucket.py
index 65c4c47b51..e8b9ea4df8 100644
--- a/plugins/doc_fragments/bitbucket.py
+++ b/plugins/doc_fragments/bitbucket.py
@@ -16,17 +16,17 @@ options:
client_id:
description:
- The OAuth consumer key.
- - If not set the environment variable E(BITBUCKET_CLIENT_ID) is used.
+ - If not set the environment variable E(BITBUCKET_CLIENT_ID) will be used.
type: str
client_secret:
description:
- The OAuth consumer secret.
- - If not set the environment variable E(BITBUCKET_CLIENT_SECRET) is used.
+ - If not set the environment variable E(BITBUCKET_CLIENT_SECRET) will be used.
type: str
user:
description:
- The username.
- - If not set the environment variable E(BITBUCKET_USERNAME) is used.
+ - If not set the environment variable E(BITBUCKET_USERNAME) will be used.
- O(ignore:username) is an alias of O(user) since community.general 6.0.0. It was an alias of O(workspace) before.
type: str
version_added: 4.0.0
@@ -34,7 +34,7 @@ options:
password:
description:
- The App password.
- - If not set the environment variable E(BITBUCKET_PASSWORD) is used.
+ - If not set the environment variable E(BITBUCKET_PASSWORD) will be used.
type: str
version_added: 4.0.0
notes:
diff --git a/plugins/doc_fragments/dimensiondata.py b/plugins/doc_fragments/dimensiondata.py
index 890c4d741e..ece97addf0 100644
--- a/plugins/doc_fragments/dimensiondata.py
+++ b/plugins/doc_fragments/dimensiondata.py
@@ -28,12 +28,12 @@ options:
mcp_user:
description:
- The username used to authenticate to the CloudControl API.
- - If not specified, falls back to E(MCP_USER) from environment variable or C(~/.dimensiondata).
+ - If not specified, will fall back to E(MCP_USER) from environment variable or C(~/.dimensiondata).
type: str
mcp_password:
description:
- The password used to authenticate to the CloudControl API.
- - If not specified, falls back to E(MCP_PASSWORD) from environment variable or C(~/.dimensiondata).
+ - If not specified, will fall back to E(MCP_PASSWORD) from environment variable or C(~/.dimensiondata).
- Required if O(mcp_user) is specified.
type: str
location:
@@ -43,7 +43,7 @@ options:
required: true
validate_certs:
description:
- - If V(false), SSL certificates are not validated.
+ - If V(false), SSL certificates will not be validated.
- This should only be used on private instances of the CloudControl API that use self-signed certificates.
type: bool
default: true
diff --git a/plugins/doc_fragments/django.py b/plugins/doc_fragments/django.py
index 5d01c8323e..3dcdb40171 100644
--- a/plugins/doc_fragments/django.py
+++ b/plugins/doc_fragments/django.py
@@ -18,13 +18,13 @@ options:
settings:
description:
- Specifies the settings module to use.
- - The value is passed as is to the C(--settings) argument in C(django-admin).
+ - The value will be passed as is to the C(--settings) argument in C(django-admin).
type: str
required: true
pythonpath:
description:
- Adds the given filesystem path to the Python import search path.
- - The value is passed as is to the C(--pythonpath) argument in C(django-admin).
+ - The value will be passed as is to the C(--pythonpath) argument in C(django-admin).
type: path
traceback:
description:
diff --git a/plugins/doc_fragments/hwc.py b/plugins/doc_fragments/hwc.py
index ea54c80c09..3d478beb59 100644
--- a/plugins/doc_fragments/hwc.py
+++ b/plugins/doc_fragments/hwc.py
@@ -55,5 +55,5 @@ notes:
- For authentication, you can set domain using the E(ANSIBLE_HWC_DOMAIN) environment variable.
- For authentication, you can set project using the E(ANSIBLE_HWC_PROJECT) environment variable.
- For authentication, you can set region using the E(ANSIBLE_HWC_REGION) environment variable.
- - Environment variables values are only used when the playbook values are not set.
+ - Environment variables values will only be used if the playbook values are not set.
"""
diff --git a/plugins/doc_fragments/influxdb.py b/plugins/doc_fragments/influxdb.py
index 5dbebea846..9cf47d340a 100644
--- a/plugins/doc_fragments/influxdb.py
+++ b/plugins/doc_fragments/influxdb.py
@@ -20,13 +20,13 @@ options:
default: localhost
username:
description:
- - Username that is used to authenticate against InfluxDB server.
+ - Username that will be used to authenticate against InfluxDB server.
type: str
default: root
aliases: [login_username]
password:
description:
- - Password that is used to authenticate against InfluxDB server.
+ - Password that will be used to authenticate against InfluxDB server.
type: str
default: root
aliases: [login_password]
@@ -44,7 +44,7 @@ options:
version_added: '0.2.0'
validate_certs:
description:
- - If set to V(false), the SSL certificates are not validated.
+ - 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.
type: bool
default: true
@@ -55,11 +55,11 @@ options:
default: false
timeout:
description:
- - Number of seconds Requests waits for client to establish a connection.
+ - Number of seconds Requests will wait for client to establish a connection.
type: int
retries:
description:
- - Number of retries client performs before aborting.
+ - Number of retries client will try before aborting.
- V(0) indicates try until success.
- Only available when using C(python-influxdb) >= 4.1.0.
type: int
diff --git a/plugins/doc_fragments/ipa.py b/plugins/doc_fragments/ipa.py
index 63ea94b465..0edb947aa5 100644
--- a/plugins/doc_fragments/ipa.py
+++ b/plugins/doc_fragments/ipa.py
@@ -16,43 +16,43 @@ options:
ipa_port:
description:
- Port of FreeIPA / IPA server.
- - If the value is not specified in the task, the value of environment variable E(IPA_PORT) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(IPA_PORT) will be used instead.
- If both the environment variable E(IPA_PORT) and the value are not specified in the task, then default value is set.
type: int
default: 443
ipa_host:
description:
- IP or hostname of IPA server.
- - If the value is not specified in the task, the value of environment variable E(IPA_HOST) is used instead.
- - If both the environment variable E(IPA_HOST) and the value are not specified in the task, then DNS is used to try
- to discover the FreeIPA server.
+ - If the value is not specified in the task, the value of environment variable E(IPA_HOST) will be used instead.
+ - If both the environment variable E(IPA_HOST) and the value are not specified in the task, then DNS will be used to
+ try to discover the FreeIPA server.
- The relevant entry needed in FreeIPA is the C(ipa-ca) entry.
- If neither the DNS entry, nor the environment E(IPA_HOST), nor the value are available in the task, then the default
- value is used.
+ value will be used.
type: str
default: ipa.example.com
ipa_user:
description:
- Administrative account used on IPA server.
- - If the value is not specified in the task, the value of environment variable E(IPA_USER) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(IPA_USER) will be used instead.
- If both the environment variable E(IPA_USER) and the value are not specified in the task, then default value is set.
type: str
default: admin
ipa_pass:
description:
- Password of administrative user.
- - If the value is not specified in the task, the value of environment variable E(IPA_PASS) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(IPA_PASS) will be used instead.
- Note that if the C(urllib_gssapi) library is available, it is possible to use GSSAPI to authenticate to FreeIPA.
- - If the environment variable E(KRB5CCNAME) is available, the module uses this Kerberos credentials cache to authenticate
+ - If the environment variable E(KRB5CCNAME) is available, the module will use this kerberos credentials cache to authenticate
to the FreeIPA server.
- - If the environment variable E(KRB5_CLIENT_KTNAME) is available, and E(KRB5CCNAME) is not; the module uses this Kerberos
- keytab to authenticate.
+ - If the environment variable E(KRB5_CLIENT_KTNAME) is available, and E(KRB5CCNAME) is not; the module will use this
+ kerberos keytab to authenticate.
- If GSSAPI is not available, the usage of O(ipa_pass) is required.
type: str
ipa_prot:
description:
- Protocol used by IPA server.
- - If the value is not specified in the task, the value of environment variable E(IPA_PROT) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(IPA_PROT) will be used instead.
- If both the environment variable E(IPA_PROT) and the value are not specified in the task, then default value is set.
type: str
choices: [http, https]
@@ -60,7 +60,7 @@ options:
validate_certs:
description:
- This only applies if O(ipa_prot) is V(https).
- - If set to V(false), the SSL certificates are not validated.
+ - 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.
type: bool
default: true
@@ -68,7 +68,7 @@ options:
description:
- Specifies idle timeout (in seconds) for the connection.
- For bulk operations, you may want to increase this in order to avoid timeout from IPA server.
- - If the value is not specified in the task, the value of environment variable E(IPA_TIMEOUT) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(IPA_TIMEOUT) will be used instead.
- If both the environment variable E(IPA_TIMEOUT) and the value are not specified in the task, then default value is
set.
type: int
diff --git a/plugins/doc_fragments/ldap.py b/plugins/doc_fragments/ldap.py
index abdb32adb7..4dd5fd097f 100644
--- a/plugins/doc_fragments/ldap.py
+++ b/plugins/doc_fragments/ldap.py
@@ -14,9 +14,9 @@ class ModuleDocFragment(object):
# Standard LDAP documentation fragment
DOCUMENTATION = r"""
notes:
- - The default authentication settings attempts to use a SASL EXTERNAL bind over a UNIX domain socket. This works well with
- the default Ubuntu install for example, which includes a C(cn=peercred,cn=external,cn=auth) ACL rule allowing root to
- modify the server configuration. If you need to use a simple bind to access your server, pass the credentials in O(bind_dn)
+ - The default authentication settings will attempt to use a SASL EXTERNAL bind over a UNIX domain socket. This works well
+ with the default Ubuntu install for example, which includes a C(cn=peercred,cn=external,cn=auth) ACL rule allowing root
+ to modify the server configuration. If you need to use a simple bind to access your server, pass the credentials in O(bind_dn)
and O(bind_pw).
options:
bind_dn:
@@ -76,7 +76,7 @@ options:
default: false
validate_certs:
description:
- - If set to V(false), SSL certificates are not validated.
+ - If set to V(false), SSL certificates will not be validated.
- This should only be used on sites using self-signed certificates.
type: bool
default: true
@@ -90,9 +90,9 @@ options:
xorder_discovery:
description:
- Set the behavior on how to process Xordered DNs.
- - V(enable) performs a C(ONELEVEL) search below the superior RDN to find the matching DN.
- - V(disable) always uses the DN unmodified (as passed by the O(dn) parameter).
- - V(auto) only performs a search if the first RDN does not contain an index number (C({x})).
+ - V(enable) will perform a C(ONELEVEL) search below the superior RDN to find the matching DN.
+ - V(disable) will always use the DN unmodified (as passed by the O(dn) parameter).
+ - V(auto) will only perform a search if the first RDN does not contain an index number (C({x})).
type: str
choices: ['enable', 'auto', 'disable']
default: auto
diff --git a/plugins/doc_fragments/onepassword.py b/plugins/doc_fragments/onepassword.py
index 6fb0e252c6..a67c9e4dc1 100644
--- a/plugins/doc_fragments/onepassword.py
+++ b/plugins/doc_fragments/onepassword.py
@@ -18,8 +18,8 @@ options:
aliases: ['vault_password']
type: str
section:
- description: Item section containing the field to retrieve (case-insensitive). If absent, returns first match from any
- section.
+ description: Item section containing the field to retrieve (case-insensitive). If absent will return first match from
+ any section.
domain:
description: Domain of 1Password.
default: '1password.com'
@@ -42,7 +42,7 @@ options:
- Only works with 1Password CLI version 2 or later.
type: str
vault:
- description: Vault containing the item to retrieve (case-insensitive). If absent, searches all vaults.
+ description: Vault containing the item to retrieve (case-insensitive). If absent will search all vaults.
type: str
connect_host:
description: The host for 1Password Connect. Must be used in combination with O(connect_token).
@@ -65,9 +65,10 @@ options:
- name: OP_SERVICE_ACCOUNT_TOKEN
version_added: 8.2.0
notes:
- - This lookup uses an existing 1Password session if one exists. If not, and you have already performed an initial sign in
- (meaning C(~/.op/config), C(~/.config/op/config) or C(~/.config/.op/config) exists), then only the O(master_password)
- is required. You may optionally specify O(subdomain) in this scenario, otherwise the last used subdomain is used by C(op).
+ - This lookup will use an existing 1Password session if one exists. If not, and you have already performed an initial sign
+ in (meaning C(~/.op/config), C(~/.config/op/config) or C(~/.config/.op/config) exists), then only the O(master_password)
+ is required. You may optionally specify O(subdomain) in this scenario, otherwise the last used subdomain will be used
+ by C(op).
- This lookup can perform an initial login by providing O(subdomain), O(username), O(secret_key), and O(master_password).
- Can target a specific account by providing the O(account_id).
- Due to the B(very) sensitive nature of these credentials, it is B(highly) recommended that you only pass in the minimal
diff --git a/plugins/doc_fragments/oneview.py b/plugins/doc_fragments/oneview.py
index 366e3e3e42..3caabe4512 100644
--- a/plugins/doc_fragments/oneview.py
+++ b/plugins/doc_fragments/oneview.py
@@ -17,8 +17,8 @@ options:
description:
- Path to a JSON configuration file containing the OneView client configuration. The configuration file is optional
and when used should be present in the host running the ansible commands. If the file path is not provided, the configuration
- is loaded from environment variables. For links to example configuration files or how to use the environment variables
- verify the notes section.
+ will be loaded from environment variables. For links to example configuration files or how to use the environment
+ variables verify the notes section.
type: path
api_version:
description:
@@ -49,16 +49,16 @@ notes:
U(https://github.com/HewlettPackard/oneview-ansible/blob/master/examples/oneview_config-rename.json).'
- 'Check how to use environment variables for configuration at: U(https://github.com/HewlettPackard/oneview-ansible#environment-variables).'
- 'Additional Playbooks for the HPE OneView Ansible modules can be found at: U(https://github.com/HewlettPackard/oneview-ansible/tree/master/examples).'
- - 'The OneView API version used directly affects returned and expected fields in resources. Information on setting the desired
- API version and can be found at: U(https://github.com/HewlettPackard/oneview-ansible#setting-your-oneview-version).'
+ - 'The OneView API version used will directly affect returned and expected fields in resources. Information on setting the
+ desired API version and can be found at: U(https://github.com/HewlettPackard/oneview-ansible#setting-your-oneview-version).'
"""
VALIDATEETAG = r"""
options:
validate_etag:
description:
- - When the ETag Validation is enabled, the request is conditionally processed only if the current ETag for the resource
- matches the ETag provided in the data.
+ - When the ETag Validation is enabled, the request will be conditionally processed only if the current ETag for the
+ resource matches the ETag provided in the data.
type: bool
default: true
"""
diff --git a/plugins/doc_fragments/openswitch.py b/plugins/doc_fragments/openswitch.py
index 30b477fbe7..f0e9e87c3d 100644
--- a/plugins/doc_fragments/openswitch.py
+++ b/plugins/doc_fragments/openswitch.py
@@ -21,8 +21,8 @@ options:
port:
description:
- Specifies the port to use when building the connection to the remote device. This value applies to either O(transport=cli)
- or O(transport=rest). The port value defaults to the appropriate transport common port if none is provided in the
- task. (cli=22, http=80, https=443). Note this argument does not affect the SSH transport.
+ or O(transport=rest). The port value will default to the appropriate transport common port if none is provided in
+ the task. (cli=22, http=80, https=443). Note this argument does not affect the SSH transport.
type: int
default: 0 (use common port)
username:
@@ -30,24 +30,25 @@ options:
- Configures the username to use to authenticate the connection to the remote device. This value is used to authenticate
either the CLI login or the eAPI authentication depending on which transport is used. Note this argument does not
affect the SSH transport. If the value is not specified in the task, the value of environment variable E(ANSIBLE_NET_USERNAME)
- is used instead.
+ will be used instead.
type: str
password:
description:
- Specifies the password to use to authenticate the connection to the remote device. This is a common argument used
for either O(transport=cli) or O(transport=rest). Note this argument does not affect the SSH transport. If the value
- is not specified in the task, the value of environment variable E(ANSIBLE_NET_PASSWORD) is used instead.
+ is not specified in the task, the value of environment variable E(ANSIBLE_NET_PASSWORD) will be used instead.
type: str
timeout:
description:
- Specifies the timeout in seconds for communicating with the network device for either connecting or sending commands.
- If the timeout is exceeded before the operation is completed, the module fails.
+ If the timeout is exceeded before the operation is completed, the module will error.
type: int
default: 10
ssh_keyfile:
description:
- Specifies the SSH key to use to authenticate the connection to the remote device. This argument is only used for O(transport=cli).
- If the value is not specified in the task, the value of environment variable E(ANSIBLE_NET_SSH_KEYFILE) is used instead.
+ If the value is not specified in the task, the value of environment variable E(ANSIBLE_NET_SSH_KEYFILE) will be used
+ instead.
type: path
transport:
description:
diff --git a/plugins/doc_fragments/oracle.py b/plugins/doc_fragments/oracle.py
index 08b2948bf3..702b77f02f 100644
--- a/plugins/doc_fragments/oracle.py
+++ b/plugins/doc_fragments/oracle.py
@@ -54,9 +54,9 @@ options:
auth_type:
description:
- The type of authentication to use for making API requests. By default O(auth_type=api_key) based authentication is
- performed and the API key (see O(api_user_key_file)) in your config file is used. If O(auth_type) is not specified,
- the value of the E(OCI_ANSIBLE_AUTH_TYPE), if any, is used. Use O(auth_type=instance_principal) to use instance principal
- based authentication when running ansible playbooks within an OCI compute instance.
+ performed and the API key (see O(api_user_key_file)) in your config file will be used. If this 'auth_type' module
+ option is not specified, the value of the E(OCI_ANSIBLE_AUTH_TYPE), if any, is used. Use O(auth_type=instance_principal)
+ to use instance principal based authentication when running ansible playbooks within an OCI compute instance.
choices: ['api_key', 'instance_principal']
default: 'api_key'
type: str
diff --git a/plugins/doc_fragments/pipx.py b/plugins/doc_fragments/pipx.py
index dde13f6dd3..aff8e90c75 100644
--- a/plugins/doc_fragments/pipx.py
+++ b/plugins/doc_fragments/pipx.py
@@ -13,13 +13,13 @@ class ModuleDocFragment(object):
options:
global:
description:
- - The module passes the C(--global) argument to C(pipx), to execute actions in global scope.
+ - The module will pass the C(--global) argument to C(pipx), to execute actions in global scope.
type: bool
default: false
executable:
description:
- Path to the C(pipx) installed in the system.
- - If not specified, the module uses C(python -m pipx) to run the tool, using the same Python interpreter as ansible
+ - If not specified, the module will use C(python -m pipx) to run the tool, using the same Python interpreter as ansible
itself.
type: path
requirements:
@@ -27,8 +27,8 @@ requirements:
notes:
- This module does not install the C(pipx) python package, however that can be easily done with the module M(ansible.builtin.pip).
- This module does not require C(pipx) to be in the shell C(PATH), but it must be loadable by Python as a module.
- - This module honors C(pipx) environment variables such as but not limited to E(PIPX_HOME) and E(PIPX_BIN_DIR) passed using
- the R(environment Ansible keyword, playbooks_environment).
+ - This module will honor C(pipx) environment variables such as but not limited to E(PIPX_HOME) and E(PIPX_BIN_DIR) passed
+ using the R(environment Ansible keyword, playbooks_environment).
seealso:
- name: C(pipx) command manual page
description: Manual page for the command.
diff --git a/plugins/doc_fragments/redfish.py b/plugins/doc_fragments/redfish.py
index a20e064988..f2e6b37485 100644
--- a/plugins/doc_fragments/redfish.py
+++ b/plugins/doc_fragments/redfish.py
@@ -15,7 +15,7 @@ class ModuleDocFragment(object):
options:
validate_certs:
description:
- - If V(false), TLS/SSL certificates are not validated.
+ - If V(false), TLS/SSL certificates will not be validated.
- Set this to V(true) to enable certificate checking. Should be used together with O(ca_path).
type: bool
default: false
diff --git a/plugins/doc_fragments/redis.py b/plugins/doc_fragments/redis.py
index c7bb88b81d..149c018d79 100644
--- a/plugins/doc_fragments/redis.py
+++ b/plugins/doc_fragments/redis.py
@@ -45,7 +45,7 @@ options:
default: true
ca_certs:
description:
- - Path to root certificates file. If not set and O(tls) is set to V(true), certifi's CA certificates are used.
+ - Path to root certificates file. If not set and O(tls) is set to V(true), certifi ca-certificates will be used.
type: str
client_cert_file:
description:
diff --git a/plugins/doc_fragments/utm.py b/plugins/doc_fragments/utm.py
index 32c18e93b8..3b2118485e 100644
--- a/plugins/doc_fragments/utm.py
+++ b/plugins/doc_fragments/utm.py
@@ -49,8 +49,8 @@ options:
state:
description:
- The desired state of the object.
- - V(present) creates or updates an object.
- - V(absent) deletes an object if present.
+ - V(present) will create or update an object.
+ - V(absent) will delete an object if it was present.
type: str
choices: [absent, present]
default: present
diff --git a/plugins/doc_fragments/xenserver.py b/plugins/doc_fragments/xenserver.py
index f4e0946219..d1377e8964 100644
--- a/plugins/doc_fragments/xenserver.py
+++ b/plugins/doc_fragments/xenserver.py
@@ -15,27 +15,28 @@ options:
hostname:
description:
- The hostname or IP address of the XenServer host or XenServer pool master.
- - If the value is not specified in the task, the value of environment variable E(XENSERVER_HOST) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(XENSERVER_HOST) will be used instead.
type: str
default: localhost
aliases: [host, pool]
username:
description:
- The username to use for connecting to XenServer.
- - If the value is not specified in the task, the value of environment variable E(XENSERVER_USER) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(XENSERVER_USER) will be used instead.
type: str
default: root
aliases: [admin, user]
password:
description:
- The password to use for connecting to XenServer.
- - If the value is not specified in the task, the value of environment variable E(XENSERVER_PASSWORD) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(XENSERVER_PASSWORD) will be used instead.
type: str
aliases: [pass, pwd]
validate_certs:
description:
- Allows connection when SSL certificates are not valid. Set to V(false) when certificates are not trusted.
- - If the value is not specified in the task, the value of environment variable E(XENSERVER_VALIDATE_CERTS) is used instead.
+ - If the value is not specified in the task, the value of environment variable E(XENSERVER_VALIDATE_CERTS) will be used
+ instead.
type: bool
default: true
"""
diff --git a/plugins/filter/jc.py b/plugins/filter/jc.py
index 6a2feb93f0..48d53bcbd3 100644
--- a/plugins/filter/jc.py
+++ b/plugins/filter/jc.py
@@ -143,11 +143,11 @@ def jc_filter(data, parser, quiet=True, raw=False):
# old API (jc v1.17.7 and lower)
else:
- jc_parser = importlib.import_module(f'jc.parsers.{parser}')
+ jc_parser = importlib.import_module('jc.parsers.' + parser)
return jc_parser.parse(data, quiet=quiet, raw=raw)
except Exception as e:
- raise AnsibleFilterError(f'Error in jc filter plugin: {e}')
+ raise AnsibleFilterError('Error in jc filter plugin: %s' % e)
class FilterModule(object):
diff --git a/plugins/filter/json_query.py b/plugins/filter/json_query.py
index 9c0a83a481..8976694a94 100644
--- a/plugins/filter/json_query.py
+++ b/plugins/filter/json_query.py
@@ -124,17 +124,10 @@ def json_query(data, expr):
'json_query filter')
# Hack to handle Ansible Unsafe text, AnsibleMapping and AnsibleSequence
- # 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',
- )
+ # 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', )
try:
return jmespath.search(expr, data)
except jmespath.exceptions.JMESPathError as e:
diff --git a/plugins/filter/replace_keys.py b/plugins/filter/replace_keys.py
index 69fe02832b..d47468bd3c 100644
--- a/plugins/filter/replace_keys.py
+++ b/plugins/filter/replace_keys.py
@@ -34,7 +34,7 @@ options:
description:
- A key or key pattern to change.
- The interpretation of O(target[].before) depends on O(matching_parameter).
- - For a key that matches multiple O(target[].before)s, the B(first) matching O(target[].after) is used.
+ - For a key that matches multiple O(target[].before)s, the B(first) matching O(target[].after) will be used.
type: str
after:
description: A matching key change to.
diff --git a/plugins/filter/to_prettytable.py b/plugins/filter/to_prettytable.py
index 269ac318ff..249c830230 100644
--- a/plugins/filter/to_prettytable.py
+++ b/plugins/filter/to_prettytable.py
@@ -30,14 +30,17 @@ options:
elements: string
column_alignments:
description:
- - Dictionary where keys are column names and values are alignment settings. Valid alignment values are C(left), C(center),
- C(right), C(l), C(c), or C(r).
- - "For example, V({'name': 'left', 'id': 'right'}) aligns the C(name) column to the left and the C(id) column to the
- right."
+ - >-
+ Dictionary where keys are column names and values are alignment settings.
+ Valid alignment values are C(left), C(center), C(right), C(l), C(c), or C(r).
+ - >-
+ For example, V({'name': 'left', 'id': 'right'}) will align the C(name) column to the left
+ and the C(id) column to the right.
type: dictionary
"""
EXAMPLES = r"""
+---
- name: Set a list of users
ansible.builtin.set_fact:
users:
diff --git a/plugins/inventory/cobbler.py b/plugins/inventory/cobbler.py
index 677e1a3ad5..3526093b8c 100644
--- a/plugins/inventory/cobbler.py
+++ b/plugins/inventory/cobbler.py
@@ -12,17 +12,14 @@ short_description: Cobbler inventory source
version_added: 1.0.0
description:
- Get inventory hosts from the cobbler service.
- - 'Uses a configuration file as an inventory source, it must end in C(.cobbler.yml) or C(.cobbler.yaml) and have a C(plugin:
- cobbler) entry.'
- - Adds the primary IP addresses to C(cobbler_ipv4_address) and C(cobbler_ipv6_address) host variables if defined in Cobbler.
- The primary IP address is defined as the management interface if defined, or the interface who's DNS name matches the
- hostname of the system, or else the first interface found.
+ - "Uses a configuration file as an inventory source, it must end in C(.cobbler.yml) or C(.cobbler.yaml) and have a C(plugin: cobbler) entry."
+ - Adds the primary IP addresses to C(cobbler_ipv4_address) and C(cobbler_ipv6_address) host variables if defined in Cobbler. The primary IP address is
+ defined as the management interface if defined, or the interface who's DNS name matches the hostname of the system, or else the first interface found.
extends_documentation_fragment:
- inventory_cache
options:
plugin:
- description: The name of this plugin, it should always be set to V(community.general.cobbler) for this plugin to recognize
- it as its own.
+ description: The name of this plugin, it should always be set to V(community.general.cobbler) for this plugin to recognize it as its own.
type: string
required: true
choices: ['cobbler', 'community.general.cobbler']
@@ -75,7 +72,7 @@ options:
include_profiles:
description:
- Profiles to include from inventory.
- - If specified, all other profiles are excluded.
+ - If specified, all other profiles will be excluded.
- O(exclude_profiles) is ignored if O(include_profiles) is specified.
type: list
default: []
@@ -84,8 +81,7 @@ options:
inventory_hostname:
description:
- What to use for the ansible inventory hostname.
- - By default the networking hostname is used if defined, otherwise the DNS name of the management or first non-static
- interface.
+ - By default the networking hostname is used if defined, otherwise the DNS name of the management or first non-static interface.
- If set to V(system), the cobbler system name is used.
type: str
choices: ['hostname', 'system']
@@ -103,20 +99,20 @@ options:
description: Prefix to apply to cobbler groups.
default: cobbler_
want_facts:
- description: Toggle, if V(true) the plugin retrieves all host facts from the server.
+ description: Toggle, if V(true) the plugin will retrieve all host facts from the server.
type: boolean
default: true
want_ip_addresses:
description:
- - Toggle, if V(true) the plugin adds a C(cobbler_ipv4_addresses) and C(cobbler_ipv6_addresses) dictionary to the
- defined O(group) mapping interface DNS names to IP addresses.
+ - Toggle, if V(true) the plugin will add a C(cobbler_ipv4_addresses) and C(cobbler_ipv6_addresses) dictionary to the defined O(group) mapping
+ interface DNS names to IP addresses.
type: boolean
default: true
version_added: 7.1.0
facts_level:
description:
- - Set to V(normal) to gather only system-level variables.
- - Set to V(as_rendered) to gather all variables as rolled up by Cobbler.
+ - "Set to V(normal) to gather only system-level variables."
+ - "Set to V(as_rendered) to gather all variables as rolled up by Cobbler."
type: string
choices: ['normal', 'as_rendered']
default: normal
diff --git a/plugins/inventory/gitlab_runners.py b/plugins/inventory/gitlab_runners.py
index 7a10b553a2..192be319a7 100644
--- a/plugins/inventory/gitlab_runners.py
+++ b/plugins/inventory/gitlab_runners.py
@@ -11,7 +11,7 @@ DOCUMENTATION = r"""
name: gitlab_runners
author:
- Stefan Heitmüller (@morph027)
-short_description: Ansible dynamic inventory plugin for GitLab runners
+short_description: Ansible dynamic inventory plugin for GitLab runners.
requirements:
- python-gitlab > 1.8.0
extends_documentation_fragment:
@@ -21,7 +21,7 @@ description:
- Uses a YAML configuration file gitlab_runners.[yml|yaml].
options:
plugin:
- description: The name of this plugin, it should always be set to V(gitlab_runners) for this plugin to recognize it as its own.
+ description: The name of this plugin, it should always be set to 'gitlab_runners' for this plugin to recognize it as its own.
type: str
required: true
choices:
@@ -44,14 +44,14 @@ options:
- private_token
- access_token
filter:
- description: Filter runners from GitLab API.
+ description: filter runners from GitLab API
env:
- name: GITLAB_FILTER
version_added: 1.0.0
type: str
choices: ['active', 'paused', 'online', 'specific', 'shared']
verbose_output:
- description: Toggle to (not) include all available nodes metadata.
+ description: Toggle to (not) include all available nodes metadata
type: bool
default: true
"""
diff --git a/plugins/inventory/icinga2.py b/plugins/inventory/icinga2.py
index 64d77b437d..feb2d10d8a 100644
--- a/plugins/inventory/icinga2.py
+++ b/plugins/inventory/icinga2.py
@@ -14,7 +14,8 @@ author:
- Cliff Hults (@BongoEADGC6)
description:
- Get inventory hosts from the Icinga2 API.
- - Uses a configuration file as an inventory source, it must end in C(.icinga2.yml) or C(.icinga2.yaml).
+ - "Uses a configuration file as an inventory source, it must end in
+ C(.icinga2.yml) or C(.icinga2.yaml)."
extends_documentation_fragment:
- constructed
options:
@@ -45,7 +46,7 @@ options:
required: true
host_filter:
description:
- - An Icinga2 API valid host filter. Leave blank for no filtering.
+ - An Icinga2 API valid host filter. Leave blank for no filtering
type: string
required: false
validate_certs:
@@ -290,11 +291,11 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
self.group_by_hostgroups = self.get_option('group_by_hostgroups')
if self.templar.is_template(self.icinga2_url):
- self.icinga2_url = self.templar.template(variable=self.icinga2_url)
+ self.icinga2_url = self.templar.template(variable=self.icinga2_url, disable_lookups=False)
if self.templar.is_template(self.icinga2_user):
- self.icinga2_user = self.templar.template(variable=self.icinga2_user)
+ self.icinga2_user = self.templar.template(variable=self.icinga2_user, disable_lookups=False)
if self.templar.is_template(self.icinga2_password):
- self.icinga2_password = self.templar.template(variable=self.icinga2_password)
+ self.icinga2_password = self.templar.template(variable=self.icinga2_password, disable_lookups=False)
self.icinga2_url = f"{self.icinga2_url.rstrip('/')}/v1"
diff --git a/plugins/inventory/iocage.py b/plugins/inventory/iocage.py
index 603003d617..8e296b571a 100644
--- a/plugins/inventory/iocage.py
+++ b/plugins/inventory/iocage.py
@@ -8,25 +8,29 @@ from __future__ import annotations
DOCUMENTATION = r"""
name: iocage
-short_description: C(iocage) inventory source
+short_description: iocage inventory source
version_added: 10.2.0
author:
- Vladimir Botka (@vbotka)
requirements:
- iocage >= 1.8
description:
- - Get inventory hosts from the C(iocage) jail manager running on O(host).
- - By default, O(host) is V(localhost). If O(host) is not V(localhost) it is expected that the user running Ansible on the
- controller can connect to the O(host) account O(user) with SSH non-interactively and execute the command C(iocage list).
- - Uses a configuration file as an inventory source, it must end in C(.iocage.yml) or C(.iocage.yaml).
+ - Get inventory hosts from the iocage jail manager running on O(host).
+ - By default, O(host) is V(localhost). If O(host) is not V(localhost) it
+ is expected that the user running Ansible on the controller can
+ connect to the O(host) account O(user) with SSH non-interactively and
+ execute the command C(iocage list).
+ - Uses a configuration file as an inventory source, it must end
+ in C(.iocage.yml) or C(.iocage.yaml).
extends_documentation_fragment:
- ansible.builtin.constructed
- ansible.builtin.inventory_cache
options:
plugin:
description:
- - The name of this plugin, it should always be set to V(community.general.iocage) for this plugin to recognize it as
- its own.
+ - The name of this plugin, it should always be set to
+ V(community.general.iocage) for this plugin to recognize
+ it as its own.
required: true
choices: ['community.general.iocage']
type: str
@@ -36,8 +40,10 @@ options:
default: localhost
user:
description:
- - C(iocage) user. It is expected that the O(user) is able to connect to the O(host) with SSH and execute the command
- C(iocage list). This option is not required if O(host=localhost).
+ - C(iocage) user.
+ It is expected that the O(user) is able to connect to the
+ O(host) with SSH and execute the command C(iocage list).
+ This option is not required if O(host) is V(localhost).
type: str
sudo:
description:
@@ -55,7 +61,8 @@ options:
version_added: 10.3.0
get_properties:
description:
- - Get jails' properties. Creates dictionary C(iocage_properties) for each added host.
+ - Get jails' properties.
+ Creates dictionary C(iocage_properties) for each added host.
type: bool
default: false
env:
@@ -77,7 +84,7 @@ options:
description:
- The name of the tag in the C(iocage properties notes) that contains the jails alias.
- By default, the C(iocage list -l) column C(NAME) is used to name the jail.
- - This option requires the notes format C("t1=v1 t2=v2 ...").
+ - This option requires the notes format C("t1=v1 t2=v2 ...")
- The option O(get_properties) must be enabled.
type: str
version_added: 11.0.0
@@ -88,16 +95,21 @@ options:
default: false
version_added: 11.0.0
notes:
- - You might want to test the command C(ssh user@host iocage list -l) on the controller before using this inventory plugin
- with O(user) specified and with O(host) other than V(localhost).
- - If you run this inventory plugin on V(localhost) C(ssh) is not used. In this case, test the command C(iocage list -l).
+ - You might want to test the command C(ssh user@host iocage list -l) on
+ the controller before using this inventory plugin with O(user) specified
+ and with O(host) other than V(localhost).
+ - If you run this inventory plugin on V(localhost) C(ssh) is not used.
+ In this case, test the command C(iocage list -l).
- This inventory plugin creates variables C(iocage_*) for each added host.
- - The values of these variables are collected from the output of the command C(iocage list -l).
+ - The values of these variables are collected from the output of the
+ command C(iocage list -l).
- The names of these variables correspond to the output columns.
- The column C(NAME) is used to name the added host.
- - The option O(hooks_results) expects the C(poolname) of a jail is mounted to C(/poolname). For example, if you activate
- the pool C(iocage) this plugin expects to find the O(hooks_results) items in the path C(/iocage/iocage/jails//root).
- If you mount the C(poolname) to a different path the easiest remedy is to create a symlink.
+ - The option O(hooks_results) expects the C(poolname) of a jail is mounted to
+ C(/poolname). For example, if you activate the pool C(iocage) this plugin
+ expects to find the O(hooks_results) items in the path
+ C(/iocage/iocage/jails//root). If you mount the C(poolname) to a
+ different path the easiest remedy is to create a symlink.
"""
EXAMPLES = r"""
@@ -338,7 +350,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
for hostname, host_vars in results['_meta']['hostvars'].items():
iocage_hooks = []
for hook in hooks_results:
- path = f"/{iocage_pool}/iocage/jails/{hostname}/root{hook}"
+ path = "/" + iocage_pool + "/iocage/jails/" + hostname + "/root" + hook
cmd_cat_hook = cmd.copy()
cmd_cat_hook.append('cat')
cmd_cat_hook.append(path)
diff --git a/plugins/inventory/linode.py b/plugins/inventory/linode.py
index bf6faba07a..3e7ddc5a82 100644
--- a/plugins/inventory/linode.py
+++ b/plugins/inventory/linode.py
@@ -9,14 +9,15 @@ DOCUMENTATION = r"""
name: linode
author:
- Luke Murphy (@decentral1se)
-short_description: Ansible dynamic inventory plugin for Linode
+short_description: Ansible dynamic inventory plugin for Linode.
requirements:
- linode_api4 >= 2.0.0
description:
- Reads inventories from the Linode API v4.
- Uses a YAML configuration file that ends with linode.(yml|yaml).
- Linode labels are used by default as the hostnames.
- - The default inventory groups are built from groups (deprecated by Linode) and not tags.
+ - The default inventory groups are built from groups (deprecated by
+ Linode) and not tags.
extends_documentation_fragment:
- constructed
- inventory_cache
@@ -149,7 +150,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
access_token = self.get_option('access_token')
if self.templar.is_template(access_token):
- access_token = self.templar.template(variable=access_token)
+ access_token = self.templar.template(variable=access_token, disable_lookups=False)
if access_token is None:
raise AnsibleError((
diff --git a/plugins/inventory/lxd.py b/plugins/inventory/lxd.py
index efdca6563e..b1492d663c 100644
--- a/plugins/inventory/lxd.py
+++ b/plugins/inventory/lxd.py
@@ -48,19 +48,20 @@ options:
version_added: 8.0.0
server_check_hostname:
description:
- - This option controls if the server's hostname is checked as part of the HTTPS connection verification. This can be
- useful to disable, if for example, the server certificate provided (see O(server_cert) option) does not cover a name
- matching the one used to communicate with the server. Such mismatch is common as LXD generates self-signed server
- certificates by default.
+ - This option controls if the server's hostname is checked as part of the HTTPS connection verification.
+ This can be useful to disable, if for example, the server certificate provided (see O(server_cert) option)
+ does not cover a name matching the one used to communicate with the server. Such mismatch is common as LXD
+ generates self-signed server certificates by default.
type: bool
default: true
version_added: 8.0.0
trust_password:
description:
- The client trusted password.
- - You need to set this password on the lxd server before running this module using the following command C(lxc config
- set core.trust_password ) See
- U(https://documentation.ubuntu.com/lxd/en/latest/authentication/#adding-client-certificates-using-a-trust-password).
+ - You need to set this password on the lxd server before
+ running this module using the following command
+ C(lxc config set core.trust_password )
+ See U(https://documentation.ubuntu.com/lxd/en/latest/authentication/#adding-client-certificates-using-a-trust-password).
- If O(trust_password) is set, this module send a request for authentication before sending any requests.
type: str
state:
@@ -84,7 +85,7 @@ options:
prefered_instance_network_interface:
description:
- If an instance has multiple network interfaces, select which one is the preferred as pattern.
- - Combined with the first number that can be found, for example C(eth) + C(0).
+ - Combined with the first number that can be found e.g. 'eth' + 0.
- The option has been renamed from O(prefered_container_network_interface) to O(prefered_instance_network_interface)
in community.general 3.8.0. The old name still works as an alias.
type: str
@@ -100,8 +101,7 @@ options:
choices: ['inet', 'inet6']
groupby:
description:
- - Create groups by the following keywords C(location), C(network_range), C(os), C(pattern), C(profile), C(release),
- C(type), C(vlanid).
+ - Create groups by the following keywords C(location), C(network_range), C(os), C(pattern), C(profile), C(release), C(type), C(vlanid).
- See example for syntax.
type: dict
"""
diff --git a/plugins/inventory/nmap.py b/plugins/inventory/nmap.py
index 3339d66b46..f8a792964c 100644
--- a/plugins/inventory/nmap.py
+++ b/plugins/inventory/nmap.py
@@ -18,7 +18,7 @@ requirements:
- nmap CLI installed
options:
plugin:
- description: Token that ensures this is a source file for the P(community.general.nmap#inventory) plugin.
+ description: token that ensures this is a source file for the 'nmap' plugin.
type: string
required: true
choices: ['nmap', 'community.general.nmap']
@@ -46,8 +46,8 @@ options:
port:
description:
- Only scan specific port or port range (C(-p)).
- - For example, you could pass V(22) for a single port, V(1-65535) for a range of ports, or V(U:53,137,T:21-25,139,8080,S:9)
- to check port 53 with UDP, ports 21-25 with TCP, port 9 with SCTP, and ports 137, 139, and 8080 with all.
+ - For example, you could pass V(22) for a single port, V(1-65535) for a range of ports,
+ or V(U:53,137,T:21-25,139,8080,S:9) to check port 53 with UDP, ports 21-25 with TCP, port 9 with SCTP, and ports 137, 139, and 8080 with all.
type: string
version_added: 6.5.0
ports:
@@ -55,23 +55,23 @@ options:
type: boolean
default: true
ipv4:
- description: Use IPv4 type addresses.
+ description: use IPv4 type addresses
type: boolean
default: true
ipv6:
- description: Use IPv6 type addresses.
+ description: use IPv6 type addresses
type: boolean
default: true
udp_scan:
description:
- - Scan using UDP.
+ - Scan via UDP.
- Depending on your system you might need O(sudo=true) for this to work.
type: boolean
default: false
version_added: 6.1.0
icmp_timestamp:
description:
- - Scan using ICMP Timestamp (C(-PP)).
+ - Scan via ICMP Timestamp (C(-PP)).
- Depending on your system you might need O(sudo=true) for this to work.
type: boolean
default: false
@@ -98,7 +98,7 @@ options:
version_added: 7.4.0
notes:
- At least one of O(ipv4) or O(ipv6) is required to be V(true); both can be V(true), but they cannot both be V(false).
- - 'TODO: add OS fingerprinting.'
+ - 'TODO: add OS fingerprinting'
"""
EXAMPLES = r"""
---
diff --git a/plugins/inventory/online.py b/plugins/inventory/online.py
index 8b4821a009..e88deb4012 100644
--- a/plugins/inventory/online.py
+++ b/plugins/inventory/online.py
@@ -14,7 +14,7 @@ description:
- Get inventory hosts from Scaleway (previously Online SAS or Online.net).
options:
plugin:
- description: Token that ensures this is a source file for the P(community.general.online#inventory) plugin.
+ description: token that ensures this is a source file for the 'online' plugin.
type: string
required: true
choices: ['online', 'community.general.online']
diff --git a/plugins/inventory/opennebula.py b/plugins/inventory/opennebula.py
index 8ced301dd1..7bf6ccf224 100644
--- a/plugins/inventory/opennebula.py
+++ b/plugins/inventory/opennebula.py
@@ -16,7 +16,8 @@ extends_documentation_fragment:
- constructed
description:
- Get inventory hosts from OpenNebula cloud.
- - Uses an YAML configuration file ending with either C(opennebula.yml) or C(opennebula.yaml) to set parameter values.
+ - Uses an YAML configuration file ending with either C(opennebula.yml) or C(opennebula.yaml)
+ to set parameter values.
- Uses O(api_authfile), C(~/.one/one_auth), or E(ONE_AUTH) pointing to a OpenNebula credentials file.
options:
plugin:
@@ -27,7 +28,8 @@ options:
api_url:
description:
- URL of the OpenNebula RPC server.
- - It is recommended to use HTTPS so that the username/password are not transferred over the network unencrypted.
+ - It is recommended to use HTTPS so that the username/password are not
+ transferred over the network unencrypted.
- If not set then the value of the E(ONE_URL) environment variable is used.
env:
- name: ONE_URL
@@ -35,8 +37,8 @@ options:
type: string
api_username:
description:
- - Name of the user to login into the OpenNebula RPC server. If not set then the value of the E(ONE_USERNAME) environment
- variable is used.
+ - Name of the user to login into the OpenNebula RPC server. If not set
+ then the value of the E(ONE_USERNAME) environment variable is used.
env:
- name: ONE_USERNAME
type: string
@@ -50,8 +52,8 @@ options:
type: string
api_authfile:
description:
- - 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).
+ - If both O(api_username) or O(api_password) are not set, then it will try
+ authenticate with ONE auth file. Default path is C(~/.one/one_auth).
- Set environment variable E(ONE_AUTH) to override this path.
env:
- name: ONE_AUTH
@@ -69,7 +71,7 @@ options:
description: Only return servers filtered by this label.
type: string
group_by_labels:
- description: Create host groups by VM labels.
+ description: Create host groups by vm labels
type: bool
default: true
"""
diff --git a/plugins/inventory/scaleway.py b/plugins/inventory/scaleway.py
index d9ccd08b77..488bbbe084 100644
--- a/plugins/inventory/scaleway.py
+++ b/plugins/inventory/scaleway.py
@@ -27,14 +27,9 @@ options:
elements: string
default:
- ams1
- - ams2
- - ams3
- par1
- par2
- - par3
- waw1
- - waw2
- - waw3
tags:
description: Filter results on a specific tag.
type: list
@@ -42,14 +37,13 @@ options:
scw_profile:
description:
- The config profile to use in config file.
- - By default uses the one specified as C(active_profile) in the config file, or falls back to V(default) if that is
- not defined.
+ - By default uses the one specified as C(active_profile) in the config file, or falls back to V(default) if that is not defined.
type: string
version_added: 4.4.0
oauth_token:
description:
- Scaleway OAuth token.
- - If not explicitly defined or in environment variables, it tries to lookup in the C(scaleway-cli) configuration file
+ - If not explicitly defined or in environment variables, it will try to lookup in the scaleway-cli configuration file
(C($SCW_CONFIG_PATH), C($XDG_CONFIG_HOME/scw/config.yaml), or C(~/.config/scw/config.yaml)).
- More details on L(how to generate token, https://www.scaleway.com/en/docs/generate-api-keys/).
type: string
@@ -71,8 +65,10 @@ options:
- hostname
- id
variables:
- description: 'Set individual variables: keys are variable names and values are templates. Any value returned by the L(Scaleway
- API, https://developer.scaleway.com/#servers-server-get) can be used.'
+ description: 'Set individual variables: keys are variable names and
+ values are templates. Any value returned by the
+ L(Scaleway API, https://developer.scaleway.com/#servers-server-get)
+ can be used.'
type: dict
"""
diff --git a/plugins/inventory/virtualbox.py b/plugins/inventory/virtualbox.py
index 2eb52a617c..d94cd64110 100644
--- a/plugins/inventory/virtualbox.py
+++ b/plugins/inventory/virtualbox.py
@@ -8,48 +8,47 @@ from __future__ import annotations
DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: virtualbox
-short_description: Virtualbox inventory source
+short_description: virtualbox inventory source
description:
- Get inventory hosts from the local virtualbox installation.
- Uses a YAML configuration file that ends with virtualbox.(yml|yaml) or vbox.(yml|yaml).
- The inventory_hostname is always the 'Name' of the virtualbox instance.
- Groups can be assigned to the VMs using C(VBoxManage). Multiple groups can be assigned by using V(/) as a delimeter.
- - A separate parameter, O(enable_advanced_group_parsing) is exposed to change grouping behaviour. See the parameter documentation
- for details.
+ - A separate parameter, O(enable_advanced_group_parsing) is exposed to change grouping behaviour. See the parameter documentation for details.
extends_documentation_fragment:
- constructed
- inventory_cache
options:
plugin:
- description: Token that ensures this is a source file for the P(community.general.virtualbox#inventory) plugin.
+ description: token that ensures this is a source file for the 'virtualbox' plugin
type: string
required: true
choices: ['virtualbox', 'community.general.virtualbox']
running_only:
- description: Toggles showing all VMs instead of only those currently running.
+ description: toggles showing all vms vs only those currently running
type: boolean
default: false
settings_password_file:
- description: Provide a file containing the settings password (equivalent to C(--settingspwfile)).
+ description: provide a file containing the settings password (equivalent to --settingspwfile)
type: string
network_info_path:
- description: Property path to query for network information (C(ansible_host)).
+ description: property path to query for network information (ansible_host)
type: string
default: "/VirtualBox/GuestInfo/Net/0/V4/IP"
query:
- description: Create vars from virtualbox properties.
+ description: create vars from virtualbox properties
type: dictionary
default: {}
enable_advanced_group_parsing:
description:
- - The default group parsing rule (when this setting is set to V(false)) is to split the VirtualBox VM's group based
- on the V(/) character and assign the resulting list elements as an Ansible Group.
- - Setting O(enable_advanced_group_parsing=true) changes this behaviour to match VirtualBox's interpretation of groups
- according to U(https://www.virtualbox.org/manual/UserManual.html#gui-vmgroups). Groups are now split using the V(,)
- character, and the V(/) character indicates nested groups.
- - When enabled, a VM that's been configured using V(VBoxManage modifyvm "vm01" --groups "/TestGroup/TestGroup2,/TestGroup3")
- results in the group C(TestGroup2) being a child group of C(TestGroup); and the VM being a part of C(TestGroup2)
- and C(TestGroup3).
+ - The default group parsing rule (when this setting is set to V(false)) is to split the VirtualBox VM's group based on the V(/) character and
+ assign the resulting list elements as an Ansible Group.
+ - Setting O(enable_advanced_group_parsing=true) changes this behaviour to match VirtualBox's interpretation of groups according to
+ U(https://www.virtualbox.org/manual/UserManual.html#gui-vmgroups).
+ Groups are now split using the V(,) character, and the V(/) character indicates nested groups.
+ - When enabled, a VM that's been configured using V(VBoxManage modifyvm "vm01" --groups "/TestGroup/TestGroup2,/TestGroup3") will result in
+ the group C(TestGroup2) being a child group of C(TestGroup); and
+ the VM being a part of C(TestGroup2) and C(TestGroup3).
default: false
type: bool
version_added: 9.2.0
diff --git a/plugins/inventory/xen_orchestra.py b/plugins/inventory/xen_orchestra.py
index e6d828845a..ce45b161c9 100644
--- a/plugins/inventory/xen_orchestra.py
+++ b/plugins/inventory/xen_orchestra.py
@@ -31,7 +31,7 @@ options:
description:
- API host to XOA API.
- If the value is not specified in the inventory configuration, the value of environment variable E(ANSIBLE_XO_HOST)
- is used instead.
+ will be used instead.
type: str
env:
- name: ANSIBLE_XO_HOST
@@ -39,7 +39,7 @@ options:
description:
- Xen Orchestra user.
- If the value is not specified in the inventory configuration, the value of environment variable E(ANSIBLE_XO_USER)
- is used instead.
+ will be used instead.
required: true
type: str
env:
@@ -48,7 +48,7 @@ options:
description:
- Xen Orchestra password.
- If the value is not specified in the inventory configuration, the value of environment variable E(ANSIBLE_XO_PASSWORD)
- is used instead.
+ will be used instead.
required: true
type: str
env:
@@ -224,7 +224,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
vm_name_list.append(vm['name_label'])
else:
vm_duplicate_count = vm_name_list.count(vm['name_label'])
- entry_name = f"{vm['name_label']}_{vm_duplicate_count}"
+ entry_name = vm['name_label'] + "_" + str(vm_duplicate_count)
vm_name_list.append(vm['name_label'])
else:
entry_name = uuid
@@ -284,7 +284,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
host_name_list.append(host['name_label'])
else:
host_duplicate_count = host_name_list.count(host['name_label'])
- entry_name = f"{host['name_label']}_{host_duplicate_count}"
+ entry_name = host['name_label'] + "_" + str(host_duplicate_count)
host_name_list.append(host['name_label'])
else:
entry_name = host['uuid']
diff --git a/plugins/lookup/bitwarden.py b/plugins/lookup/bitwarden.py
index 7d65792b7f..13bf43b0d4 100644
--- a/plugins/lookup/bitwarden.py
+++ b/plugins/lookup/bitwarden.py
@@ -57,7 +57,7 @@ options:
version_added: 8.4.0
result_count:
description:
- - Number of results expected for the lookup query. Task fails if O(result_count) is set but does not match the number
+ - Number of results expected for the lookup query. Task will fail if O(result_count) is set but does not match the number
of query results. Leave empty to skip this check.
type: int
version_added: 10.4.0
diff --git a/plugins/lookup/cartesian.py b/plugins/lookup/cartesian.py
index f2ad576907..b41f7d8b5d 100644
--- a/plugins/lookup/cartesian.py
+++ b/plugins/lookup/cartesian.py
@@ -9,7 +9,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: cartesian
-short_description: Returns the cartesian product of lists
+short_description: returns the cartesian product of lists
description:
- Takes the input lists and returns a list that represents the product of the input lists.
- It is clearer with an example, it turns [1, 2, 3], [a, b] into [1, a], [1, b], [2, a], [2, b], [3, a], [3, b].
diff --git a/plugins/lookup/chef_databag.py b/plugins/lookup/chef_databag.py
index 8fe53744ee..f3302c6e31 100644
--- a/plugins/lookup/chef_databag.py
+++ b/plugins/lookup/chef_databag.py
@@ -9,7 +9,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: chef_databag
-short_description: Fetches data from a Chef Databag
+short_description: fetches data from a Chef Databag
description:
- 'This is a lookup plugin to provide access to chef data bags using the pychef package. It interfaces with the chef server
API using the same methods to find a knife or chef-client config file to load parameters from, starting from either the
diff --git a/plugins/lookup/collection_version.py b/plugins/lookup/collection_version.py
index 142c516df5..2ed8a0c466 100644
--- a/plugins/lookup/collection_version.py
+++ b/plugins/lookup/collection_version.py
@@ -49,8 +49,8 @@ RETURN = r"""
_raw:
description:
- The version number of the collections listed as input.
- - If a collection can not be found, it returns the value provided in O(result_not_found). By default, this is V(none).
- - If a collection can be found, but the version not identified, it returns the value provided in O(result_no_version).
+ - If a collection can not be found, it will return the value provided in O(result_not_found). By default, this is V(none).
+ - If a collection can be found, but the version not identified, it will return the value provided in O(result_no_version).
By default, this is V(*). This can happen for collections installed from git which do not have a version number in V(galaxy.yml).
type: list
elements: str
diff --git a/plugins/lookup/consul_kv.py b/plugins/lookup/consul_kv.py
index f57b3da891..349b7f3db2 100644
--- a/plugins/lookup/consul_kv.py
+++ b/plugins/lookup/consul_kv.py
@@ -24,7 +24,7 @@ options:
elements: string
recurse:
type: boolean
- description: If V(true), retrieves all the values that have the given key as prefix.
+ description: If true, will retrieve all the values that have the given key as prefix.
default: false
index:
description:
@@ -42,14 +42,14 @@ options:
type: str
description:
- The target to connect to, must be a resolvable address.
- - It is determined from E(ANSIBLE_CONSUL_URL) if that is set.
+ - Will be determined from E(ANSIBLE_CONSUL_URL) if that is set.
ini:
- section: lookup_consul
key: host
port:
description:
- The port of the target host to connect to.
- - If you use E(ANSIBLE_CONSUL_URL) this value is used from there.
+ - If you use E(ANSIBLE_CONSUL_URL) this value will be used from there.
type: int
default: 8500
scheme:
@@ -57,7 +57,7 @@ options:
type: str
description:
- Whether to use http or https.
- - If you use E(ANSIBLE_CONSUL_URL) this value is used from there.
+ - If you use E(ANSIBLE_CONSUL_URL) this value will be used from there.
validate_certs:
default: true
description: Whether to verify the TLS connection or not.
diff --git a/plugins/lookup/credstash.py b/plugins/lookup/credstash.py
index a170b13d03..4273aa184a 100644
--- a/plugins/lookup/credstash.py
+++ b/plugins/lookup/credstash.py
@@ -9,7 +9,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: credstash
-short_description: Retrieve secrets from Credstash on AWS
+short_description: retrieve secrets from Credstash on AWS
requirements:
- credstash (python library)
description:
diff --git a/plugins/lookup/cyberarkpassword.py b/plugins/lookup/cyberarkpassword.py
index 63834dce9b..a3a1468049 100644
--- a/plugins/lookup/cyberarkpassword.py
+++ b/plugins/lookup/cyberarkpassword.py
@@ -9,7 +9,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
author: Unknown (!UNKNOWN)
name: cyberarkpassword
-short_description: Get secrets from CyberArk AIM
+short_description: get secrets from CyberArk AIM
requirements:
- CyberArk AIM tool installed
description:
@@ -39,8 +39,8 @@ options:
description: For extra_params values please check parameters for clipasswordsdk in CyberArk's "Credential Provider and
ASCP Implementation Guide".
notes:
- - For Ansible on Windows, please change the -parameters (C(-p), C(-d), and C(-o)) to /parameters (C(/p), C(/d), and C(/o))
- and change the location of C(CLIPasswordSDK.exe).
+ - For Ansible on Windows, please change the -parameters (C(-p), C(-d), and C(-o)) to /parameters (C(/p), C(/d), and C(/o)) and change the
+ location of C(CLIPasswordSDK.exe).
"""
EXAMPLES = r"""
diff --git a/plugins/lookup/dependent.py b/plugins/lookup/dependent.py
index 18d2a000d9..b243ee8e1f 100644
--- a/plugins/lookup/dependent.py
+++ b/plugins/lookup/dependent.py
@@ -197,10 +197,7 @@ class LookupModule(LookupBase):
result = []
if len(terms) > 0:
- if HAS_DATATAGGING:
- templar = self._templar.copy_with_new_env(available_variables={})
- else:
- templar = Templar(loader=self._templar._loader)
+ templar = Templar(loader=self._templar._loader)
data = []
vars_so_far = set()
for index, term in enumerate(terms):
diff --git a/plugins/lookup/dig.py b/plugins/lookup/dig.py
index 07fc287d71..d958cf186f 100644
--- a/plugins/lookup/dig.py
+++ b/plugins/lookup/dig.py
@@ -9,7 +9,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
name: dig
author: Jan-Piet Mens (@jpmens)
-short_description: Query DNS using the dnspython library
+short_description: query DNS using the dnspython library
requirements:
- dnspython (python library, http://www.dnspython.org/)
description:
@@ -21,10 +21,10 @@ description:
- In addition to (default) A record, it is also possible to specify a different record type that should be queried. This
can be done by either passing-in additional parameter of format qtype=TYPE to the dig lookup, or by appending /TYPE to
the FQDN being queried.
- - If multiple values are associated with the requested record, the results are returned as a comma-separated list. In
+ - If multiple values are associated with the requested record, the results will be returned as a comma-separated list. In
such cases you may want to pass option C(wantlist=true) to the lookup call, or alternatively use C(query) instead of C(lookup),
- which results in the record values being returned as a list over which you can iterate later on.
- - By default, the lookup relies on system-wide configured DNS servers for performing the query. It is also possible to
+ which will result in the record values being returned as a list over which you can iterate later on.
+ - By default, the lookup will rely on system-wide configured DNS servers for performing the query. It is also possible to
explicitly specify DNS servers to query using the @DNS_SERVER_1,DNS_SERVER_2,...,DNS_SERVER_N notation. This needs to
be passed-in as an additional parameter to the lookup.
options:
@@ -75,16 +75,16 @@ options:
fail_on_error:
description:
- Abort execution on lookup errors.
- - The default for this option is likely to change to V(true) in the future. The current default, V(false), is used for
- backwards compatibility, and results in empty strings or the string V(NXDOMAIN) in the result in case of errors.
+ - The default for this option will likely change to V(true) in the future. The current default, V(false), is used for
+ backwards compatibility, and will result in empty strings or the string V(NXDOMAIN) in the result in case of errors.
default: false
type: bool
version_added: 5.4.0
real_empty:
description:
- Return empty result without empty strings, and return empty list instead of V(NXDOMAIN).
- - The default for this option is likely to change to V(true) in the future.
- - This option is forced to V(true) if multiple domains to be queried are specified.
+ - The default for this option will likely change to V(true) in the future.
+ - This option will be forced to V(true) if multiple domains to be queried are specified.
default: false
type: bool
version_added: 6.0.0
@@ -104,9 +104,10 @@ options:
type: int
version_added: 9.5.0
notes:
- - V(ALL) is not a record in itself, merely the listed fields are available for any record results you retrieve in the form
- of a dictionary.
- - While the plugin supports anything which C(dnspython) supports out of the box, only a subset can be converted into a dictionary.
+ - V(ALL) is not a record in itself, merely the listed fields are available for any record results you retrieve in the form of
+ a dictionary.
+ - While the plugin supports anything which C(dnspython) supports out of the box, only a subset can be converted
+ into a dictionary.
- If you need to obtain the AAAA record (IPv6 address), you must specify the record type explicitly. Syntax for specifying
the record type is shown in the examples below.
- The trailing dot in most of the examples listed is purely optional, but is specified for completeness/correctness sake.
diff --git a/plugins/lookup/dnstxt.py b/plugins/lookup/dnstxt.py
index fb0a5d5138..eb24a63e99 100644
--- a/plugins/lookup/dnstxt.py
+++ b/plugins/lookup/dnstxt.py
@@ -9,7 +9,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
name: dnstxt
author: Jan-Piet Mens (@jpmens)
-short_description: Query a domain(s)'s DNS txt fields
+short_description: query a domain(s)'s DNS txt fields
requirements:
- dns/dns.resolver (python library)
description:
@@ -23,7 +23,7 @@ options:
real_empty:
description:
- Return empty result without empty strings, and return empty list instead of V(NXDOMAIN).
- - The default for this option is likely to change to V(true) in the future.
+ - The default for this option will likely change to V(true) in the future.
default: false
type: bool
version_added: 6.0.0
diff --git a/plugins/lookup/etcd.py b/plugins/lookup/etcd.py
index d8d992e79f..d8c708bfc8 100644
--- a/plugins/lookup/etcd.py
+++ b/plugins/lookup/etcd.py
@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
author:
- Jan-Piet Mens (@jpmens)
name: etcd
-short_description: Get info from an etcd server
+short_description: get info from an etcd server
description:
- Retrieves data from an etcd server.
options:
diff --git a/plugins/lookup/filetree.py b/plugins/lookup/filetree.py
index 24e0c20eea..fd064cb4e6 100644
--- a/plugins/lookup/filetree.py
+++ b/plugins/lookup/filetree.py
@@ -9,11 +9,11 @@ __metaclass__ = type
DOCUMENTATION = r"""
name: filetree
author: Dag Wieers (@dagwieers)
-short_description: Recursively match all files in a directory tree
+short_description: recursively match all files in a directory tree
description:
- This lookup enables you to template a complete tree of files on a target system while retaining permissions and ownership.
- Supports directories, files and symlinks, including SELinux and other file properties.
- - If you provide more than one path, it implements a first_found logic, and does not process entries it already processed
+ - If you provide more than one path, it will implement a first_found logic, and will not process entries it already processed
in previous paths. This enables merging different trees in order of importance, or add role_vars to specific paths to
influence different instances of the same role.
options:
diff --git a/plugins/lookup/flattened.py b/plugins/lookup/flattened.py
index de4a21fbdd..4b703458cc 100644
--- a/plugins/lookup/flattened.py
+++ b/plugins/lookup/flattened.py
@@ -9,9 +9,9 @@ __metaclass__ = type
DOCUMENTATION = r"""
name: flattened
author: Serge van Ginderachter (!UNKNOWN)
-short_description: Return single list completely flattened
+short_description: return single list completely flattened
description:
- - Given one or more lists, this lookup flattens any list elements found recursively until only 1 list is left.
+ - Given one or more lists, this lookup will flatten any list elements found recursively until only 1 list is left.
options:
_terms:
description: Lists to flatten.
@@ -19,7 +19,7 @@ options:
elements: raw
required: true
notes:
- - Unlike the P(ansible.builtin.items#lookup) lookup which only flattens 1 level, this plugin continues to flatten until
+ - Unlike the P(ansible.builtin.items#lookup) lookup which only flattens 1 level, this plugin will continue to flatten until
it cannot find lists anymore.
- Aka highlander plugin, there can only be one (list).
"""
diff --git a/plugins/lookup/hiera.py b/plugins/lookup/hiera.py
index 27f133d78a..7aacad4e26 100644
--- a/plugins/lookup/hiera.py
+++ b/plugins/lookup/hiera.py
@@ -10,7 +10,7 @@ DOCUMENTATION = r"""
author:
- Juan Manuel Parrilla (@jparrill)
name: hiera
-short_description: Get info from hiera data
+short_description: get info from hiera data
requirements:
- hiera (command line utility)
description:
diff --git a/plugins/lookup/keyring.py b/plugins/lookup/keyring.py
index 75d808e736..2cbc2ea8c2 100644
--- a/plugins/lookup/keyring.py
+++ b/plugins/lookup/keyring.py
@@ -13,7 +13,7 @@ author:
- Samuel Boucher (!UNKNOWN)
requirements:
- keyring (python library)
-short_description: Grab secrets from the OS keyring
+short_description: grab secrets from the OS keyring
description:
- Allows you to access data stored in the OS provided keyring/keychain.
"""
diff --git a/plugins/lookup/lastpass.py b/plugins/lookup/lastpass.py
index 2633848937..28b9af3466 100644
--- a/plugins/lookup/lastpass.py
+++ b/plugins/lookup/lastpass.py
@@ -13,7 +13,7 @@ author:
requirements:
- lpass (command line utility)
- must have already logged into LastPass
-short_description: Fetch data from LastPass
+short_description: fetch data from LastPass
description:
- Use the lpass command line utility to fetch specific fields from LastPass.
options:
diff --git a/plugins/lookup/lmdb_kv.py b/plugins/lookup/lmdb_kv.py
index b3728abb17..d44aac55c3 100644
--- a/plugins/lookup/lmdb_kv.py
+++ b/plugins/lookup/lmdb_kv.py
@@ -11,7 +11,7 @@ name: lmdb_kv
author:
- Jan-Piet Mens (@jpmens)
version_added: '0.2.0'
-short_description: Fetch data from LMDB
+short_description: fetch data from LMDB
description:
- This lookup returns a list of results from an LMDB DB corresponding to a list of items given to it.
requirements:
diff --git a/plugins/lookup/merge_variables.py b/plugins/lookup/merge_variables.py
index aff70f9799..f3f185a164 100644
--- a/plugins/lookup/merge_variables.py
+++ b/plugins/lookup/merge_variables.py
@@ -12,7 +12,7 @@ author:
- Mark Ettema (@m-a-r-k-e)
- Alexander Petrenz (@alpex8)
name: merge_variables
-short_description: Merge variables whose names match a given pattern
+short_description: merge variables whose names match a given pattern
description:
- This lookup returns the merged result of all variables in scope that match the given prefixes, suffixes, or regular expressions,
optionally.
@@ -20,8 +20,8 @@ version_added: 6.5.0
options:
_terms:
description:
- - Depending on the value of O(pattern_type), this is a list of prefixes, suffixes, or regular expressions that is used
- to match all variables that should be merged.
+ - Depending on the value of O(pattern_type), this is a list of prefixes, suffixes, or regular expressions that will
+ be used to match all variables that should be merged.
required: true
type: list
elements: str
@@ -45,11 +45,11 @@ options:
type: raw
override:
description:
- - Return an error, print a warning or ignore it when a key is overwritten.
+ - Return an error, print a warning or ignore it when a key will be overwritten.
- The default behavior V(error) makes the plugin fail when a key would be overwritten.
- When V(warn) and V(ignore) are used, note that it is important to know that the variables are sorted by name before
- being merged. Keys for later variables in this order overwrite keys of the same name for variables earlier in this
- order. To avoid potential confusion, better use O(override=error) whenever possible.
+ being merged. Keys for later variables in this order will overwrite keys of the same name for variables earlier in
+ this order. To avoid potential confusion, better use O(override=error) whenever possible.
type: str
default: 'error'
choices:
@@ -111,7 +111,8 @@ example_b: "{{ lookup('community.general.merge_variables', '^.+__test_list$', in
RETURN = r"""
_raw:
- description: In case the search matches list items, a list is returned. In case the search matches dicts, a dict is returned.
+ description: In case the search matches list items, a list will be returned. In case the search matches dicts, a dict will
+ be returned.
type: raw
elements: raw
"""
@@ -193,8 +194,8 @@ class LookupModule(LookupBase):
result = initial_value
for var_name in var_merge_names:
- 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
+ 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
var_type = _verify_and_get_type(var_value)
if prev_var_type is None:
diff --git a/plugins/lookup/onepassword.py b/plugins/lookup/onepassword.py
index 3dc589eaaf..d30234f14d 100644
--- a/plugins/lookup/onepassword.py
+++ b/plugins/lookup/onepassword.py
@@ -41,6 +41,7 @@ extends_documentation_fragment:
"""
EXAMPLES = r"""
+---
# These examples only work when already signed in to 1Password
- name: Retrieve password for KITT when already signed in to 1Password
ansible.builtin.debug:
diff --git a/plugins/lookup/passwordstore.py b/plugins/lookup/passwordstore.py
index 8f87e87034..54e89d6f8f 100644
--- a/plugins/lookup/passwordstore.py
+++ b/plugins/lookup/passwordstore.py
@@ -11,7 +11,7 @@ DOCUMENTATION = r"""
name: passwordstore
author:
- Patrick Deelman (!UNKNOWN)
-short_description: Manage passwords with passwordstore.org's pass utility
+short_description: manage passwords with passwordstore.org's pass utility
description:
- Enables Ansible to retrieve, create or update passwords from the passwordstore.org pass utility. It can also retrieve,
create or update YAML style keys stored as multilines in the passwordfile.
@@ -55,7 +55,7 @@ options:
subkey:
description:
- By default return a specific subkey of the password. When set to V(password), always returns the first line.
- - With O(overwrite=true), it creates the subkey and returns it.
+ - With O(overwrite=true), it will create the subkey and return it.
type: str
default: password
userpass:
@@ -77,10 +77,10 @@ options:
description:
- List of preference about what to do if the password file is missing.
- If O(create=true), the value for this option is ignored and assumed to be V(create).
- - If set to V(error), the lookup fails out if the passname does not exist.
- - If set to V(create), the passname is created with the provided length O(length) if it does not exist.
- - If set to V(empty) or V(warn), it returns a V(none) in case the passname does not exist. When using C(lookup) and
- not C(query), this is translated to an empty string.
+ - If set to V(error), the lookup will error out if the passname does not exist.
+ - If set to V(create), the passname will be created with the provided length O(length) if it does not exist.
+ - If set to V(empty) or V(warn), will return a V(none) in case the passname does not exist. When using C(lookup) and
+ not C(query), this will be translated to an empty string.
version_added: 3.1.0
type: str
default: error
@@ -146,8 +146,8 @@ options:
missing_subkey:
description:
- Preference about what to do if the password subkey is missing.
- - If set to V(error), the lookup fails out if the subkey does not exist.
- - If set to V(empty) or V(warn), it returns a V(none) in case the subkey does not exist.
+ - If set to V(error), the lookup will error out if the subkey does not exist.
+ - If set to V(empty) or V(warn), will return a V(none) in case the subkey does not exist.
version_added: 8.6.0
type: str
default: empty
diff --git a/plugins/lookup/random_pet.py b/plugins/lookup/random_pet.py
index 8f9b3cbd00..ff51fc8b31 100644
--- a/plugins/lookup/random_pet.py
+++ b/plugins/lookup/random_pet.py
@@ -27,7 +27,7 @@ options:
length:
description:
- The maximal length of every component of the pet name.
- - Values below V(3) are set to V(3) by petname.
+ - Values below 3 will be set to 3 by petname.
default: 6
type: int
prefix:
diff --git a/plugins/lookup/random_string.py b/plugins/lookup/random_string.py
index 6e2e463f39..bd72916d92 100644
--- a/plugins/lookup/random_string.py
+++ b/plugins/lookup/random_string.py
@@ -25,30 +25,26 @@ options:
type: int
upper:
description:
- - Possibly include uppercase letters in the string.
- - To ensure atleast one uppercase letter, set O(min_upper) to V(1).
+ - Include uppercase letters in the string.
default: true
type: bool
lower:
description:
- - Possibly include lowercase letters in the string.
- - To ensure atleast one lowercase letter, set O(min_lower) to V(1).
+ - Include lowercase letters in the string.
default: true
type: bool
numbers:
description:
- - Possibly include numbers in the string.
- - To ensure atleast one numeric character, set O(min_numeric) to V(1).
+ - Include numbers in the string.
default: true
type: bool
special:
description:
- - Possibly include special characters in the string.
- - Special characters are taken from Python standard library C(string). See L(the documentation of
- string.punctuation,https://docs.python.org/3/library/string.html#string.punctuation)
- for which characters are used.
+ - Include special characters in the string.
+ - Special characters are taken from Python standard library C(string).
+ See L(the documentation of string.punctuation,https://docs.python.org/3/library/string.html#string.punctuation)
+ for which characters will be used.
- The choice of special characters can be changed to setting O(override_special).
- - To ensure atleast one special character, set O(min_special) to V(1).
default: true
type: bool
min_numeric:
diff --git a/plugins/lookup/redis.py b/plugins/lookup/redis.py
index bb5a122da3..3c8ff07a23 100644
--- a/plugins/lookup/redis.py
+++ b/plugins/lookup/redis.py
@@ -11,7 +11,7 @@ name: redis
author:
- Jan-Piet Mens (@jpmens)
- Ansible Core Team
-short_description: Fetch data from Redis
+short_description: fetch data from Redis
description:
- This lookup returns a list of results from a Redis DB corresponding to a list of items given to it.
requirements:
diff --git a/plugins/lookup/revbitspss.py b/plugins/lookup/revbitspss.py
index 6b31963f4a..c40140671d 100644
--- a/plugins/lookup/revbitspss.py
+++ b/plugins/lookup/revbitspss.py
@@ -19,18 +19,18 @@ requirements:
options:
_terms:
description:
- - This is an array of keys for secrets which you want to fetch from RevBits PAM.
+ - This will be an array of keys for secrets which you want to fetch from RevBits PAM.
required: true
type: list
elements: string
base_url:
description:
- - This is the base URL of the server, for example V(https://server-url-here).
+ - This will be the base URL of the server, for example V(https://server-url-here).
required: true
type: string
api_key:
description:
- - This is the API key for authentication. You can get it from the RevBits PAM secret manager module.
+ - This will be the API key for authentication. You can get it from the RevBits PAM secret manager module.
required: true
type: string
"""
@@ -39,7 +39,7 @@ RETURN = r"""
_list:
description:
- The JSON responses which you can access with defined keys.
- - If you are fetching secrets named as UUID, PASSWORD it returns the dict of all secrets.
+ - If you are fetching secrets named as UUID, PASSWORD it will gives you the dict of all secrets.
type: list
elements: dict
"""
diff --git a/plugins/lookup/shelvefile.py b/plugins/lookup/shelvefile.py
index f4142f67c6..4921e050a0 100644
--- a/plugins/lookup/shelvefile.py
+++ b/plugins/lookup/shelvefile.py
@@ -9,7 +9,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
name: shelvefile
author: Alejandro Guirao (!UNKNOWN)
-short_description: Read keys from Python shelve file
+short_description: read keys from Python shelve file
description:
- Read keys from Python shelve file.
options:
diff --git a/plugins/lookup/tss.py b/plugins/lookup/tss.py
index 3d73fcbe99..6a97d4b29c 100644
--- a/plugins/lookup/tss.py
+++ b/plugins/lookup/tss.py
@@ -33,14 +33,14 @@ options:
fetch_secret_ids_from_folder:
description:
- Boolean flag which indicates whether secret IDs are in a folder is fetched by folder ID or not.
- - V(true) then the terms are considered as a folder IDs. Otherwise (default), they are considered as secret IDs.
+ - V(true) then the terms will be considered as a folder IDs. Otherwise (default), they are considered as secret IDs.
required: false
type: bool
version_added: 7.1.0
fetch_attachments:
description:
- - Boolean flag which indicates whether attached files are downloaded or not.
- - The download only happens if O(file_download_path) has been provided.
+ - Boolean flag which indicates whether attached files will get downloaded or not.
+ - The download will only happen if O(file_download_path) has been provided.
required: false
type: bool
version_added: 7.0.0
diff --git a/plugins/module_utils/django.py b/plugins/module_utils/django.py
index 7b61502d59..4f5293c09f 100644
--- a/plugins/module_utils/django.py
+++ b/plugins/module_utils/django.py
@@ -55,11 +55,11 @@ class _DjangoRunner(PythonRunner):
super(_DjangoRunner, self).__init__(module, ["-m", "django"], arg_formats=arg_fmts, **kwargs)
- def __call__(self, output_process=None, check_mode_skip=False, check_mode_return=None, **kwargs):
+ def __call__(self, output_process=None, ignore_value_none=True, check_mode_skip=False, check_mode_return=None, **kwargs):
args_order = (
("command", "no_color", "settings", "pythonpath", "traceback", "verbosity", "skip_checks") + self._prepare_args_order(self.default_args_order)
)
- return super(_DjangoRunner, self).__call__(args_order, output_process, check_mode_skip=check_mode_skip, check_mode_return=check_mode_return, **kwargs)
+ return super(_DjangoRunner, self).__call__(args_order, output_process, ignore_value_none, check_mode_skip, check_mode_return, **kwargs)
def bare_context(self, *args, **kwargs):
return super(_DjangoRunner, self).__call__(*args, **kwargs)
diff --git a/plugins/module_utils/identity/keycloak/keycloak.py b/plugins/module_utils/identity/keycloak/keycloak.py
index 70cf627e33..45216a9302 100644
--- a/plugins/module_utils/identity/keycloak/keycloak.py
+++ b/plugins/module_utils/identity/keycloak/keycloak.py
@@ -104,7 +104,6 @@ URL_IDENTITY_PROVIDERS = "{url}/admin/realms/{realm}/identity-provider/instances
URL_IDENTITY_PROVIDER = "{url}/admin/realms/{realm}/identity-provider/instances/{alias}"
URL_IDENTITY_PROVIDER_MAPPERS = "{url}/admin/realms/{realm}/identity-provider/instances/{alias}/mappers"
URL_IDENTITY_PROVIDER_MAPPER = "{url}/admin/realms/{realm}/identity-provider/instances/{alias}/mappers/{id}"
-URL_IDENTITY_PROVIDER_IMPORT = "{url}/admin/realms/{realm}/identity-provider/import-config"
URL_COMPONENTS = "{url}/admin/realms/{realm}/components"
URL_COMPONENT = "{url}/admin/realms/{realm}/components/{id}"
@@ -249,29 +248,6 @@ def _request_token_using_refresh_token(module_params):
return _token_request(module_params, payload)
-def _request_token_using_client_credentials(module_params):
- """ Obtains connection header with token for the authentication,
- using the provided auth_client_id and auth_client_secret by grant_type
- client_credentials. Ensure that the used client uses client authorization
- with service account roles enabled and required service roles assigned.
- :param module_params: parameters of the module. Must include 'auth_client_id'
- and 'auth_client_secret'..
- :return: connection header
- """
- client_id = module_params.get('auth_client_id')
- client_secret = module_params.get('auth_client_secret')
-
- temp_payload = {
- 'grant_type': 'client_credentials',
- 'client_id': client_id,
- 'client_secret': client_secret,
- }
- # Remove empty items, for instance missing client_secret
- payload = {k: v for k, v in temp_payload.items() if v is not None}
-
- return _token_request(module_params, payload)
-
-
def get_token(module_params):
""" Obtains connection header with token for the authentication,
token already given or obtained from credentials
@@ -281,13 +257,7 @@ def get_token(module_params):
token = module_params.get('token')
if token is None:
- auth_client_id = module_params.get('auth_client_id')
- auth_client_secret = module_params.get('auth_client_secret')
- auth_username = module_params.get('auth_username')
- if auth_client_id is not None and auth_client_secret is not None and auth_username is None:
- token = _request_token_using_client_credentials(module_params)
- else:
- token = _request_token_using_credentials(module_params)
+ token = _request_token_using_credentials(module_params)
return {
'Authorization': 'Bearer ' + token,
@@ -417,21 +387,6 @@ class KeycloakAPI(object):
r = make_request_catching_401()
- if isinstance(r, Exception):
- # Try to re-auth with client_id and client_secret, if available
- auth_client_id = self.module.params.get('auth_client_id')
- auth_client_secret = self.module.params.get('auth_client_secret')
- if auth_client_id is not None and auth_client_secret is not None:
- try:
- token = _request_token_using_client_credentials(self.module.params)
- self.restheaders['Authorization'] = 'Bearer ' + token
-
- r = make_request_catching_401()
- except KeycloakError as e:
- # Token refresh returns 400 if token is expired/invalid, so continue on if we get a 400
- if e.authError is not None and e.authError.code != 400:
- raise e
-
if isinstance(r, Exception):
# Either no re-auth options were available, or they all failed
raise r
@@ -1962,7 +1917,7 @@ class KeycloakAPI(object):
and composite["name"] == existing_composite["name"]):
composite_found = True
break
- if not composite_found and ('state' not in composite or composite['state'] == 'present'):
+ if (not composite_found and ('state' not in composite or composite['state'] == 'present')):
if "client_id" in composite and composite['client_id'] is not None:
client_roles = self.get_client_roles(clientid=composite['client_id'], realm=realm)
for client_role in client_roles:
@@ -2581,23 +2536,6 @@ class KeycloakAPI(object):
self.fail_request(e, msg='Could not obtain list of identity provider mappers for idp %s in realm %s: %s'
% (alias, realm, str(e)))
- def fetch_idp_endpoints_import_config_url(self, fromUrl, providerId='oidc', realm='master'):
- """ Import an identity provider configuration through Keycloak server from a well-known URL.
- :param fromUrl: URL to import the identity provider configuration from.
- "param providerId: Provider ID of the identity provider to import, default 'oidc'.
- :param realm: Realm
- :return: IDP endpoins.
- """
- try:
- payload = {
- "providerId": providerId,
- "fromUrl": fromUrl
- }
- idps_url = URL_IDENTITY_PROVIDER_IMPORT.format(url=self.baseurl, realm=realm)
- return self._request_and_deserialize(idps_url, method='POST', data=json.dumps(payload))
- except Exception as e:
- self.fail_request(e, msg='Could not import the IdP config in realm %s: %s' % (realm, str(e)))
-
def get_identity_provider_mapper(self, mid, alias, realm='master'):
""" Fetch identity provider representation from a realm using the idp's alias.
If the identity provider does not exist, None is returned.
diff --git a/plugins/module_utils/pacemaker.py b/plugins/module_utils/pacemaker.py
index 6228244e10..df13cfebd1 100644
--- a/plugins/module_utils/pacemaker.py
+++ b/plugins/module_utils/pacemaker.py
@@ -14,12 +14,7 @@ _state_map = {
"absent": "remove",
"status": "status",
"enabled": "enable",
- "disabled": "disable",
- "online": "start",
- "offline": "stop",
- "maintenance": "set",
- "config": "config",
- "cleanup": "cleanup",
+ "disabled": "disable"
}
@@ -43,19 +38,20 @@ def fmt_resource_argument(value):
def get_pacemaker_maintenance_mode(runner):
- with runner("cli_action config") as ctx:
- rc, out, err = ctx.run(cli_action="property")
+ with runner("config") as ctx:
+ rc, out, err = ctx.run()
maintenance_mode_output = list(filter(lambda string: "maintenance-mode=true" in string.lower(), out.splitlines()))
return bool(maintenance_mode_output)
-def pacemaker_runner(module, **kwargs):
+def pacemaker_runner(module, cli_action=None, **kwargs):
runner_command = ['pcs']
+ if cli_action:
+ runner_command.append(cli_action)
runner = CmdRunner(
module,
command=runner_command,
arg_formats=dict(
- cli_action=cmd_runner_fmt.as_list(),
state=cmd_runner_fmt.as_map(_state_map),
name=cmd_runner_fmt.as_list(),
resource_type=cmd_runner_fmt.as_func(fmt_resource_type),
@@ -63,12 +59,9 @@ def pacemaker_runner(module, **kwargs):
resource_operation=cmd_runner_fmt.as_func(fmt_resource_operation),
resource_meta=cmd_runner_fmt.stack(cmd_runner_fmt.as_opt_val)("meta"),
resource_argument=cmd_runner_fmt.as_func(fmt_resource_argument),
- apply_all=cmd_runner_fmt.as_bool("--all"),
wait=cmd_runner_fmt.as_opt_eq_val("--wait"),
config=cmd_runner_fmt.as_fixed("config"),
force=cmd_runner_fmt.as_bool("--force"),
- version=cmd_runner_fmt.as_fixed("--version"),
- output_format=cmd_runner_fmt.as_opt_eq_val("--output-format"),
),
**kwargs
)
diff --git a/plugins/module_utils/python_runner.py b/plugins/module_utils/python_runner.py
index a8e9e651be..b65867c61e 100644
--- a/plugins/module_utils/python_runner.py
+++ b/plugins/module_utils/python_runner.py
@@ -19,7 +19,7 @@ class PythonRunner(CmdRunner):
self.venv = venv
self.has_venv = venv is not None
- if os.path.isabs(python) or '/' in python:
+ if (os.path.isabs(python) or '/' in python):
self.python = python
elif self.has_venv:
if path_prefix is None:
diff --git a/plugins/module_utils/scaleway.py b/plugins/module_utils/scaleway.py
index d4cb4eb662..4768aafc9c 100644
--- a/plugins/module_utils/scaleway.py
+++ b/plugins/module_utils/scaleway.py
@@ -353,18 +353,11 @@ SCALEWAY_LOCATION = {
'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/fr-par-2'
},
- 'par3': {
- 'name': 'Paris 3',
- 'country': 'FR',
- 'api_endpoint': 'https://api.scaleway.com/instance/v1/zones/fr-par-3',
- 'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/fr-par-3'
- },
-
'ams1': {
'name': 'Amsterdam 1',
'country': 'NL',
'api_endpoint': 'https://api.scaleway.com/instance/v1/zones/nl-ams-1',
- 'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/nl-ams-1'
+ 'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/nl-ams-10'
},
'EMEA-NL-EVS': {
@@ -374,20 +367,6 @@ SCALEWAY_LOCATION = {
'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/nl-ams-1'
},
- 'ams2': {
- 'name': 'Amsterdam 2',
- 'country': 'NL',
- 'api_endpoint': 'https://api.scaleway.com/instance/v1/zones/nl-ams-2',
- 'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/nl-ams-2'
- },
-
- 'ams3': {
- 'name': 'Amsterdam 3',
- 'country': 'NL',
- 'api_endpoint': 'https://api.scaleway.com/instance/v1/zones/nl-ams-3',
- 'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/nl-ams-3'
- },
-
'waw1': {
'name': 'Warsaw 1',
'country': 'PL',
@@ -401,20 +380,6 @@ SCALEWAY_LOCATION = {
'api_endpoint': 'https://api.scaleway.com/instance/v1/zones/pl-waw-1',
'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/pl-waw-1'
},
-
- 'waw2': {
- 'name': 'Warsaw 2',
- 'country': 'PL',
- 'api_endpoint': 'https://api.scaleway.com/instance/v1/zones/pl-waw-2',
- 'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/pl-waw-2'
- },
-
- 'waw3': {
- 'name': 'Warsaw 3',
- 'country': 'PL',
- 'api_endpoint': 'https://api.scaleway.com/instance/v1/zones/pl-waw-3',
- 'api_endpoint_vpc': 'https://api.scaleway.com/vpc/v1/zones/pl-waw-3'
- },
}
SCALEWAY_ENDPOINT = "https://api.scaleway.com"
@@ -428,11 +393,6 @@ SCALEWAY_REGIONS = [
SCALEWAY_ZONES = [
"fr-par-1",
"fr-par-2",
- "fr-par-3",
"nl-ams-1",
- "nl-ams-2",
- "nl-ams-3",
"pl-waw-1",
- "pl-waw-2",
- "pl-waw-3",
]
diff --git a/plugins/modules/aerospike_migrations.py b/plugins/modules/aerospike_migrations.py
index d9440fdb4e..9a6084a6a1 100644
--- a/plugins/modules/aerospike_migrations.py
+++ b/plugins/modules/aerospike_migrations.py
@@ -29,6 +29,7 @@ options:
host:
description:
- Which host do we use as seed for info connection.
+ required: false
type: str
default: localhost
port:
@@ -69,7 +70,7 @@ options:
type: bool
min_cluster_size:
description:
- - Check fails until cluster size is met or until tries is exhausted.
+ - Check will return bad until cluster size is met or until tries is exhausted.
required: false
type: int
default: 1
@@ -93,10 +94,10 @@ options:
default: migrate_rx_partitions_remaining
target_cluster_size:
description:
- - When all aerospike builds in the cluster are greater than version 4.3, then the C(cluster-stable) info command is
- used. Inside this command, you can optionally specify what the target cluster size is - but it is not necessary.
+ - When all aerospike builds in the cluster are greater than version 4.3, then the C(cluster-stable) info command will
+ be used. Inside this command, you can optionally specify what the target cluster size is - but it is not necessary.
You can still rely on O(min_cluster_size) if you do not want to use this option.
- - If this option is specified on a cluster that has at least one host <4.3 then it is ignored until the min version
+ - If this option is specified on a cluster that has at least one host <4.3 then it will be ignored until the min version
reaches 4.3.
required: false
type: int
@@ -179,19 +180,19 @@ else:
def run_module():
"""run ansible module"""
module_args = dict(
- 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),
+ 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),
local_only=dict(type='bool', required=True),
- 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,
+ 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,
default="migrate_tx_partitions_remaining"),
- migrate_rx_key=dict(type='str', no_log=False,
+ migrate_rx_key=dict(type='str', required=False, no_log=False,
default="migrate_rx_partitions_remaining")
)
diff --git a/plugins/modules/airbrake_deployment.py b/plugins/modules/airbrake_deployment.py
index 0fe04f21d6..d772062da4 100644
--- a/plugins/modules/airbrake_deployment.py
+++ b/plugins/modules/airbrake_deployment.py
@@ -71,7 +71,7 @@ options:
type: str
validate_certs:
description:
- - If V(false), SSL certificates for the target URL is not validated. This should only be used on personally controlled
+ - If V(false), SSL certificates for the target URL will not be validated. This should only be used on personally controlled
sites using self-signed certificates.
required: false
default: true
@@ -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(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'),
+ 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'),
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 92a734e8ac..8934d583ff 100644
--- a/plugins/modules/aix_filesystem.py
+++ b/plugins/modules/aix_filesystem.py
@@ -47,7 +47,7 @@ options:
description:
- Logical volume (LV) device name or remote export device to create a NFS file system.
- It is used to create a file system on an already existing logical volume or the exported NFS file system.
- - If not mentioned a new logical volume name is created following AIX standards (LVM).
+ - If not mentioned a new logical volume name will be created following AIX standards (LVM).
type: str
fs_type:
description:
@@ -81,14 +81,14 @@ options:
size:
description:
- Specifies the file system size.
- - For already present it resizes the filesystem.
- - 512-byte blocks, megabytes or gigabytes. If the value has M specified it is in megabytes. If the value has G specified
- it is in gigabytes.
- - If no M or G the value is 512-byte blocks.
- - If V(+) is specified in begin of value, the value is added.
- - If V(-) is specified in begin of value, the value is removed.
- - If neither V(+) nor V(-) is specified, then the total value is the specified.
- - Size respects the LVM AIX standards.
+ - For already V(present) it will be resized.
+ - 512-byte blocks, Megabytes or Gigabytes. If the value has M specified it will be in Megabytes. If the value has G
+ specified it will be in Gigabytes.
+ - If no M or G the value will be 512-byte blocks.
+ - If "+" is specified in begin of value, the value will be added.
+ - If "-" is specified in begin of value, the value will be removed.
+ - If "+" or "-" is not specified, the total value will be the specified.
+ - Size will respects the LVM AIX standards.
type: str
state:
description:
@@ -165,6 +165,16 @@ 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 ece4e95547..0c32f91e7f 100644
--- a/plugins/modules/aix_inittab.py
+++ b/plugins/modules/aix_inittab.py
@@ -112,6 +112,16 @@ 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/aix_lvg.py b/plugins/modules/aix_lvg.py
index c41e21124e..29c0b7d3f9 100644
--- a/plugins/modules/aix_lvg.py
+++ b/plugins/modules/aix_lvg.py
@@ -36,7 +36,7 @@ options:
description:
- List of comma-separated devices to use as physical devices in this volume group.
- Required when creating or extending (V(present) state) the volume group.
- - If not informed reducing (V(absent) state) the volume group is removed.
+ - If not informed reducing (V(absent) state) the volume group will be removed.
type: list
elements: str
state:
@@ -57,7 +57,7 @@ options:
choices: [big, normal, scalable]
default: normal
notes:
- - AIX allows removing VG only if all LV/Filesystems are not busy.
+ - AIX will permit remove VG only if all LV/Filesystems are not busy.
- Module does not modify PP size for already present volume group.
"""
diff --git a/plugins/modules/ali_instance.py b/plugins/modules/ali_instance.py
index 050794d55c..1a66850e14 100644
--- a/plugins/modules/ali_instance.py
+++ b/plugins/modules/ali_instance.py
@@ -45,7 +45,8 @@ options:
type: str
availability_zone:
description:
- - Aliyun availability zone ID in which to launch the instance. If it is not specified, it is allocated by system automatically.
+ - Aliyun availability zone ID in which to launch the instance. If it is not specified, it will be allocated by system
+ automatically.
aliases: ['alicloud_zone', 'zone_id']
type: str
image_id:
@@ -108,7 +109,7 @@ options:
version_added: '0.2.0'
password:
description:
- - The password to login instance. After rebooting instances, modified password is effective.
+ - The password to login instance. After rebooting instances, modified password will take effect.
type: str
system_disk_category:
description:
@@ -139,7 +140,7 @@ options:
description:
- O(count) determines how many instances based on a specific tag criteria should be present. This can be expressed in
multiple ways and is shown in the EXAMPLES section. The specified count_tag must already exist or be passed in as
- the O(tags) option. If it is not specified, it is replaced by O(instance_name).
+ the O(tags) option. If it is not specified, it will be replaced by O(instance_name).
type: str
allocate_public_ip:
description:
@@ -171,7 +172,8 @@ options:
type: int
instance_ids:
description:
- - A list of instance IDs. It is required when need to operate existing instances. If it is specified, O(count) is ignored.
+ - A list of instance IDs. It is required when need to operate existing instances. If it is specified, O(count) will
+ lose efficacy.
type: list
elements: str
force:
@@ -201,7 +203,7 @@ options:
user_data:
description:
- User-defined data to customize the startup behaviors of an ECS instance and to pass data into an ECS instance. It
- only takes effect when launching the new ECS instances.
+ only will take effect when launching the new ECS instances.
required: false
type: str
ram_role_name:
@@ -224,7 +226,7 @@ options:
version_added: '0.2.0'
period_unit:
description:
- - The duration unit that you are buying the resource. It is valid when O(instance_charge_type=PrePaid).
+ - The duration unit that you will buy the resource. It is valid when O(instance_charge_type=PrePaid).
choices: ['Month', 'Week']
default: 'Month'
type: str
@@ -422,7 +424,7 @@ instances:
type: str
sample: 42.10.2.2
expired_time:
- description: The time the instance expires.
+ description: The time the instance will expire.
returned: always
type: str
sample: "2099-12-31T15:59Z"
@@ -613,7 +615,7 @@ ids:
description: List of ECS instance IDs.
returned: always
type: list
- sample: ["i-12345er", "i-3245fs"]
+ sample: [i-12345er, i-3245fs]
"""
import re
diff --git a/plugins/modules/ali_instance_info.py b/plugins/modules/ali_instance_info.py
index 7be5b8cda6..00e77b1ab2 100644
--- a/plugins/modules/ali_instance_info.py
+++ b/plugins/modules/ali_instance_info.py
@@ -167,7 +167,7 @@ instances:
type: str
sample: 42.10.2.2
expired_time:
- description: The time the instance expires.
+ description: The time the instance will expire.
returned: always
type: str
sample: "2099-12-31T15:59Z"
@@ -341,7 +341,7 @@ ids:
description: List of ECS instance IDs.
returned: always
type: list
- sample: ["i-12345er", "i-3245fs"]
+ sample: [i-12345er, i-3245fs]
"""
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
diff --git a/plugins/modules/android_sdk.py b/plugins/modules/android_sdk.py
index a9bffa50ea..b90da54d69 100644
--- a/plugins/modules/android_sdk.py
+++ b/plugins/modules/android_sdk.py
@@ -28,8 +28,8 @@ version_added: 10.2.0
options:
accept_licenses:
description:
- - If this is set to V(true), the module attempts to accept license prompts generated by C(sdkmanager) during package
- installation. Otherwise, every license prompt is rejected.
+ - If this is set to V(true), the module will try to accept license prompts generated by C(sdkmanager) during package
+ installation. Otherwise, every license prompt will be rejected.
type: bool
default: false
name:
@@ -64,16 +64,16 @@ requirements:
notes:
- For some of the packages installed by C(sdkmanager) is it necessary to accept licenses. Usually it is done through command
line prompt in a form of a Y/N question when a licensed package is requested to be installed. If there are several packages
- requested for installation and at least two of them belong to different licenses, the C(sdkmanager) tool prompts for these
- licenses in a loop. In order to install packages, the module must be able to answer these license prompts. Currently,
+ requested for installation and at least two of them belong to different licenses, the C(sdkmanager) tool will prompt for
+ these licenses in a loop. In order to install packages, the module must be able to answer these license prompts. Currently,
it is only possible to answer one license prompt at a time, meaning that instead of installing multiple packages as a
- single invocation of the C(sdkmanager --install) command, it is done by executing the command independently for each package.
- This makes sure that at most only one license prompt needs to be answered. At the time of writing this module, a C(sdkmanager)'s
- package may belong to at most one license type that needs to be accepted. However, if this changes in the future, the
- module may hang as there might be more prompts generated by the C(sdkmanager) tool which the module is unable to answer.
- If this becomes the case, file an issue and in the meantime, consider accepting all the licenses in advance, as it is
- described in the C(sdkmanager) L(documentation,https://developer.android.com/tools/sdkmanager#accept-licenses), for instance,
- using the M(ansible.builtin.command) module.
+ single invocation of the C(sdkmanager --install) command, it will be done by executing the command independently for each
+ package. This makes sure that at most only one license prompt will need to be answered. At the time of writing this module,
+ a C(sdkmanager)'s package may belong to at most one license type that needs to be accepted. However, if this changes in
+ the future, the module may hang as there might be more prompts generated by the C(sdkmanager) tool which the module will
+ not be able to answer. If this becomes the case, file an issue and in the meantime, consider accepting all the licenses
+ in advance, as it is described in the C(sdkmanager) L(documentation,https://developer.android.com/tools/sdkmanager#accept-licenses),
+ for instance, using the M(ansible.builtin.command) module.
seealso:
- name: sdkmanager tool documentation
description: Detailed information of how to install and use sdkmanager command line tool.
@@ -126,13 +126,13 @@ installed:
description: A list of packages that have been installed.
returned: when packages have changed
type: list
- sample: ["build-tools;34.0.0", "platform-tools"]
+ sample: ['build-tools;34.0.0', 'platform-tools']
removed:
description: A list of packages that have been removed.
returned: when packages have changed
type: list
- sample: ["build-tools;34.0.0", "platform-tools"]
+ sample: ['build-tools;34.0.0', 'platform-tools']
"""
from ansible_collections.community.general.plugins.module_utils.mh.module_helper import StateModuleHelper
diff --git a/plugins/modules/ansible_galaxy_install.py b/plugins/modules/ansible_galaxy_install.py
index 4712ca9a3c..ec094090a1 100644
--- a/plugins/modules/ansible_galaxy_install.py
+++ b/plugins/modules/ansible_galaxy_install.py
@@ -18,8 +18,8 @@ description:
- This module allows the installation of Ansible collections or roles using C(ansible-galaxy).
notes:
- Support for B(Ansible 2.9/2.10) was removed in community.general 8.0.0.
- - The module tries to run using the C(C.UTF-8) locale. If that fails, it tries C(en_US.UTF-8). If that one also fails, the
- module fails.
+ - The module will try and run using the C(C.UTF-8) locale. If that fails, it will try C(en_US.UTF-8). If that one also fails,
+ the module will fail.
seealso:
- name: C(ansible-galaxy) command manual page
description: Manual page for the command.
@@ -37,10 +37,10 @@ attributes:
options:
state:
description:
- - If O(state=present) then the collection or role is installed. Note that the collections and roles are not updated
+ - If O(state=present) then the collection or role will be installed. Note that the collections and roles are not updated
with this option.
- - Currently the O(state=latest) is ignored unless O(type=collection), and it ensures the collection is installed and
- updated to the latest available version.
+ - Currently the O(state=latest) is ignored unless O(type=collection), and it will ensure the collection is installed
+ and updated to the latest available version.
- Please note that O(force=true) can be used to perform upgrade regardless of O(type).
type: str
choices: [present, latest]
@@ -71,7 +71,7 @@ options:
dest:
description:
- The path to the directory containing your collections or roles, according to the value of O(type).
- - Please notice that C(ansible-galaxy) does not install collections with O(type=both), when O(requirements_file) contains
+ - Please notice that C(ansible-galaxy) will not install collections with O(type=both), when O(requirements_file) contains
both roles and collections and O(dest) is specified.
type: path
no_deps:
@@ -83,7 +83,7 @@ options:
force:
description:
- Force overwriting existing roles and/or collections.
- - It can be used for upgrading, but the module output always reports C(changed=true).
+ - It can be used for upgrading, but the module output will always report C(changed=true).
- Using O(force=true) is mandatory when downgrading.
type: bool
default: false
diff --git a/plugins/modules/apache2_module.py b/plugins/modules/apache2_module.py
index 99db968670..2007b5d1f1 100644
--- a/plugins/modules/apache2_module.py
+++ b/plugins/modules/apache2_module.py
@@ -113,6 +113,22 @@ 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
@@ -148,12 +164,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.warn(
+ module.warnings.append(
"No MPM module loaded! apache2 reload AND other module actions"
" will fail if no MPM module is loaded immediately."
)
else:
- module.warn(error_msg)
+ module.warnings.append(error_msg)
return False
else:
module.fail_json(msg=error_msg)
@@ -208,7 +224,9 @@ def _set_state(module, state):
if _module_is_enabled(module) != want_enabled:
if module.check_mode:
- module.exit_json(changed=True, result=success_msg)
+ module.exit_json(changed=True,
+ result=success_msg,
+ warnings=module.warnings)
a2mod_binary_path = module.get_bin_path(a2mod_binary)
if a2mod_binary_path is None:
@@ -223,7 +241,9 @@ 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)
+ module.exit_json(changed=True,
+ result=success_msg,
+ warnings=module.warnings)
else:
msg = (
'Failed to set module {name} to {state}:\n'
@@ -241,7 +261,9 @@ def _set_state(module, state):
stdout=stdout,
stderr=stderr)
else:
- module.exit_json(changed=False, result=success_msg)
+ module.exit_json(changed=False,
+ result=success_msg,
+ warnings=module.warnings)
def main():
@@ -257,6 +279,8 @@ 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 0bc67e2e2b..7f1f83ce56 100644
--- a/plugins/modules/apk.py
+++ b/plugins/modules/apk.py
@@ -47,8 +47,8 @@ options:
version_added: 1.0.0
repository:
description:
- - A package repository or multiple repositories. Unlike with the underlying apk command, this list overrides the system
- repositories rather than supplement them.
+ - A package repository or multiple repositories. Unlike with the underlying apk command, this list will override the
+ system repositories rather than supplement them.
type: list
elements: str
state:
@@ -79,7 +79,7 @@ options:
version_added: 5.4.0
notes:
- O(name) and O(upgrade) are mutually exclusive.
- - When used with a C(loop:) each package is processed individually, it is much more efficient to pass the list directly
+ - When used with a C(loop:) each package will be processed individually, it is much more efficient to pass the list directly
to the O(name) option.
"""
@@ -164,7 +164,7 @@ packages:
description: A list of packages that have been changed.
returned: when packages have changed
type: list
- sample: ["package", "other-package"]
+ sample: ['package', 'other-package']
"""
import re
@@ -184,7 +184,7 @@ def parse_for_packages(stdout):
def update_package_db(module, exit):
- cmd = APK_PATH + ["update"]
+ cmd = "%s update" % (APK_PATH)
rc, stdout, stderr = module.run_command(cmd, check_rc=False)
if rc != 0:
module.fail_json(msg="could not update package db", stdout=stdout, stderr=stderr)
@@ -207,7 +207,7 @@ def query_toplevel(module, name, world):
def query_package(module, name):
- cmd = APK_PATH + ["-v", "info", "--installed", name]
+ cmd = "%s -v info --installed %s" % (APK_PATH, name)
rc, stdout, stderr = module.run_command(cmd, check_rc=False)
if rc == 0:
return True
@@ -216,7 +216,7 @@ def query_package(module, name):
def query_latest(module, name):
- cmd = APK_PATH + ["version", name]
+ cmd = "%s version %s" % (APK_PATH, name)
rc, stdout, stderr = module.run_command(cmd, check_rc=False)
search_pattern = r"(%s)-[\d\.\w]+-[\d\w]+\s+(.)\s+[\d\.\w]+-[\d\w]+\s+" % (re.escape(name))
match = re.search(search_pattern, stdout)
@@ -226,7 +226,7 @@ def query_latest(module, name):
def query_virtual(module, name):
- cmd = APK_PATH + ["-v", "info", "--description", name]
+ cmd = "%s -v info --description %s" % (APK_PATH, name)
rc, stdout, stderr = module.run_command(cmd, check_rc=False)
search_pattern = r"^%s: virtual meta package" % (re.escape(name))
if re.search(search_pattern, stdout):
@@ -235,7 +235,7 @@ def query_virtual(module, name):
def get_dependencies(module, name):
- cmd = APK_PATH + ["-v", "info", "--depends", name]
+ cmd = "%s -v info --depends %s" % (APK_PATH, name)
rc, stdout, stderr = module.run_command(cmd, check_rc=False)
dependencies = stdout.split()
if len(dependencies) > 1:
@@ -246,11 +246,11 @@ def get_dependencies(module, name):
def upgrade_packages(module, available):
if module.check_mode:
- cmd = APK_PATH + ["upgrade", "--simulate"]
+ cmd = "%s upgrade --simulate" % (APK_PATH)
else:
- cmd = APK_PATH + ["upgrade"]
+ cmd = "%s upgrade" % (APK_PATH)
if available:
- cmd.append("--available")
+ cmd = "%s --available" % cmd
rc, stdout, stderr = module.run_command(cmd, check_rc=False)
packagelist = parse_for_packages(stdout)
if rc != 0:
@@ -281,17 +281,17 @@ def install_packages(module, names, state, world):
upgrade = True
if not to_install and not upgrade:
module.exit_json(changed=False, msg="package(s) already installed")
- packages = to_install + to_upgrade
+ packages = " ".join(to_install + to_upgrade)
if upgrade:
if module.check_mode:
- cmd = APK_PATH + ["add", "--upgrade", "--simulate"] + packages
+ cmd = "%s add --upgrade --simulate %s" % (APK_PATH, packages)
else:
- cmd = APK_PATH + ["add", "--upgrade"] + packages
+ cmd = "%s add --upgrade %s" % (APK_PATH, packages)
else:
if module.check_mode:
- cmd = APK_PATH + ["add", "--simulate"] + packages
+ cmd = "%s add --simulate %s" % (APK_PATH, packages)
else:
- cmd = APK_PATH + ["add"] + packages
+ cmd = "%s add %s" % (APK_PATH, packages)
rc, stdout, stderr = module.run_command(cmd, check_rc=False)
packagelist = parse_for_packages(stdout)
if rc != 0:
@@ -306,11 +306,11 @@ def remove_packages(module, names):
installed.append(name)
if not installed:
module.exit_json(changed=False, msg="package(s) already removed")
- names = installed
+ names = " ".join(installed)
if module.check_mode:
- cmd = APK_PATH + ["del", "--purge", "--simulate"] + names
+ cmd = "%s del --purge --simulate %s" % (APK_PATH, names)
else:
- cmd = APK_PATH + ["del", "--purge"] + names
+ cmd = "%s del --purge %s" % (APK_PATH, names)
rc, stdout, stderr = module.run_command(cmd, check_rc=False)
packagelist = parse_for_packages(stdout)
# Check to see if packages are still present because of dependencies
@@ -347,20 +347,17 @@ def main():
module.run_command_environ_update = dict(LANG='C', LC_ALL='C', LC_MESSAGES='C', LC_CTYPE='C')
global APK_PATH
- APK_PATH = [module.get_bin_path('apk', required=True)]
+ APK_PATH = module.get_bin_path('apk', required=True)
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.append("--no-cache")
+ APK_PATH = "%s --no-cache" % (APK_PATH, )
# add repositories to the APK_PATH
if p['repository']:
for r in p['repository']:
- APK_PATH.extend(["--repository", r, "--repositories-file", "/dev/null"])
+ APK_PATH = "%s --repository %s --repositories-file /dev/null" % (APK_PATH, r)
# normalize the state parameter
if p['state'] in ['present', 'installed']:
diff --git a/plugins/modules/apt_rpm.py b/plugins/modules/apt_rpm.py
index 1dcca5815c..c792dc2c57 100644
--- a/plugins/modules/apt_rpm.py
+++ b/plugins/modules/apt_rpm.py
@@ -36,8 +36,8 @@ options:
description:
- Indicates the desired package state.
- The states V(latest) and V(present_not_latest) have been added in community.general 8.6.0.
- - Please note before community.general 11.0.0, V(present) and V(installed) were equivalent to V(latest). This changed
- in community.general 11.0.0. Now they are equivalent to V(present_not_latest).
+ - Please note before community.general 11.0.0, V(present) and V(installed) were equivalent to V(latest).
+ This changed in community.general 11.0.0. Now they are equivalent to V(present_not_latest).
choices:
- absent
- present
diff --git a/plugins/modules/archive.py b/plugins/modules/archive.py
index 65b397c255..4e4b6368ce 100644
--- a/plugins/modules/archive.py
+++ b/plugins/modules/archive.py
@@ -43,7 +43,7 @@ options:
- The file name of the destination archive. The parent directory must exists on the remote host.
- This is required when O(path) refers to multiple files by either specifying a glob, a directory or multiple paths
in a list.
- - If the destination archive already exists, it is truncated and overwritten.
+ - If the destination archive already exists, it will be truncated and overwritten.
type: path
exclude_path:
description:
diff --git a/plugins/modules/awall.py b/plugins/modules/awall.py
index 0bc4ca1d79..b95f36ea8d 100644
--- a/plugins/modules/awall.py
+++ b/plugins/modules/awall.py
@@ -40,7 +40,7 @@ options:
description:
- Activate the new firewall rules.
- Can be run with other steps or on its own.
- - Idempotency is affected if O(activate=true), as the module always reports a changed state.
+ - Idempotency is affected if O(activate=true), as the module will always report a changed state.
type: bool
default: false
notes:
diff --git a/plugins/modules/beadm.py b/plugins/modules/beadm.py
index 0c200661f1..3d9d8ca651 100644
--- a/plugins/modules/beadm.py
+++ b/plugins/modules/beadm.py
@@ -32,7 +32,7 @@ options:
aliases: ["be"]
snapshot:
description:
- - If specified, the new boot environment is cloned from the given snapshot or inactive boot environment.
+ - If specified, the new boot environment will be cloned from the given snapshot or inactive boot environment.
type: str
description:
description:
diff --git a/plugins/modules/bearychat.py b/plugins/modules/bearychat.py
index 74f764cc09..1dec1bce68 100644
--- a/plugins/modules/bearychat.py
+++ b/plugins/modules/bearychat.py
@@ -12,10 +12,6 @@ module: bearychat
short_description: Send BearyChat notifications
description:
- The M(community.general.bearychat) module sends notifications to U(https://bearychat.com) using the Incoming Robot integration.
-deprecated:
- removed_in: 12.0.0
- why: Chat service is no longer available.
- alternative: There is none.
author: "Jiangge Zhang (@tonyseek)"
extends_documentation_fragment:
- community.general.attributes
@@ -37,7 +33,7 @@ options:
- Message to send.
markdown:
description:
- - If V(true), text is parsed as markdown.
+ - If V(true), text will be parsed as markdown.
default: true
type: bool
channel:
diff --git a/plugins/modules/bigpanda.py b/plugins/modules/bigpanda.py
index 81e2085b7d..aef9c15c92 100644
--- a/plugins/modules/bigpanda.py
+++ b/plugins/modules/bigpanda.py
@@ -75,7 +75,7 @@ options:
default: "https://api.bigpanda.io"
validate_certs:
description:
- - If V(false), SSL certificates for the target URL are not validated. This should only be used on personally controlled
+ - If V(false), SSL certificates for the target URL will not be validated. This should only be used on personally controlled
sites using self-signed certificates.
required: false
default: true
@@ -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(aliases=['host']),
- env=dict(),
- owner=dict(),
- description=dict(),
- deployment_message=dict(),
- source_system=dict(default='ansible'),
+ 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'),
validate_certs=dict(default=True, type='bool'),
- url=dict(default='https://api.bigpanda.io'),
+ url=dict(required=False, default='https://api.bigpanda.io'),
),
supports_check_mode=True,
)
diff --git a/plugins/modules/bitbucket_pipeline_known_host.py b/plugins/modules/bitbucket_pipeline_known_host.py
index eb8b22b4f0..f5594dc8ac 100644
--- a/plugins/modules/bitbucket_pipeline_known_host.py
+++ b/plugins/modules/bitbucket_pipeline_known_host.py
@@ -13,7 +13,8 @@ module: bitbucket_pipeline_known_host
short_description: Manages Bitbucket pipeline known hosts
description:
- Manages Bitbucket pipeline known hosts under the "SSH Keys" menu.
- - The host fingerprint is retrieved automatically, but in case of an error, one can use O(key) field to specify it manually.
+ - The host fingerprint will be retrieved automatically, but in case of an error, one can use O(key) field to specify it
+ manually.
author:
- Evgeniy Krysanov (@catcombo)
extends_documentation_fragment:
diff --git a/plugins/modules/bootc_manage.py b/plugins/modules/bootc_manage.py
index da92c02b06..44444960df 100644
--- a/plugins/modules/bootc_manage.py
+++ b/plugins/modules/bootc_manage.py
@@ -20,7 +20,7 @@ options:
state:
description:
- Control whether to apply the latest image or switch the image.
- - B(Note:) This does not reboot the system.
+ - B(Note:) This will not reboot the system.
- Please use M(ansible.builtin.reboot) to reboot the system.
required: true
type: str
@@ -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'),
+ image=dict(type='str', required=False),
)
module = AnsibleModule(
argument_spec=argument_spec,
diff --git a/plugins/modules/bower.py b/plugins/modules/bower.py
index 547152fa98..3e7ebdaecc 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(),
+ name=dict(default=None),
offline=dict(default=False, type='bool'),
production=dict(default=False, type='bool'),
path=dict(required=True, type='path'),
- relative_execpath=dict(type='path'),
+ relative_execpath=dict(default=None, required=False, type='path'),
state=dict(default='present', choices=['present', 'absent', 'latest', ]),
- version=dict(),
+ version=dict(default=None),
)
module = AnsibleModule(
argument_spec=arg_spec
diff --git a/plugins/modules/btrfs_info.py b/plugins/modules/btrfs_info.py
index 9467fb782d..0e432dfaff 100644
--- a/plugins/modules/btrfs_info.py
+++ b/plugins/modules/btrfs_info.py
@@ -64,7 +64,7 @@ filesystems:
mountpoints:
description: Paths where the subvolume is mounted on the targeted host.
type: list
- sample: ["/home"]
+ sample: ['/home']
parent:
description: The identifier of this subvolume's parent.
type: int
diff --git a/plugins/modules/btrfs_subvolume.py b/plugins/modules/btrfs_subvolume.py
index 3c34ef4680..7e085d6103 100644
--- a/plugins/modules/btrfs_subvolume.py
+++ b/plugins/modules/btrfs_subvolume.py
@@ -64,9 +64,9 @@ options:
no change is required. Warning, this option does not yet verify that the target subvolume was generated from a snapshot
of the requested source.
- V(clobber) - If a subvolume already exists at the requested location, delete it first. This option is not idempotent
- and results in a new snapshot being generated on every execution.
+ and will result in a new snapshot being generated on every execution.
- V(error) - If a subvolume already exists at the requested location, return an error. This option is not idempotent
- and results in an error on replay of the module.
+ and will result in an error on replay of the module.
type: str
choices: [skip, clobber, error]
default: skip
@@ -80,8 +80,8 @@ options:
notes:
- If any or all of the options O(filesystem_device), O(filesystem_label) or O(filesystem_uuid) parameters are provided,
there is expected to be a matching btrfs filesystem. If none are provided and only a single btrfs filesystem exists or
- only a single btrfs filesystem is mounted, that filesystem is used; otherwise, the module takes no action and returns an
- error.
+ only a single btrfs filesystem is mounted, that filesystem will be used; otherwise, the module will take no action and
+ return an error.
extends_documentation_fragment:
- community.general.attributes
@@ -180,7 +180,7 @@ filesystem:
mountpoints:
description: Paths where the subvolume is mounted on the targeted host.
type: list
- sample: ["/home"]
+ sample: ['/home']
parent:
description: The identifier of this subvolume's parent.
type: int
@@ -644,16 +644,16 @@ class BtrfsSubvolumeModule(object):
def run_module():
module_args = dict(
- 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'),
+ 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),
name=dict(type='str', required=True),
recursive=dict(type='bool', default=False),
- 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'])
+ 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'])
)
module = AnsibleModule(
diff --git a/plugins/modules/bundler.py b/plugins/modules/bundler.py
index 6bf2556110..bfd7fe7ec1 100644
--- a/plugins/modules/bundler.py
+++ b/plugins/modules/bundler.py
@@ -36,13 +36,13 @@ options:
type: path
description:
- The directory to execute the bundler commands from. This directory needs to contain a valid Gemfile or .bundle/ directory.
- - If not specified, it defaults to the temporary working directory.
+ - If not specified, it will default to the temporary working directory.
exclude_groups:
type: list
elements: str
description:
- A list of Gemfile groups to exclude during operations. This only applies when O(state=present). Bundler considers
- this a 'remembered' property for the Gemfile and automatically excludes groups in future operations even if O(exclude_groups)
+ this a 'remembered' property for the Gemfile and will automatically exclude groups in future operations even if O(exclude_groups)
is not set.
clean:
description:
@@ -53,7 +53,7 @@ options:
type: path
description:
- Only applies if O(state=present). The path to the gemfile to use to install gems.
- - If not specified it defaults to the Gemfile in current directory.
+ - If not specified it will default to the Gemfile in current directory.
local:
description:
- If set only installs gems from the cache on the target host.
@@ -61,8 +61,8 @@ options:
default: false
deployment_mode:
description:
- - Only applies if O(state=present). If set it installs gems in C(./vendor/bundle) instead of the default location. Requires
- a C(Gemfile.lock) file to have been created prior.
+ - Only applies if O(state=present). If set it will install gems in C(./vendor/bundle) instead of the default location.
+ Requires a C(Gemfile.lock) file to have been created prior.
type: bool
default: false
user_install:
@@ -75,12 +75,12 @@ options:
description:
- Only applies if O(state=present). Specifies the directory to install the gems into. If O(chdir) is set then this path
is relative to O(chdir).
- - If not specified the default RubyGems gem paths are used.
+ - If not specified the default RubyGems gem paths will be used.
binstub_directory:
type: path
description:
- Only applies if O(state=present). Specifies the directory to install any gem bins files to. When executed the bin
- files run within the context of the Gemfile and fail if any required gem dependencies are not installed. If O(chdir)
+ files will run within the context of the Gemfile and fail if any required gem dependencies are not installed. If O(chdir)
is set then this path is relative to O(chdir).
extra_args:
type: str
@@ -131,18 +131,18 @@ def get_bundler_executable(module):
def main():
module = AnsibleModule(
argument_spec=dict(
- 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(),
+ 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),
),
supports_check_mode=True
)
diff --git a/plugins/modules/bzr.py b/plugins/modules/bzr.py
index d6368ce517..7a4512a5dd 100644
--- a/plugins/modules/bzr.py
+++ b/plugins/modules/bzr.py
@@ -42,12 +42,12 @@ options:
type: str
force:
description:
- - If V(true), any modified files in the working tree is discarded.
+ - If V(true), any modified files in the working tree will be discarded.
type: bool
default: false
executable:
description:
- - Path to C(bzr) executable to use. If not supplied, the normal mechanism for resolving binary paths is used.
+ - Path to bzr executable to use. If not supplied, the normal mechanism for resolving binary paths will be used.
type: str
"""
@@ -80,7 +80,7 @@ class Bzr(object):
def get_version(self):
'''samples the version of the bzr branch'''
- cmd = [self.bzr_path, "revno"]
+ cmd = "%s revno" % self.bzr_path
rc, stdout, stderr = self.module.run_command(cmd, cwd=self.dest)
revno = stdout.strip()
return revno
@@ -100,7 +100,7 @@ class Bzr(object):
def has_local_mods(self):
- cmd = [self.bzr_path, "status", "-S"]
+ cmd = "%s status -S" % self.bzr_path
rc, stdout, stderr = self.module.run_command(cmd, cwd=self.dest)
lines = stdout.splitlines()
diff --git a/plugins/modules/campfire.py b/plugins/modules/campfire.py
index 128790c372..6d9d2f5e18 100644
--- a/plugins/modules/campfire.py
+++ b/plugins/modules/campfire.py
@@ -14,7 +14,7 @@ module: campfire
short_description: Send a message to Campfire
description:
- Send a message to Campfire.
- - Messages with newlines result in a "Paste" message being sent.
+ - Messages with newlines will result in a "Paste" message being sent.
extends_documentation_fragment:
- community.general.attributes
attributes:
@@ -137,7 +137,8 @@ def main():
token=dict(required=True, no_log=True),
room=dict(required=True),
msg=dict(required=True),
- notify=dict(choices=["56k", "bell", "bezos", "bueller",
+ notify=dict(required=False,
+ 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 625de99b44..088c15e4f6 100644
--- a/plugins/modules/capabilities.py
+++ b/plugins/modules/capabilities.py
@@ -40,10 +40,10 @@ options:
choices: [absent, present]
default: present
notes:
- - The capabilities system automatically transforms operators and flags into the effective set, so for example, C(cap_foo=ep)
- probably becomes C(cap_foo+ep).
- - This module does not attempt to determine the final operator and flags to compare, so you want to ensure that your capabilities
- argument matches the final capabilities.
+ - The capabilities system will automatically transform operators and flags into the effective set, so for example, C(cap_foo=ep)
+ will probably become C(cap_foo+ep).
+ - This module does not attempt to determine the final operator and flags to compare, so you will want to ensure that your
+ capabilities argument matches the final capabilities.
author:
- Nate Coraor (@natefoo)
"""
@@ -109,7 +109,7 @@ class CapabilitiesModule(object):
def getcap(self, path):
rval = []
- cmd = [self.getcap_cmd, "-v", path]
+ cmd = "%s -v %s" % (self.getcap_cmd, path)
rc, stdout, stderr = self.module.run_command(cmd)
# If file xattrs are set but no caps are set the output will be:
# '/foo ='
@@ -123,8 +123,6 @@ 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
@@ -144,7 +142,7 @@ class CapabilitiesModule(object):
def setcap(self, path, caps):
caps = ' '.join([''.join(cap) for cap in caps])
- cmd = [self.setcap_cmd, caps, path]
+ cmd = "%s '%s' %s" % (self.setcap_cmd, caps, path)
rc, stdout, stderr = self.module.run_command(cmd)
if rc != 0:
self.module.fail_json(msg="Unable to set capabilities of %s" % path, stdout=stdout, stderr=stderr)
diff --git a/plugins/modules/cargo.py b/plugins/modules/cargo.py
index c00983fade..4ad4b84396 100644
--- a/plugins/modules/cargo.py
+++ b/plugins/modules/cargo.py
@@ -28,7 +28,7 @@ options:
executable:
description:
- Path to the C(cargo) installed in the system.
- - If not specified, the module looks for C(cargo) in E(PATH).
+ - If not specified, the module will look C(cargo) in E(PATH).
type: path
version_added: 7.5.0
name:
@@ -39,11 +39,11 @@ options:
required: true
path:
description: The base path where to install the Rust packages. Cargo automatically appends V(/bin). In other words, V(/usr/local)
- becomes V(/usr/local/bin).
+ will become V(/usr/local/bin).
type: path
version:
- description: The version to install. If O(name) contains multiple values, the module tries to install all of them in this
- version.
+ description: The version to install. If O(name) contains multiple values, the module will try to install all of them in
+ this version.
type: str
required: false
locked:
@@ -247,14 +247,14 @@ class Cargo(object):
def main():
arg_spec = dict(
- executable=dict(type="path"),
+ executable=dict(default=None, type="path"),
name=dict(required=True, type="list", elements="str"),
- path=dict(type="path"),
+ path=dict(default=None, type="path"),
state=dict(default="present", choices=["present", "absent", "latest"]),
- version=dict(type="str"),
+ version=dict(default=None, type="str"),
locked=dict(default=False, type="bool"),
- directory=dict(type="path"),
- features=dict(default=[], type="list", elements="str"),
+ directory=dict(default=None, type="path"),
+ features=dict(default=[], required=False, 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 448de5d13d..5329c90f54 100644
--- a/plugins/modules/catapult.py
+++ b/plugins/modules/catapult.py
@@ -16,12 +16,6 @@ module: catapult
short_description: Send a sms / mms using the catapult bandwidth API
description:
- Allows notifications to be sent using SMS / MMS using the catapult bandwidth API.
-deprecated:
- removed_in: 13.0.0
- why: >-
- DNS fails to resolve the API endpoint used by the module since Oct 2024.
- See L(the associated issue, https://github.com/ansible-collections/community.general/issues/10318) for details.
- alternative: There is none.
extends_documentation_fragment:
- community.general.attributes
attributes:
@@ -95,6 +89,14 @@ EXAMPLES = r"""
api_secret: "{{ api_secret }}"
"""
+RETURN = r"""
+changed:
+ description: Whether the API accepted the message.
+ returned: always
+ type: bool
+ sample: true
+"""
+
import json
@@ -130,7 +132,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(),
+ media=dict(default=None, required=False),
),
)
diff --git a/plugins/modules/cisco_webex.py b/plugins/modules/cisco_webex.py
index f957f4121d..14b8716846 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(default='text', aliases=['message_type'], choices=['text', 'markdown']),
+ msg_type=dict(required=False, 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/cloud_init_data_facts.py b/plugins/modules/cloud_init_data_facts.py
index 544a663e5c..dd9825858e 100644
--- a/plugins/modules/cloud_init_data_facts.py
+++ b/plugins/modules/cloud_init_data_facts.py
@@ -50,41 +50,38 @@ cloud_init_data_facts:
description: Facts of result and status.
returned: success
type: dict
- sample:
- {
- "status": {
+ sample: '{
+ "status": {
"v1": {
- "datasource": "DataSourceCloudStack",
- "errors": []
- }
- },
- "result": {
+ "datasource": "DataSourceCloudStack",
+ "errors": []
+ },
+ "result": {
"v1": {
- "datasource": "DataSourceCloudStack",
- "init": {
- "errors": [],
- "finished": 1522066377.0185432,
- "start": 1522066375.2648022
- },
- "init-local": {
- "errors": [],
- "finished": 1522066373.70919,
- "start": 1522066373.4726632
- },
- "modules-config": {
- "errors": [],
- "finished": 1522066380.9097016,
- "start": 1522066379.0011985
- },
- "modules-final": {
- "errors": [],
- "finished": 1522066383.56594,
- "start": 1522066382.3449218
- },
- "stage": null
+ "datasource": "DataSourceCloudStack",
+ "init": {
+ "errors": [],
+ "finished": 1522066377.0185432,
+ "start": 1522066375.2648022
+ },
+ "init-local": {
+ "errors": [],
+ "finished": 1522066373.70919,
+ "start": 1522066373.4726632
+ },
+ "modules-config": {
+ "errors": [],
+ "finished": 1522066380.9097016,
+ "start": 1522066379.0011985
+ },
+ "modules-final": {
+ "errors": [],
+ "finished": 1522066383.56594,
+ "start": 1522066382.3449218
+ },
+ "stage": null
}
- }
- }
+ }'
"""
import os
diff --git a/plugins/modules/cloudflare_dns.py b/plugins/modules/cloudflare_dns.py
index fafca00b50..0fd0f5ffcc 100644
--- a/plugins/modules/cloudflare_dns.py
+++ b/plugins/modules/cloudflare_dns.py
@@ -127,7 +127,7 @@ options:
description:
- Whether the record should be the only one for that record type and record name.
- Only use with O(state=present).
- - This deletes all other records with the same record name and type.
+ - This will delete all other records with the same record name and type.
type: bool
state:
description:
@@ -157,9 +157,8 @@ options:
- The type of DNS record to create. Required if O(state=present).
- Support for V(SPF) has been removed from community.general 9.0.0 since that record type is no longer supported by
CloudFlare.
- - Support for V(PTR) has been added in community.general 11.1.0.
type: str
- choices: [A, AAAA, CNAME, DS, MX, NS, SRV, SSHFP, TLSA, CAA, TXT, PTR]
+ choices: [A, AAAA, CNAME, DS, MX, NS, SRV, SSHFP, TLSA, CAA, TXT]
value:
description:
- The record value.
@@ -312,14 +311,6 @@ EXAMPLES = r"""
algorithm: 8
hash_type: 2
value: B4EB5AC4467D2DFB3BAF9FB9961DC1B6FED54A58CDFAA3E465081EC86F89BFAB
-
-- name: Create PTR record "1.2.0.192.in-addr.arpa" with value "test.example.com"
- community.general.cloudflare_dns:
- zone: 2.0.192.in-addr.arpa
- record: 1
- type: PTR
- value: test.example.com
- state: present
"""
RETURN = r"""
@@ -378,7 +369,10 @@ record:
description: Extra Cloudflare-specific information about the record.
returned: success
type: dict
- sample: {"auto_added": false}
+ sample:
+ {
+ "auto_added": false
+ }
modified_on:
description: Record modification date.
returned: success
@@ -409,7 +403,7 @@ record:
returned: success
type: list
elements: str
- sample: ["production", "app"]
+ sample: ['production', 'app']
version_added: 10.1.0
tags_modified_on:
description: When the record tags were last modified. Omitted if there are no tags.
@@ -448,11 +442,9 @@ from ansible.module_utils.urls import fetch_url
def lowercase_string(param):
- return param.lower() if isinstance(param, str) else param
-
-
-def join_str(sep, *args):
- return sep.join([str(arg) for arg in args])
+ if not isinstance(param, str):
+ return param
+ return param.lower()
class CloudflareAPI(object):
@@ -498,29 +490,29 @@ class CloudflareAPI(object):
if (self.type == 'AAAA') and (self.value is not None):
self.value = self.value.lower()
- if self.type == 'SRV':
+ if (self.type == 'SRV'):
if (self.proto is not None) and (not self.proto.startswith('_')):
- self.proto = '_{0}'.format(self.proto)
+ self.proto = '_' + self.proto
if (self.service is not None) and (not self.service.startswith('_')):
- self.service = '_{0}'.format(self.service)
+ self.service = '_' + self.service
- if self.type == 'TLSA':
+ if (self.type == 'TLSA'):
if (self.proto is not None) and (not self.proto.startswith('_')):
- self.proto = '_{0}'.format(self.proto)
+ self.proto = '_' + self.proto
if (self.port is not None):
- self.port = '_{0}'.format(self.port)
+ self.port = '_' + str(self.port)
if not self.record.endswith(self.zone):
- self.record = join_str('.', self.record, self.zone)
+ self.record = self.record + '.' + self.zone
- if self.type == 'DS':
+ if (self.type == 'DS'):
if self.record == self.zone:
self.module.fail_json(msg="DS records only apply to subdomains.")
def _cf_simple_api_call(self, api_call, method='GET', payload=None):
if self.api_token:
headers = {
- 'Authorization': 'Bearer {0}'.format(self.api_token),
+ 'Authorization': 'Bearer ' + self.api_token,
'Content-Type': 'application/json',
}
else:
@@ -620,7 +612,7 @@ class CloudflareAPI(object):
else:
raw_api_call = api_call
while next_page <= pagination['total_pages']:
- raw_api_call += '?{0}'.format('&'.join(parameters))
+ raw_api_call += '?' + '&'.join(parameters)
result, status = self._cf_simple_api_call(raw_api_call, method, payload)
data += result['result']
next_page += 1
@@ -645,8 +637,8 @@ class CloudflareAPI(object):
name = self.zone
param = ''
if name:
- param = '?{0}'.format(urlencode({'name': name}))
- zones, status = self._cf_api_call('/zones{0}'.format(param))
+ param = '?' + urlencode({'name': name})
+ zones, status = self._cf_api_call('/zones' + param)
return zones
def get_dns_records(self, zone_name=None, type=None, record=None, value=''):
@@ -671,40 +663,48 @@ class CloudflareAPI(object):
if value:
query['content'] = value
if query:
- api_call += '?{0}'.format(urlencode(query))
+ api_call += '?' + urlencode(query)
records, status = self._cf_api_call(api_call)
return records
- def delete_dns_records(self, solo):
+ def delete_dns_records(self, **kwargs):
+ params = {}
+ for param in ['port', 'proto', 'service', 'solo', 'type', 'record', 'value', 'weight', 'zone',
+ 'algorithm', 'cert_usage', 'hash_type', 'selector', 'key_tag', 'flag', 'tag']:
+ if param in kwargs:
+ params[param] = kwargs[param]
+ else:
+ params[param] = getattr(self, param)
+
records = []
- content = self.value
- search_record = self.record
- if self.type == 'SRV':
- if not (self.value is None or self.value == ''):
- content = join_str('\t', self.weight, self.port, self.value)
- search_record = join_str('.', self.service, self.proto, self.record)
- elif self.type == 'DS':
- if not (self.value is None or self.value == ''):
- content = join_str('\t', self.key_tag, self.algorithm, self.hash_type, self.value)
- elif self.type == 'SSHFP':
- if not (self.value is None or self.value == ''):
- content = join_str(' ', self.algorithm, self.hash_type, self.value.upper())
- elif self.type == 'TLSA':
- if not (self.value is None or self.value == ''):
- content = join_str('\t', self.cert_usage, self.selector, self.hash_type, self.value)
- search_record = join_str('.', self.port, self.proto, self.record)
- if solo:
+ content = params['value']
+ search_record = params['record']
+ if params['type'] == 'SRV':
+ if not (params['value'] is None or params['value'] == ''):
+ content = str(params['weight']) + '\t' + str(params['port']) + '\t' + params['value']
+ search_record = params['service'] + '.' + params['proto'] + '.' + params['record']
+ elif params['type'] == 'DS':
+ if not (params['value'] is None or params['value'] == ''):
+ content = str(params['key_tag']) + '\t' + str(params['algorithm']) + '\t' + str(params['hash_type']) + '\t' + params['value']
+ elif params['type'] == 'SSHFP':
+ if not (params['value'] is None or params['value'] == ''):
+ content = str(params['algorithm']) + ' ' + str(params['hash_type']) + ' ' + params['value'].upper()
+ elif params['type'] == 'TLSA':
+ if not (params['value'] is None or params['value'] == ''):
+ content = str(params['cert_usage']) + '\t' + str(params['selector']) + '\t' + str(params['hash_type']) + '\t' + params['value']
+ search_record = params['port'] + '.' + params['proto'] + '.' + params['record']
+ if params['solo']:
search_value = None
else:
search_value = content
- zone_id = self._get_zone_id(self.zone)
- records = self.get_dns_records(self.zone, self.type, search_record, search_value)
+ zone_id = self._get_zone_id(params['zone'])
+ records = self.get_dns_records(params['zone'], params['type'], search_record, search_value)
for rr in records:
- if solo:
- if not ((rr['type'] == self.type) and (rr['name'] == search_record) and (rr['content'] == content)):
+ if params['solo']:
+ if not ((rr['type'] == params['type']) and (rr['name'] == search_record) and (rr['content'] == content)):
self.changed = True
if not self.module.check_mode:
result, info = self._cf_api_call('/zones/{0}/dns_records/{1}'.format(zone_id, rr['id']), 'DELETE')
@@ -714,146 +714,156 @@ class CloudflareAPI(object):
result, info = self._cf_api_call('/zones/{0}/dns_records/{1}'.format(zone_id, rr['id']), 'DELETE')
return self.changed
- def ensure_dns_record(self):
- search_value = self.value
- search_record = self.record
- new_record = None
+ def ensure_dns_record(self, **kwargs):
+ params = {}
+ for param in ['port', 'priority', 'proto', 'proxied', 'service', 'ttl', 'type', 'record', 'value', 'weight', 'zone',
+ 'algorithm', 'cert_usage', 'hash_type', 'selector', 'key_tag', 'flag', 'tag', 'tags', 'comment']:
+ if param in kwargs:
+ params[param] = kwargs[param]
+ else:
+ params[param] = getattr(self, param)
- if self.type in ['A', 'AAAA', 'CNAME', 'TXT', 'MX', 'NS', 'PTR']:
- if not self.value:
+ search_value = params['value']
+ search_record = params['record']
+ new_record = None
+ if (params['type'] is None) or (params['record'] is None):
+ self.module.fail_json(msg="You must provide a type and a record to create a new record")
+
+ if (params['type'] in ['A', 'AAAA', 'CNAME', 'TXT', 'MX', 'NS']):
+ if not params['value']:
self.module.fail_json(msg="You must provide a non-empty value to create this record type")
# there can only be one CNAME per record
# ignoring the value when searching for existing
# CNAME records allows us to update the value if it
# changes
- if self.type == 'CNAME':
+ if params['type'] == 'CNAME':
search_value = None
new_record = {
- "type": self.type,
- "name": self.record,
- "content": self.value,
- "ttl": self.ttl
+ "type": params['type'],
+ "name": params['record'],
+ "content": params['value'],
+ "ttl": params['ttl']
}
- if self.type in ['A', 'AAAA', 'CNAME']:
- new_record["proxied"] = self.proxied
+ if (params['type'] in ['A', 'AAAA', 'CNAME']):
+ new_record["proxied"] = params["proxied"]
- if self.type == 'MX':
- for attr in [self.priority, self.value]:
+ if params['type'] == 'MX':
+ for attr in [params['priority'], params['value']]:
if (attr is None) or (attr == ''):
self.module.fail_json(msg="You must provide priority and a value to create this record type")
new_record = {
- "type": self.type,
- "name": self.record,
- "content": self.value,
- "priority": self.priority,
- "ttl": self.ttl
+ "type": params['type'],
+ "name": params['record'],
+ "content": params['value'],
+ "priority": params['priority'],
+ "ttl": params['ttl']
}
- if self.type == 'SRV':
- for attr in [self.port, self.priority, self.proto, self.service, self.weight, self.value]:
+ if params['type'] == 'SRV':
+ for attr in [params['port'], params['priority'], params['proto'], params['service'], params['weight'], params['value']]:
if (attr is None) or (attr == ''):
self.module.fail_json(msg="You must provide port, priority, proto, service, weight and a value to create this record type")
srv_data = {
- "target": self.value,
- "port": self.port,
- "weight": self.weight,
- "priority": self.priority,
+ "target": params['value'],
+ "port": params['port'],
+ "weight": params['weight'],
+ "priority": params['priority'],
}
new_record = {
- "type": self.type,
- "name": join_str('.', self.service, self.proto, self.record),
- "ttl": self.ttl,
+ "type": params['type'],
+ "name": params['service'] + '.' + params['proto'] + '.' + params['record'],
+ "ttl": params['ttl'],
'data': srv_data,
}
- search_value = join_str('\t', self.weight, self.port, self.value)
- search_record = join_str('.', self.service, self.proto, self.record)
+ search_value = str(params['weight']) + '\t' + str(params['port']) + '\t' + params['value']
+ search_record = params['service'] + '.' + params['proto'] + '.' + params['record']
- if self.type == 'DS':
- for attr in [self.key_tag, self.algorithm, self.hash_type, self.value]:
+ if params['type'] == 'DS':
+ for attr in [params['key_tag'], params['algorithm'], params['hash_type'], params['value']]:
if (attr is None) or (attr == ''):
self.module.fail_json(msg="You must provide key_tag, algorithm, hash_type and a value to create this record type")
ds_data = {
- "key_tag": self.key_tag,
- "algorithm": self.algorithm,
- "digest_type": self.hash_type,
- "digest": self.value,
+ "key_tag": params['key_tag'],
+ "algorithm": params['algorithm'],
+ "digest_type": params['hash_type'],
+ "digest": params['value'],
}
new_record = {
- "type": self.type,
- "name": self.record,
+ "type": params['type'],
+ "name": params['record'],
'data': ds_data,
- "ttl": self.ttl,
+ "ttl": params['ttl'],
}
- search_value = join_str('\t', self.key_tag, self.algorithm, self.hash_type, self.value)
+ search_value = str(params['key_tag']) + '\t' + str(params['algorithm']) + '\t' + str(params['hash_type']) + '\t' + params['value']
- if self.type == 'SSHFP':
- for attr in [self.algorithm, self.hash_type, self.value]:
+ if params['type'] == 'SSHFP':
+ for attr in [params['algorithm'], params['hash_type'], params['value']]:
if (attr is None) or (attr == ''):
self.module.fail_json(msg="You must provide algorithm, hash_type and a value to create this record type")
sshfp_data = {
- "fingerprint": self.value.upper(),
- "type": self.hash_type,
- "algorithm": self.algorithm,
+ "fingerprint": params['value'].upper(),
+ "type": params['hash_type'],
+ "algorithm": params['algorithm'],
}
new_record = {
- "type": self.type,
- "name": self.record,
+ "type": params['type'],
+ "name": params['record'],
'data': sshfp_data,
- "ttl": self.ttl,
+ "ttl": params['ttl'],
}
- search_value = join_str(' ', self.algorithm, self.hash_type, self.value)
+ search_value = str(params['algorithm']) + ' ' + str(params['hash_type']) + ' ' + params['value']
- if self.type == 'TLSA':
- for attr in [self.port, self.proto, self.cert_usage, self.selector, self.hash_type, self.value]:
+ if params['type'] == 'TLSA':
+ for attr in [params['port'], params['proto'], params['cert_usage'], params['selector'], params['hash_type'], params['value']]:
if (attr is None) or (attr == ''):
self.module.fail_json(msg="You must provide port, proto, cert_usage, selector, hash_type and a value to create this record type")
- search_record = join_str('.', self.port, self.proto, self.record)
+ search_record = params['port'] + '.' + params['proto'] + '.' + params['record']
tlsa_data = {
- "usage": self.cert_usage,
- "selector": self.selector,
- "matching_type": self.hash_type,
- "certificate": self.value,
+ "usage": params['cert_usage'],
+ "selector": params['selector'],
+ "matching_type": params['hash_type'],
+ "certificate": params['value'],
}
new_record = {
- "type": self.type,
+ "type": params['type'],
"name": search_record,
'data': tlsa_data,
- "ttl": self.ttl,
+ "ttl": params['ttl'],
}
- search_value = join_str('\t', self.cert_usage, self.selector, self.hash_type, self.value)
+ search_value = str(params['cert_usage']) + '\t' + str(params['selector']) + '\t' + str(params['hash_type']) + '\t' + params['value']
- if self.type == 'CAA':
- for attr in [self.flag, self.tag, self.value]:
- if attr == '':
+ if params['type'] == 'CAA':
+ for attr in [params['flag'], params['tag'], params['value']]:
+ if (attr is None) or (attr == ''):
self.module.fail_json(msg="You must provide flag, tag and a value to create this record type")
caa_data = {
- "flags": self.flag,
- "tag": self.tag,
- "value": self.value,
+ "flags": params['flag'],
+ "tag": params['tag'],
+ "value": params['value'],
}
new_record = {
- "type": self.type,
- "name": self.record,
+ "type": params['type'],
+ "name": params['record'],
'data': caa_data,
- "ttl": self.ttl,
+ "ttl": params['ttl'],
}
search_value = None
- new_record['comment'] = self.comment or None
- new_record['tags'] = self.tags or []
+ new_record['comment'] = params['comment'] or None
+ new_record['tags'] = params['tags'] or []
- zone_id = self._get_zone_id(self.zone)
- records = self.get_dns_records(self.zone, self.type, search_record, search_value)
+ zone_id = self._get_zone_id(params['zone'])
+ records = self.get_dns_records(params['zone'], params['type'], search_record, search_value)
# in theory this should be impossible as cloudflare does not allow
# the creation of duplicate records but lets cover it anyways
if len(records) > 1:
# As Cloudflare API cannot filter record containing quotes
# CAA records must be compared locally
- if self.type == 'CAA':
+ if params['type'] == 'CAA':
for rr in records:
if rr['data']['flags'] == caa_data['flags'] and rr['data']['tag'] == caa_data['tag'] and rr['data']['value'] == caa_data['value']:
return rr, self.changed
@@ -863,16 +873,16 @@ class CloudflareAPI(object):
if len(records) == 1:
cur_record = records[0]
do_update = False
- if (self.ttl is not None) and (cur_record['ttl'] != self.ttl):
+ if (params['ttl'] is not None) and (cur_record['ttl'] != params['ttl']):
do_update = True
- if (self.priority is not None) and ('priority' in cur_record) and (cur_record['priority'] != self.priority):
+ if (params['priority'] is not None) and ('priority' in cur_record) and (cur_record['priority'] != params['priority']):
do_update = True
- if ('proxied' in new_record) and ('proxied' in cur_record) and (cur_record['proxied'] != self.proxied):
+ if ('proxied' in new_record) and ('proxied' in cur_record) and (cur_record['proxied'] != params['proxied']):
do_update = True
if ('data' in new_record) and ('data' in cur_record):
- if cur_record['data'] != new_record['data']:
+ if (cur_record['data'] != new_record['data']):
do_update = True
- if (self.type == 'CNAME') and (cur_record['content'] != new_record['content']):
+ if (params['type'] == 'CNAME') and (cur_record['content'] != new_record['content']):
do_update = True
if cur_record['comment'] != new_record['comment']:
do_update = True
@@ -898,9 +908,14 @@ class CloudflareAPI(object):
def main():
module = AnsibleModule(
argument_spec=dict(
- api_token=dict(type="str", no_log=True, fallback=(env_fallback, ["CLOUDFLARE_TOKEN"])),
- account_api_key=dict(type='str', no_log=True, aliases=['account_api_token']),
- account_email=dict(type='str'),
+ api_token=dict(
+ type="str",
+ required=False,
+ no_log=True,
+ fallback=(env_fallback, ["CLOUDFLARE_TOKEN"]),
+ ),
+ account_api_key=dict(type='str', required=False, no_log=True, aliases=['account_api_token']),
+ account_email=dict(type='str', required=False),
algorithm=dict(type='int'),
cert_usage=dict(type='int', choices=[0, 1, 2, 3]),
comment=dict(type='str'),
@@ -920,7 +935,7 @@ def main():
state=dict(type='str', default='present', choices=['absent', 'present']),
timeout=dict(type='int', default=30),
ttl=dict(type='int', default=1),
- type=dict(type='str', choices=['A', 'AAAA', 'CNAME', 'DS', 'MX', 'NS', 'SRV', 'SSHFP', 'TLSA', 'CAA', 'TXT', 'PTR']),
+ type=dict(type='str', choices=['A', 'AAAA', 'CNAME', 'DS', 'MX', 'NS', 'SRV', 'SSHFP', 'TLSA', 'CAA', 'TXT']),
value=dict(type='str', aliases=['content']),
weight=dict(type='int', default=1),
zone=dict(type='str', required=True, aliases=['domain']),
@@ -929,21 +944,20 @@ def main():
required_if=[
('state', 'present', ['record', 'type', 'value']),
('state', 'absent', ['record']),
- ('type', 'SRV', ['proto', 'service', 'value']),
+ ('type', 'SRV', ['proto', 'service']),
('type', 'TLSA', ['proto', 'port']),
- ('type', 'CAA', ['flag', 'tag', 'value']),
- ],
- required_together=[
- ('account_api_key', 'account_email'),
- ],
- required_one_of=[
- ['api_token', 'account_api_key'],
+ ('type', 'CAA', ['flag', 'tag']),
],
)
+ if not module.params['api_token'] and not (module.params['account_api_key'] and module.params['account_email']):
+ module.fail_json(msg="Either api_token or account_api_key and account_email params are required.")
if module.params['type'] == 'SRV':
- if not module.params['value'] == '':
- module.fail_json(msg="For SRV records the params weight, port and value all need to be defined.")
+ if not ((module.params['weight'] is not None and module.params['port'] is not None
+ and not (module.params['value'] is None or module.params['value'] == ''))
+ or (module.params['weight'] is None and module.params['port'] is None
+ and (module.params['value'] is None or module.params['value'] == ''))):
+ module.fail_json(msg="For SRV records the params weight, port and value all need to be defined, or not at all.")
if module.params['type'] == 'SSHFP':
if not ((module.params['algorithm'] is not None and module.params['hash_type'] is not None
@@ -960,8 +974,11 @@ def main():
module.fail_json(msg="For TLSA records the params cert_usage, selector, hash_type and value all need to be defined, or not at all.")
if module.params['type'] == 'CAA':
- if not module.params['value'] == '':
- module.fail_json(msg="For CAA records the params flag, tag and value all need to be defined.")
+ if not ((module.params['flag'] is not None and module.params['tag'] is not None
+ and not (module.params['value'] is None or module.params['value'] == ''))
+ or (module.params['flag'] is None and module.params['tag'] is None
+ and (module.params['value'] is None or module.params['value'] == ''))):
+ module.fail_json(msg="For CAA records the params flag, tag and value all need to be defined, or not at all.")
if module.params['type'] == 'DS':
if not ((module.params['key_tag'] is not None and module.params['algorithm'] is not None and module.params['hash_type'] is not None
diff --git a/plugins/modules/cobbler_sync.py b/plugins/modules/cobbler_sync.py
index b1c92a1690..95a3241b98 100644
--- a/plugins/modules/cobbler_sync.py
+++ b/plugins/modules/cobbler_sync.py
@@ -42,12 +42,12 @@ options:
type: str
use_ssl:
description:
- - If V(false), an HTTP connection is used instead of the default HTTPS connection.
+ - If V(false), an HTTP connection will be used instead of the default HTTPS connection.
type: bool
default: true
validate_certs:
description:
- - If V(false), SSL certificates are not validated.
+ - If V(false), SSL certificates will not be validated.
- This should only set to V(false) when used on personally controlled sites using self-signed certificates.
type: bool
default: true
diff --git a/plugins/modules/cobbler_system.py b/plugins/modules/cobbler_system.py
index a1a400928e..83714dbc69 100644
--- a/plugins/modules/cobbler_system.py
+++ b/plugins/modules/cobbler_system.py
@@ -42,12 +42,12 @@ options:
type: str
use_ssl:
description:
- - If V(false), an HTTP connection is used instead of the default HTTPS connection.
+ - If V(false), an HTTP connection will be used instead of the default HTTPS connection.
type: bool
default: true
validate_certs:
description:
- - If V(false), SSL certificates are not validated.
+ - If V(false), SSL certificates will not be validated.
- This should only set to V(false) when used on personally controlled sites using self-signed certificates.
type: bool
default: true
diff --git a/plugins/modules/composer.py b/plugins/modules/composer.py
index d932a5a060..6c935bfe75 100644
--- a/plugins/modules/composer.py
+++ b/plugins/modules/composer.py
@@ -17,7 +17,7 @@ author:
short_description: Dependency Manager for PHP
description:
- Composer is a tool for dependency management in PHP. It allows you to declare the dependent libraries your project needs
- and it installs them in your project for you.
+ and it will install them in your project for you.
extends_documentation_fragment:
- community.general.attributes
attributes:
@@ -45,7 +45,7 @@ options:
type: path
description:
- Directory of your project (see C(--working-dir)). This is required when the command is not run globally.
- - This is ignored if O(global_command=true).
+ - Will be ignored if O(global_command=true).
global_command:
description:
- Runs the specified command globally.
@@ -188,7 +188,7 @@ def composer_command(module, command, arguments="", options=None):
else:
composer_path = module.params['composer_executable']
- cmd = [php_path, composer_path, "global" if global_command else "", command] + options + [arguments]
+ cmd = "%s %s %s %s %s %s" % (php_path, composer_path, "global" if global_command else "", command, " ".join(options), arguments)
return module.run_command(cmd)
diff --git a/plugins/modules/consul.py b/plugins/modules/consul.py
index 9c36ba65f2..645ffe5bbd 100644
--- a/plugins/modules/consul.py
+++ b/plugins/modules/consul.py
@@ -21,8 +21,8 @@ description:
name and ID respectively by appending V(service:) Node level checks require a O(check_name) and optionally a O(check_id).
- Currently, there is no complete way to retrieve the script, interval or TTL metadata for a registered check. Without this
metadata it is not possible to tell if the data supplied with ansible represents a change to a check. As a result this
- does not attempt to determine changes and it always reports a changed occurred. An API method is planned to supply this
- metadata so at that stage change management is to be added.
+ does not attempt to determine changes and will always report a changed occurred. An API method is planned to supply this
+ metadata so at that stage change management will be added.
- See U(http://consul.io) for more details.
requirements:
- python-consul
@@ -83,25 +83,25 @@ options:
service_address:
type: str
description:
- - The address to advertise that the service is listening on. This value is passed as the C(address) parameter to Consul's
- C(/v1/agent/service/register) API method, so refer to the Consul API documentation for further details.
+ - The address to advertise that the service will be listening on. This value will be passed as the C(address) parameter
+ to Consul's C(/v1/agent/service/register) API method, so refer to the Consul API documentation for further details.
tags:
type: list
elements: str
description:
- - Tags that are attached to the service registration.
+ - Tags that will be attached to the service registration.
script:
type: str
description:
- - The script/command that is run periodically to check the health of the service.
+ - The script/command that will be run periodically to check the health of the service.
- Requires O(interval) to be provided.
- Mutually exclusive with O(ttl), O(tcp) and O(http).
interval:
type: str
description:
- - The interval at which the service check is run. This is a number with a V(s) or V(m) suffix to signify the units of
- seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) is used by default, for example V(10)
- is V(10s).
+ - The interval at which the service check will be run. This is a number with a V(s) or V(m) suffix to signify the units
+ of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) will be used by default, for example
+ V(10) will be V(10s).
- Required if one of the parameters O(script), O(http), or O(tcp) is specified.
check_id:
type: str
@@ -122,25 +122,25 @@ options:
ttl:
type: str
description:
- - Checks can be registered with a TTL instead of a O(script) and O(interval) this means that the service checks in with
- the agent before the TTL expires. If it does not the check is considered failed. Required if registering a check and
- the script an interval are missing Similar to the interval this is a number with a V(s) or V(m) suffix to signify
- the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) is used by default, for
- example V(10) is equivalent to V(10s).
+ - Checks can be registered with a TTL instead of a O(script) and O(interval) this means that the service will check
+ in with the agent before the TTL expires. If it does not the check will be considered failed. Required if registering
+ a check and the script an interval are missing Similar to the interval this is a number with a V(s) or V(m) suffix
+ to signify the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) will be used
+ by default, for example V(10) will be V(10s).
- Mutually exclusive with O(script), O(tcp) and O(http).
tcp:
type: str
description:
- - Checks can be registered with a TCP port. This means that Consul checks if the connection attempt to that port is
- successful (that is, the port is currently accepting connections). The format is V(host:port), for example V(localhost:80).
+ - Checks can be registered with a TCP port. This means that Consul will check if the connection attempt to that port
+ is successful (that is, the port is currently accepting connections). The format is V(host:port), for example V(localhost:80).
- Requires O(interval) to be provided.
- Mutually exclusive with O(script), O(ttl) and O(http).
version_added: '1.3.0'
http:
type: str
description:
- - Checks can be registered with an HTTP endpoint. This means that Consul checks that the http endpoint returns a successful
- HTTP status.
+ - Checks can be registered with an HTTP endpoint. This means that Consul will check that the http endpoint returns a
+ successful HTTP status.
- Requires O(interval) to be provided.
- Mutually exclusive with O(script), O(ttl) and O(tcp).
timeout:
@@ -148,7 +148,7 @@ options:
description:
- A custom HTTP check timeout. The Consul default is 10 seconds. Similar to the interval this is a number with a V(s)
or V(m) suffix to signify the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s)
- is used by default, for example V(10) is equivalent to V(10s).
+ will be used by default, for example V(10) will be V(10s).
token:
type: str
description:
diff --git a/plugins/modules/consul_acl_bootstrap.py b/plugins/modules/consul_acl_bootstrap.py
index ba6adf2dd3..7002c3d549 100644
--- a/plugins/modules/consul_acl_bootstrap.py
+++ b/plugins/modules/consul_acl_bootstrap.py
@@ -50,7 +50,7 @@ RETURN = r"""
result:
description:
- The bootstrap result as returned by the Consul HTTP API.
- - B(Note:) If O(bootstrap_secret) has been specified the C(SecretID) and C(ID) do not contain the secret but C(VALUE_SPECIFIED_IN_NO_LOG_PARAMETER).
+ - B(Note:) If O(bootstrap_secret) has been specified the C(SecretID) and C(ID) will not contain the secret but C(VALUE_SPECIFIED_IN_NO_LOG_PARAMETER).
If you pass O(bootstrap_secret), make sure your playbook/role does not depend on this return value!
returned: changed
type: dict
diff --git a/plugins/modules/consul_agent_check.py b/plugins/modules/consul_agent_check.py
index 51d9715e88..ca1639063c 100644
--- a/plugins/modules/consul_agent_check.py
+++ b/plugins/modules/consul_agent_check.py
@@ -17,9 +17,9 @@ description:
- Allows the addition, modification and deletion of checks in a Consul cluster using the agent. For more details on using
and configuring Checks, see U(https://developer.hashicorp.com/consul/api-docs/agent/check).
- Currently, there is no complete way to retrieve the script, interval or TTL metadata for a registered check. Without this
- metadata it is not possible to tell if the data supplied with ansible represents a change to a check. As a result, the
- module does not attempt to determine changes and it always reports a changed occurred. An API method is planned to supply
- this metadata so at that stage change management is to be added.
+ metadata it is not possible to tell if the data supplied with ansible represents a change to a check. As a result this
+ does not attempt to determine changes and will always report a changed occurred. An API method is planned to supply this
+ metadata so at that stage change management will be added.
author:
- Michael Ilg (@Ilgmi)
extends_documentation_fragment:
@@ -36,8 +36,8 @@ attributes:
diff_mode:
support: partial
details:
- - In check mode the diff shows the object as it is defined in the module options and not the object structure of the
- Consul API.
+ - In check mode the diff will show the object as it is defined in the module options and not the object structure of
+ the Consul API.
options:
state:
description:
@@ -52,13 +52,13 @@ options:
id:
description:
- Specifies a unique ID for this check on the node. This defaults to the O(name) parameter, but it may be necessary
- to provide an ID for uniqueness. This value is returned in the response as V(CheckId).
+ to provide an ID for uniqueness. This value will return in the response as "CheckId".
type: str
interval:
description:
- - The interval at which the service check is run. This is a number with a V(s) or V(m) suffix to signify the units of
- seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) is used by default, for example V(10)
- is equivalent to V(10s).
+ - The interval at which the service check will be run. This is a number with a V(s) or V(m) suffix to signify the units
+ of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) will be used by default, for example
+ V(10) will be V(10s).
- Required if one of the parameters O(args), O(http), or O(tcp) is specified.
type: str
notes:
@@ -74,11 +74,11 @@ options:
elements: str
ttl:
description:
- - Checks can be registered with a TTL instead of a O(args) and O(interval) this means that the service checks in with
- the agent before the TTL expires. If it does not the check is considered failed. Required if registering a check and
- the script an interval are missing Similar to the interval this is a number with a V(s) or V(m) suffix to signify
- the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) is used by default, for
- example V(10) is equivalent to V(10s).
+ - Checks can be registered with a TTL instead of a O(args) and O(interval) this means that the service will check in
+ with the agent before the TTL expires. If it does not the check will be considered failed. Required if registering
+ a check and the script an interval are missing Similar to the interval this is a number with a V(s) or V(m) suffix
+ to signify the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s) will be used
+ by default, for example V(10) will be V(10s).
- Mutually exclusive with O(args), O(tcp) and O(http).
type: str
tcp:
@@ -91,8 +91,8 @@ options:
version_added: '1.3.0'
http:
description:
- - Checks can be registered with an HTTP endpoint. This means that Consul checks that the HTTP endpoint returns a successful
- HTTP status.
+ - Checks can be registered with an HTTP endpoint. This means that Consul will check that the http endpoint returns a
+ successful HTTP status.
- Requires O(interval) to be provided.
- Mutually exclusive with O(args), O(ttl) and O(tcp).
type: str
@@ -100,7 +100,7 @@ options:
description:
- A custom HTTP check timeout. The Consul default is 10 seconds. Similar to the interval this is a number with a V(s)
or V(m) suffix to signify the units of seconds or minutes, for example V(15s) or V(1m). If no suffix is supplied V(s)
- is used by default, for example V(10) is equivalent to V(10s).
+ will be used by default, for example V(10) will be V(10s).
type: str
service_id:
description:
diff --git a/plugins/modules/consul_agent_service.py b/plugins/modules/consul_agent_service.py
index 882e45dceb..bd28dfd2c3 100644
--- a/plugins/modules/consul_agent_service.py
+++ b/plugins/modules/consul_agent_service.py
@@ -31,7 +31,7 @@ attributes:
diff_mode:
support: partial
details:
- - In check mode the diff misses operational attributes.
+ - In check mode the diff will miss operational attributes.
options:
state:
description:
@@ -50,13 +50,13 @@ options:
type: str
tags:
description:
- - Tags that are attached to the service registration.
+ - Tags that will be attached to the service registration.
type: list
elements: str
address:
description:
- - The address to advertise that the service listens on. This value is passed as the C(address) parameter to Consul's
- C(/v1/agent/service/register) API method, so refer to the Consul API documentation for further details.
+ - The address to advertise that the service will be listening on. This value will be passed as the C(address) parameter
+ to Consul's C(/v1/agent/service/register) API method, so refer to the Consul API documentation for further details.
type: str
meta:
description:
diff --git a/plugins/modules/consul_auth_method.py b/plugins/modules/consul_auth_method.py
index 4658f906e3..a5cfd3b305 100644
--- a/plugins/modules/consul_auth_method.py
+++ b/plugins/modules/consul_auth_method.py
@@ -29,7 +29,7 @@ attributes:
diff_mode:
support: partial
details:
- - In check mode the diff misses operational attributes.
+ - In check mode the diff will miss operational attributes.
options:
state:
description:
@@ -71,7 +71,7 @@ options:
config:
description:
- The raw configuration to use for the chosen auth method.
- - Contents vary depending upon the O(type) chosen.
+ - Contents will vary depending upon the type chosen.
- Required when the auth method is created.
type: dict
"""
diff --git a/plugins/modules/consul_binding_rule.py b/plugins/modules/consul_binding_rule.py
index 0a4531fdf7..698ba5913f 100644
--- a/plugins/modules/consul_binding_rule.py
+++ b/plugins/modules/consul_binding_rule.py
@@ -29,7 +29,7 @@ attributes:
diff_mode:
support: partial
details:
- - In check mode the diff misses operational attributes.
+ - In check mode the diff will miss operational attributes.
options:
state:
description:
diff --git a/plugins/modules/consul_kv.py b/plugins/modules/consul_kv.py
index 2987e71a86..8152dd5c25 100644
--- a/plugins/modules/consul_kv.py
+++ b/plugins/modules/consul_kv.py
@@ -36,12 +36,12 @@ options:
state:
description:
- The action to take with the supplied key and value. If the state is V(present) and O(value) is set, the key contents
- is set to the value supplied and C(changed) is set to V(true) only if the value was different to the current contents.
- If the state is V(present) and O(value) is not set, the existing value associated to the key is returned. The state
- V(absent) is used to remove the key/value pair, again C(changed) is set to V(true) only if the key actually existed
- prior to the removal. An attempt can be made to obtain or free the lock associated with a key/value pair with the
- states V(acquire) or V(release) respectively. A valid session must be supplied to make the attempt C(changed) is V(true)
- if the attempt is successful, V(false) otherwise.
+ will be set to the value supplied and C(changed) will be set to V(true) only if the value was different to the current
+ contents. If the state is V(present) and O(value) is not set, the existing value associated to the key will be returned.
+ The state V(absent) will remove the key/value pair, again C(changed) will be set to V(true) only if the key actually
+ existed prior to the removal. An attempt can be made to obtain or free the lock associated with a key/value pair with
+ the states V(acquire) or V(release) respectively. A valid session must be supplied to make the attempt C(changed)
+ will be V(true) if the attempt is successful, V(false) otherwise.
type: str
choices: [absent, acquire, present, release]
default: present
@@ -73,8 +73,9 @@ options:
type: str
cas:
description:
- - Used when acquiring a lock with a session. If the O(cas) is V(0), then Consul only puts the key if it does not already
- exist. If the O(cas) value is non-zero, then the key is only set if the index matches the ModifyIndex of that key.
+ - Used when acquiring a lock with a session. If the O(cas) is V(0), then Consul will only put the key if it does not
+ already exist. If the O(cas) value is non-zero, then the key is only set if the index matches the ModifyIndex of that
+ key.
type: str
flags:
description:
@@ -102,7 +103,8 @@ options:
default: true
datacenter:
description:
- - The name of the datacenter to query. If unspecified, the query defaults to the datacenter of the Consul agent on O(host).
+ - The name of the datacenter to query. If unspecified, the query will default to the datacenter of the Consul agent
+ on O(host).
type: str
version_added: 10.0.0
"""
@@ -300,7 +302,7 @@ def main():
module = AnsibleModule(
argument_spec=dict(
cas=dict(type='str'),
- datacenter=dict(type='str'),
+ datacenter=dict(type='str', default=None),
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 e009e44434..c9758780b2 100644
--- a/plugins/modules/consul_policy.py
+++ b/plugins/modules/consul_policy.py
@@ -31,7 +31,7 @@ attributes:
support: partial
version_added: 8.3.0
details:
- - In check mode the diff misses operational attributes.
+ - In check mode the diff will miss operational attributes.
action_group:
version_added: 8.3.0
options:
@@ -132,7 +132,7 @@ from ansible_collections.community.general.plugins.module_utils.consul import (
_ARGUMENT_SPEC = {
"name": dict(required=True),
- "description": dict(type="str"),
+ "description": dict(required=False, 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/consul_role.py b/plugins/modules/consul_role.py
index 4efbef699a..5e22496660 100644
--- a/plugins/modules/consul_role.py
+++ b/plugins/modules/consul_role.py
@@ -29,7 +29,7 @@ attributes:
diff_mode:
support: partial
details:
- - In check mode the diff misses operational attributes.
+ - In check mode the diff will miss operational attributes.
version_added: 8.3.0
action_group:
version_added: 8.3.0
@@ -48,15 +48,15 @@ options:
description:
description:
- Description of the role.
- - If not specified, the assigned description is not changed.
+ - If not specified, the assigned description will not be changed.
type: str
policies:
type: list
elements: dict
description:
- List of policies to attach to the role. Each policy is a dict.
- - If the parameter is left blank, any policies currently assigned are not changed.
- - Any empty array (V([])) clears any policies previously set.
+ - If the parameter is left blank, any policies currently assigned will not be changed.
+ - Any empty array (V([])) will clear any policies previously set.
suboptions:
name:
description:
@@ -90,8 +90,8 @@ options:
elements: dict
description:
- List of service identities to attach to the role.
- - If not specified, any service identities currently assigned are not changed.
- - If the parameter is an empty array (V([])), any node identities assigned are unassigned.
+ - If not specified, any service identities currently assigned will not be changed.
+ - If the parameter is an empty array (V([])), any node identities assigned will be unassigned.
suboptions:
service_name:
description:
@@ -106,9 +106,9 @@ options:
- name
datacenters:
description:
- - The datacenters where the policies are effective.
- - This results in effective policy only being valid in this datacenter.
- - If an empty array (V([])) is specified, the policies are valid in all datacenters.
+ - The datacenters the policies will be effective.
+ - This will result in effective policy only being valid in this datacenter.
+ - If an empty array (V([])) is specified, the policies will valid in all datacenters.
- Including those which do not yet exist but may in the future.
type: list
elements: str
@@ -117,8 +117,8 @@ options:
elements: dict
description:
- List of node identities to attach to the role.
- - If not specified, any node identities currently assigned are not changed.
- - If the parameter is an empty array (V([])), any node identities assigned are unassigned.
+ - If not specified, any node identities currently assigned will not be changed.
+ - If the parameter is an empty array (V([])), any node identities assigned will be unassigned.
suboptions:
node_name:
description:
@@ -134,7 +134,7 @@ options:
datacenter:
description:
- The nodes datacenter.
- - This results in effective policy only being valid in this datacenter.
+ - This will result in effective policy only being valid in this datacenter.
type: str
required: true
"""
diff --git a/plugins/modules/consul_session.py b/plugins/modules/consul_session.py
index 637b09aff2..a72136ad66 100644
--- a/plugins/modules/consul_session.py
+++ b/plugins/modules/consul_session.py
@@ -57,7 +57,7 @@ options:
default: 15
node:
description:
- - The name of the node that with which the session is associated. By default this is the name of the agent.
+ - The name of the node that with which the session will be associated. By default this is the name of the agent.
type: str
datacenter:
description:
@@ -65,8 +65,8 @@ options:
type: str
checks:
description:
- - Checks that are used to verify the session health. If all the checks fail, the session is invalidated and any locks
- associated with the session are released and can be acquired once the associated lock delay has expired.
+ - Checks that will be used to verify the session health. If all the checks fail, the session will be invalidated and
+ any locks associated with the session will be release and can be acquired once the associated lock delay has expired.
type: list
elements: str
behavior:
diff --git a/plugins/modules/consul_token.py b/plugins/modules/consul_token.py
index 1e5aa19f4c..b525b2dc2a 100644
--- a/plugins/modules/consul_token.py
+++ b/plugins/modules/consul_token.py
@@ -29,7 +29,7 @@ attributes:
diff_mode:
support: partial
details:
- - In check mode the diff misses operational attributes.
+ - In check mode the diff will miss operational attributes.
action_group:
version_added: 8.3.0
options:
@@ -41,11 +41,11 @@ options:
type: str
accessor_id:
description:
- - Specifies a UUID to use as the token's Accessor ID. If not specified a UUID is generated for this field.
+ - Specifies a UUID to use as the token's Accessor ID. If not specified a UUID will be generated for this field.
type: str
secret_id:
description:
- - Specifies a UUID to use as the token's Secret ID. If not specified a UUID is generated for this field.
+ - Specifies a UUID to use as the token's Secret ID. If not specified a UUID will be generated for this field.
type: str
description:
description:
@@ -56,8 +56,8 @@ options:
elements: dict
description:
- List of policies to attach to the token. Each policy is a dict.
- - If the parameter is left blank, any policies currently assigned are not changed.
- - Any empty array (V([])) clears any policies previously set.
+ - If the parameter is left blank, any policies currently assigned will not be changed.
+ - Any empty array (V([])) will clear any policies previously set.
suboptions:
name:
description:
@@ -74,8 +74,8 @@ options:
elements: dict
description:
- List of roles to attach to the token. Each role is a dict.
- - If the parameter is left blank, any roles currently assigned are not changed.
- - Any empty array (V([])) clears any roles previously set.
+ - If the parameter is left blank, any roles currently assigned will not be changed.
+ - Any empty array (V([])) will clear any roles previously set.
suboptions:
name:
description:
@@ -108,8 +108,8 @@ options:
elements: dict
description:
- List of service identities to attach to the token.
- - If not specified, any service identities currently assigned are not changed.
- - If the parameter is an empty array (V([])), any node identities assigned are unassigned.
+ - If not specified, any service identities currently assigned will not be changed.
+ - If the parameter is an empty array (V([])), any node identities assigned will be unassigned.
suboptions:
service_name:
description:
@@ -120,8 +120,8 @@ options:
required: true
datacenters:
description:
- - The datacenters where the token is effective.
- - If an empty array (V([])) is specified, the token is valid in all datacenters.
+ - The datacenters the token will be effective.
+ - If an empty array (V([])) is specified, the token will valid in all datacenters.
- Including those which do not yet exist but may in the future.
type: list
elements: str
@@ -130,8 +130,8 @@ options:
elements: dict
description:
- List of node identities to attach to the token.
- - If not specified, any node identities currently assigned are not changed.
- - If the parameter is an empty array (V([])), any node identities assigned are unassigned.
+ - If not specified, any node identities currently assigned will not be changed.
+ - If the parameter is an empty array (V([])), any node identities assigned will be unassigned.
suboptions:
node_name:
description:
@@ -143,7 +143,7 @@ options:
datacenter:
description:
- The nodes datacenter.
- - This results in effective token only being valid in this datacenter.
+ - This will result in effective token only being valid in this datacenter.
type: str
required: true
local:
@@ -152,7 +152,7 @@ options:
type: bool
expiration_ttl:
description:
- - This is a convenience field and if set it initializes the C(expiration_time). Can be specified in the form of V(60s)
+ - This is a convenience field and if set will initialize the C(expiration_time). Can be specified in the form of V(60s)
or V(5m) (that is, 60 seconds or 5 minutes, respectively). Ingored when the token is updated!
type: str
"""
diff --git a/plugins/modules/copr.py b/plugins/modules/copr.py
index 940fc0eedd..739092b8af 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"),
- excludepkgs=dict(type='list', elements="str"),
+ includepkgs=dict(type='list', elements="str", required=False),
+ excludepkgs=dict(type='list', elements="str", required=False),
)
module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)
params = module.params
diff --git a/plugins/modules/cpanm.py b/plugins/modules/cpanm.py
index 788a554bf3..4fa0c25917 100644
--- a/plugins/modules/cpanm.py
+++ b/plugins/modules/cpanm.py
@@ -59,18 +59,16 @@ options:
install_recommendations:
description:
- If V(true), installs dependencies declared as recommends per META spec.
- - If V(false), it ensures the dependencies declared as recommends are not installed, overriding any decision made earlier
- in E(PERL_CPANM_OPT).
- - If parameter is not set, C(cpanm) uses its existing defaults.
+ - If V(false), it ensures the dependencies declared as recommends are not installed, overriding any decision made earlier in E(PERL_CPANM_OPT).
+ - If parameter is not set, C(cpanm) will use its existing defaults.
- When these dependencies fail to install, cpanm continues the installation, since they are just recommendation.
type: bool
version_added: 10.3.0
install_suggestions:
description:
- If V(true), installs dependencies declared as suggests per META spec.
- - If V(false), it ensures the dependencies declared as suggests are not installed, overriding any decision made earlier
- in E(PERL_CPANM_OPT).
- - If parameter is not set, C(cpanm) uses its existing defaults.
+ - If V(false), it ensures the dependencies declared as suggests are not installed, overriding any decision made earlier in E(PERL_CPANM_OPT).
+ - If parameter is not set, C(cpanm) will use its existing defaults.
- When these dependencies fail to install, cpanm continues the installation, since they are just suggestion.
type: bool
version_added: 10.3.0
@@ -86,14 +84,6 @@ options:
description:
- Controls the module behavior. See notes below for more details.
- The default changed from V(compatibility) to V(new) in community.general 9.0.0.
- - 'O(mode=new): The O(name) parameter may refer to a module name, a distribution file, a HTTP URL or a git repository
- URL as described in C(cpanminus) documentation. C(cpanm) version specifiers are recognized. This is the default mode
- from community.general 9.0.0 onwards.'
- - 'O(mode=compatibility): This was the default mode before community.general 9.0.0. O(name) must be either a module
- name or a distribution file. If the perl module given by O(name) is installed (at the exact O(version) when specified),
- then nothing happens. Otherwise, it is installed using the C(cpanm) executable. O(name) cannot be an URL, or a git
- URL. C(cpanm) version specifiers do not work in this mode.'
- - 'B(ATTENTION): V(compatibility) mode is deprecated and will be removed in community.general 13.0.0.'
type: str
choices: [compatibility, new]
default: new
@@ -106,6 +96,15 @@ options:
version_added: 3.0.0
notes:
- Please note that U(http://search.cpan.org/dist/App-cpanminus/bin/cpanm, cpanm) must be installed on the remote host.
+ - 'This module now comes with a choice of execution O(mode): V(compatibility) or V(new).'
+ - 'O(mode=compatibility): When using V(compatibility) mode, the module will keep backward compatibility. This was the default
+ mode before community.general 9.0.0. O(name) must be either a module name or a distribution file. If the perl module given
+ by O(name) is installed (at the exact O(version) when specified), then nothing happens. Otherwise, it will be installed
+ using the C(cpanm) executable. O(name) cannot be an URL, or a git URL. C(cpanm) version specifiers do not work in this
+ mode.'
+ - 'O(mode=new): When using V(new) mode, the module will behave differently. The O(name) parameter may refer to a module
+ name, a distribution file, a HTTP URL or a git repository URL as described in C(cpanminus) documentation. C(cpanm) version
+ specifiers are recognized. This is the default mode from community.general 9.0.0 onwards.'
seealso:
- name: C(cpanm) command manual page
description: Manual page for the command.
@@ -211,7 +210,6 @@ class CPANMinus(ModuleHelper):
if v.mode == "compatibility":
if v.name_check:
self.do_raise("Parameter name_check can only be used with mode=new")
- self.deprecate("'mode=compatibility' is deprecated, use 'mode=new' instead", version='13.0.0', collection_name="community.general")
else:
if v.name and v.from_path:
self.do_raise("Parameters 'name' and 'from_path' are mutually exclusive when 'mode=new'")
diff --git a/plugins/modules/cronvar.py b/plugins/modules/cronvar.py
index 5f7d02bfc3..4f00aef07c 100644
--- a/plugins/modules/cronvar.py
+++ b/plugins/modules/cronvar.py
@@ -43,12 +43,12 @@ options:
type: str
insertafter:
description:
- - If specified, the variable is inserted after the variable specified.
+ - If specified, the variable will be inserted after the variable specified.
- Used with O(state=present).
type: str
insertbefore:
description:
- - Used with O(state=present). If specified, the variable is inserted just before the variable specified.
+ - Used with O(state=present). If specified, the variable will be inserted just before the variable specified.
type: str
state:
description:
@@ -135,9 +135,6 @@ 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
@@ -396,8 +393,6 @@ 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/crypttab.py b/plugins/modules/crypttab.py
index 5749d75cec..05a5afb082 100644
--- a/plugins/modules/crypttab.py
+++ b/plugins/modules/crypttab.py
@@ -24,14 +24,14 @@ options:
name:
description:
- Name of the encrypted block device as it appears in the C(/etc/crypttab) file, or optionally prefixed with V(/dev/mapper/),
- as it appears in the filesystem. V(/dev/mapper/) is stripped from O(name).
+ as it appears in the filesystem. V(/dev/mapper/) will be stripped from O(name).
type: str
required: true
state:
description:
- Use V(present) to add a line to C(/etc/crypttab) or update its definition if already present.
- Use V(absent) to remove a line with matching O(name).
- - Use V(opts_present) to add options to those already present; options with different values are updated.
+ - Use V(opts_present) to add options to those already present; options with different values will be updated.
- Use V(opts_absent) to remove options from the existing set.
type: str
required: true
@@ -73,14 +73,6 @@ EXAMPLES = r"""
opts: discard
loop: '{{ ansible_mounts }}'
when: "'/dev/mapper/luks-' in item.device"
-
-- name: Add entry to /etc/crypttab for luks-home with password file
- community.general.crypttab:
- name: luks-home
- backing_device: UUID=123e4567-e89b-12d3-a456-426614174000
- password: /root/keys/luks-home.key
- opts: discard,cipher=aes-cbc-essiv:sha256
- state: present
"""
import os
@@ -124,7 +116,7 @@ def main():
('backing_device', backing_device),
('password', password),
('opts', opts)):
- if arg is not None and (' ' in arg or '\t' in arg or arg == ''):
+ if (arg is not None and (' ' in arg or '\t' in arg or arg == '')):
module.fail_json(msg="invalid '%s': contains white space or is empty" % arg_name,
**module.params)
diff --git a/plugins/modules/datadog_downtime.py b/plugins/modules/datadog_downtime.py
index 9e48410014..1bc57e2958 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(default="https://api.datadoghq.com"),
+ api_host=dict(required=False, default="https://api.datadoghq.com"),
app_key=dict(required=True, no_log=True),
- 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"),
+ 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"),
)
)
diff --git a/plugins/modules/datadog_event.py b/plugins/modules/datadog_event.py
index fd75ea81de..97be0c9b16 100644
--- a/plugins/modules/datadog_event.py
+++ b/plugins/modules/datadog_event.py
@@ -16,7 +16,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
module: datadog_event
-short_description: Posts events to Datadog service
+short_description: Posts events to Datadog service
description:
- Allows to post events to Datadog (www.datadoghq.com) service.
- Uses http://docs.datadoghq.com/api/#events API.
@@ -89,8 +89,8 @@ options:
- An arbitrary string to use for aggregation.
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
+ self-signed certificates.
type: bool
default: true
"""
diff --git a/plugins/modules/datadog_monitor.py b/plugins/modules/datadog_monitor.py
index f778d2444d..eec0db0d32 100644
--- a/plugins/modules/datadog_monitor.py
+++ b/plugins/modules/datadog_monitor.py
@@ -92,26 +92,26 @@ options:
type: dict
description:
- Dictionary of scopes to silence, with timestamps or None.
- - Each scope is muted until the given POSIX timestamp or forever if the value is V(None).
+ - Each scope will be muted until the given POSIX timestamp or forever if the value is None.
notify_no_data:
description:
- - Whether this monitor notifies when data stops reporting.
+ - Whether this monitor will notify when data stops reporting.
type: bool
default: false
no_data_timeframe:
description:
- - The number of minutes before a monitor notifies when data stops reporting.
+ - The number of minutes before a monitor will notify when data stops reporting.
- Must be at least 2x the monitor timeframe for metric alerts or 2 minutes for service checks.
- If not specified, it defaults to 2x timeframe for metric, 2 minutes for service.
type: str
timeout_h:
description:
- - The number of hours of the monitor not reporting data before it automatically resolves from a triggered state.
+ - The number of hours of the monitor not reporting data before it will automatically resolve from a triggered state.
type: str
renotify_interval:
description:
- - The number of minutes after the last notification before a monitor re-notifies on the current status.
- - It only re-notifies if it is not resolved.
+ - The number of minutes after the last notification before a monitor will re-notify on the current status.
+ - It will only re-notify if it is not resolved.
type: str
escalation_message:
description:
@@ -120,7 +120,7 @@ options:
type: str
notify_audit:
description:
- - Whether tagged users are notified on changes to this monitor.
+ - Whether tagged users will be notified on changes to this monitor.
type: bool
default: false
thresholds:
@@ -138,7 +138,7 @@ options:
require_full_window:
description:
- Whether this monitor needs a full window of data before it gets evaluated.
- - We highly recommend you set this to V(false) for sparse metrics, otherwise some evaluations are skipped.
+ - We highly recommend you set this to False for sparse metrics, otherwise some evaluations will be skipped.
type: bool
new_host_delay:
description:
@@ -153,7 +153,7 @@ options:
id:
description:
- The ID of the alert.
- - If set, it is used instead of O(name) to locate the alert.
+ - If set, will be used instead of the name to locate the alert.
type: str
include_tags:
description:
@@ -275,14 +275,14 @@ def main():
renotify_interval=dict(),
escalation_message=dict(),
notify_audit=dict(default=False, type='bool'),
- thresholds=dict(type='dict'),
- tags=dict(type='list', elements='str'),
+ thresholds=dict(type='dict', default=None),
+ tags=dict(type='list', elements='str', default=None),
locked=dict(default=False, type='bool'),
require_full_window=dict(type='bool'),
new_host_delay=dict(),
evaluation_delay=dict(),
id=dict(),
- include_tags=dict(default=True, type='bool'),
+ include_tags=dict(required=False, 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'),
@@ -435,7 +435,7 @@ def mute_monitor(module):
module.fail_json(msg="Monitor %s not found!" % module.params['name'])
elif monitor['options']['silenced']:
module.fail_json(msg="Monitor is already muted. Datadog does not allow to modify muted alerts, consider unmuting it first.")
- elif module.params['silenced'] is not None and len(set(monitor['options']['silenced']) ^ set(module.params['silenced'])) == 0:
+ elif (module.params['silenced'] is not None and len(set(monitor['options']['silenced']) ^ set(module.params['silenced'])) == 0):
module.exit_json(changed=False)
try:
if module.params['silenced'] is None or module.params['silenced'] == "":
diff --git a/plugins/modules/dconf.py b/plugins/modules/dconf.py
index 762c443130..319d6770f2 100644
--- a/plugins/modules/dconf.py
+++ b/plugins/modules/dconf.py
@@ -17,10 +17,10 @@ short_description: Modify and read dconf database
description:
- This module allows modifications and reading of C(dconf) database. The module is implemented as a wrapper around C(dconf)
tool. Please see the dconf(1) man page for more details.
- - Since C(dconf) requires a running D-Bus session to change values, the module tries to detect an existing session and reuse
- it, or run the tool using C(dbus-run-session).
+ - Since C(dconf) requires a running D-Bus session to change values, the module will try to detect an existing session and
+ reuse it, or run the tool using C(dbus-run-session).
requirements:
- - Optionally the C(gi.repository) Python library (usually included in the OS on hosts which have C(dconf)); this is to become
+ - Optionally the C(gi.repository) Python library (usually included in the OS on hosts which have C(dconf)); this will become
a non-optional requirement in a future major release of community.general.
notes:
- This module depends on C(psutil) Python library (version 4.0.0 and upwards), C(dconf), C(dbus-send), and C(dbus-run-session)
@@ -28,7 +28,7 @@ notes:
- This module uses the C(gi.repository) Python library when available for accurate comparison of values in C(dconf) to values
specified in Ansible code. C(gi.repository) is likely to be present on most systems which have C(dconf) but may not be
present everywhere. When it is missing, a simple string comparison between values is used, and there may be false positives,
- that is, Ansible may think that a value is being changed when it is not. This fallback is to be removed in a future version
+ that is, Ansible may think that a value is being changed when it is not. This fallback will be removed in a future version
of this module, at which point the module will stop working on hosts without C(gi.repository).
- Detection of existing, running D-Bus session, required to change settings using C(dconf), is not 100% reliable due to
implementation details of D-Bus daemon itself. This might lead to running applications not picking-up changes on-the-fly
@@ -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(type='raw'),
+ value=dict(required=False, default=None, type='raw'),
),
supports_check_mode=True,
required_if=[
diff --git a/plugins/modules/decompress.py b/plugins/modules/decompress.py
index 03be61a8e6..50db0355e3 100644
--- a/plugins/modules/decompress.py
+++ b/plugins/modules/decompress.py
@@ -33,12 +33,13 @@ options:
required: true
dest:
description:
- - The file name of the destination file where the compressed file is decompressed.
- - If the destination file exists, it is truncated and overwritten.
- - If not specified, the destination filename is derived from O(src) by removing the compression format extension. For
- example, when O(src) is V(/path/to/file.txt.gz) and O(format) is V(gz), O(dest) is V(/path/to/file.txt). If the O(src)
- file does not have an extension for the current O(format), the O(dest) filename is made by appending C(_decompressed)
- to the O(src) filename. For instance, when O(src) is V(/path/to/file.myextension), the (dest) filename is V(/path/to/file.myextension_decompressed).
+ - The file name of the destination file where the compressed file will be decompressed.
+ - If the destination file exists, it will be truncated and overwritten.
+ - If not specified, the destination filename will be derived from O(src) by removing the compression format extension.
+ For example, if O(src) is V(/path/to/file.txt.gz) and O(format) is V(gz), O(dest) will be V(/path/to/file.txt). If
+ the O(src) file does not have an extension for the current O(format), the O(dest) filename will be made by appending
+ C(_decompressed) to the O(src) filename. For instance, if O(src) is V(/path/to/file.myextension), the (dest) filename
+ will be V(/path/to/file.myextension_decompressed).
type: path
format:
description:
diff --git a/plugins/modules/deploy_helper.py b/plugins/modules/deploy_helper.py
index b25e68392b..14a7d4f8c7 100644
--- a/plugins/modules/deploy_helper.py
+++ b/plugins/modules/deploy_helper.py
@@ -18,8 +18,8 @@ short_description: Manages some of the steps common in deploying projects
description:
- The Deploy Helper manages some of the steps common in deploying software. It creates a folder structure, manages a symlink
for the current release and cleans up old releases.
- - Running it with the O(state=query) or O(state=present) returns the C(deploy_helper) fact. C(project_path), whatever you
- set in the O(path) parameter, C(current_path), the path to the symlink that points to the active release, C(releases_path),
+ - Running it with the O(state=query) or O(state=present) will return the C(deploy_helper) fact. C(project_path), whatever
+ you set in the O(path) parameter, C(current_path), the path to the symlink that points to the active release, C(releases_path),
the path to the folder to keep releases in, C(shared_path), the path to the folder to keep shared resources in, C(unfinished_filename),
the file to check for to recognize unfinished builds, C(previous_release), the release the 'current' symlink is pointing
to, C(previous_release_path), the full path to the 'current' symlink target, C(new_release), either the O(release) parameter
@@ -41,12 +41,12 @@ options:
type: str
description:
- The state of the project.
- - V(query) gathers facts.
- - V(present) creates the project C(root) folder, and in it the C(releases) and C(shared) folders.
- - V(finalize) removes the unfinished_filename file, creates a symlink to the newly deployed release and optionally cleans
- old releases.
- - V(clean) removes failed & old releases.
- - V(absent) removes the project folder (synonymous to the M(ansible.builtin.file) module with O(state=absent)).
+ - V(query) will only gather facts.
+ - V(present) will create the project C(root) folder, and in it the C(releases) and C(shared) folders.
+ - V(finalize) will remove the unfinished_filename file, create a symlink to the newly deployed release and optionally
+ clean old releases.
+ - V(clean) will remove failed & old releases.
+ - V(absent) will remove the project folder (synonymous to the M(ansible.builtin.file) module with O(state=absent)).
choices: [present, finalize, absent, clean, query]
default: present
@@ -59,15 +59,15 @@ options:
releases_path:
type: str
description:
- - The name of the folder that holds the releases. This can be relative to O(path) or absolute. Returned in the C(deploy_helper.releases_path)
+ - The name of the folder that will hold the releases. This can be relative to O(path) or absolute. Returned in the C(deploy_helper.releases_path)
fact.
default: releases
shared_path:
type: path
description:
- - The name of the folder that holds the shared resources. This can be relative to O(path) or absolute. If this is set
- to an empty string, no shared folder is created. Returned in the C(deploy_helper.shared_path) fact.
+ - The name of the folder that will hold the shared resources. This can be relative to O(path) or absolute. If this is
+ set to an empty string, no shared folder will be created. Returned in the C(deploy_helper.shared_path) fact.
default: shared
current_path:
@@ -81,8 +81,8 @@ options:
type: str
description:
- The name of the file that indicates a deploy has not finished. All folders in the O(releases_path) that contain this
- file are deleted on O(state=finalize) with O(clean=true), or O(state=clean). This file is automatically deleted from
- the C(new_release_path) during O(state=finalize).
+ file will be deleted on O(state=finalize) with O(clean=true), or O(state=clean). This file is automatically deleted
+ from the C(new_release_path) during O(state=finalize).
default: DEPLOY_UNFINISHED
clean:
@@ -95,16 +95,16 @@ options:
type: int
description:
- The number of old releases to keep when cleaning. Used in O(state=finalize) and O(state=clean). Any unfinished builds
- are deleted first, so only correct releases count. The current version does not count.
+ will be deleted first, so only correct releases will count. The current version will not count.
default: 5
notes:
- Facts are only returned for O(state=query) and O(state=present). If you use both, you should pass any overridden parameters
- to both calls, otherwise the second call overwrites the facts of the first one.
+ to both calls, otherwise the second call will overwrite the facts of the first one.
- When using O(state=clean), the releases are ordered by I(creation date). You should be able to switch to a new naming
strategy without problems.
- - Because of the default behaviour of generating the C(new_release) fact, this module is not idempotent unless you pass
- your own release name with O(release). Due to the nature of deploying software, this should not be much of a problem.
+ - Because of the default behaviour of generating the C(new_release) fact, this module will not be idempotent unless you
+ pass your own release name with O(release). Due to the nature of deploying software, this should not be much of a problem.
extends_documentation_fragment:
- ansible.builtin.files
- community.general.attributes
diff --git a/plugins/modules/dimensiondata_network.py b/plugins/modules/dimensiondata_network.py
index 04fff21e58..6617d6aef1 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'),
+ description=dict(type='str', required=False),
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 b28b12d998..2389d34333 100644
--- a/plugins/modules/dimensiondata_vlan.py
+++ b/plugins/modules/dimensiondata_vlan.py
@@ -56,7 +56,8 @@ options:
state:
description:
- The desired state for the target VLAN.
- - V(readonly) ensures that the state is only ever read, not modified (the module fails if the resource does not exist).
+ - V(readonly) ensures that the state is only ever read, not modified (the module will fail if the resource does not
+ exist).
choices: [present, absent, readonly]
default: present
type: str
@@ -64,7 +65,7 @@ options:
description:
- Permit expansion of the target VLAN's network if the module parameters specify a larger network than the VLAN currently
possesses.
- - If V(false), the module fails under these conditions.
+ - If V(false), the module will fail under these conditions.
- This is intended to prevent accidental expansion of a VLAN's network (since this operation is not reversible).
type: bool
default: false
@@ -186,7 +187,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(default=False, type='bool'),
+ allow_expand=dict(required=False, default=False, type='bool'),
state=dict(default='present', choices=['present', 'absent', 'readonly'])
),
required_together=DimensionDataModule.required_together()
diff --git a/plugins/modules/django_check.py b/plugins/modules/django_check.py
index e6e03c8276..9699428b9c 100644
--- a/plugins/modules/django_check.py
+++ b/plugins/modules/django_check.py
@@ -22,7 +22,7 @@ options:
database:
description:
- Specify databases to run checks against.
- - If not specified, Django does not run database tests.
+ - If not specified, Django will not run database tests.
type: list
elements: str
deploy:
@@ -32,7 +32,7 @@ options:
default: false
fail_level:
description:
- - Message level that triggers failure.
+ - Message level that will trigger failure.
- Default is the Django default value. Check the documentation for the version being used.
type: str
choices: [CRITICAL, ERROR, WARNING, INFO, DEBUG]
@@ -49,7 +49,7 @@ options:
elements: str
notes:
- The outcome of the module is found in the common return values RV(ignore:stdout), RV(ignore:stderr), RV(ignore:rc).
- - The module fails if RV(ignore:rc) is not zero.
+ - The module will fail if RV(ignore:rc) is not zero.
attributes:
check_mode:
support: full
diff --git a/plugins/modules/django_manage.py b/plugins/modules/django_manage.py
index 0fe07890f8..ded4f436e3 100644
--- a/plugins/modules/django_manage.py
+++ b/plugins/modules/django_manage.py
@@ -15,7 +15,7 @@ module: django_manage
short_description: Manages a Django application
description:
- Manages a Django application using the C(manage.py) application frontend to C(django-admin). With the O(virtualenv) parameter,
- all management commands are executed by the given C(virtualenv) installation.
+ all management commands will be executed by the given C(virtualenv) installation.
extends_documentation_fragment:
- community.general.attributes
attributes:
@@ -34,8 +34,8 @@ options:
- V(loaddata) - Searches for and loads the contents of the named O(fixtures) into the database.
- V(migrate) - Synchronizes the database state with models and migrations.
- V(test) - Runs tests for all installed apps.
- - Custom commands can be entered, but they fail unless they are known to Django. Custom commands that may prompt for
- user input should be run with the C(--noinput) flag.
+ - Other commands can be entered, but will fail if they are unknown to Django. Other commands that may prompt for user
+ input should be run with the C(--noinput) flag.
- Support for the values V(cleanup), V(syncdb), V(validate) was removed in community.general 9.0.0. See note about supported
versions of Django.
type: str
@@ -62,7 +62,7 @@ options:
virtualenv:
description:
- An optional path to a C(virtualenv) installation to use while running the manage application.
- - The virtual environment must exist, otherwise the module fails.
+ - The virtual environment must exist, otherwise the module will fail.
type: path
aliases: [virtual_env]
apps:
@@ -78,7 +78,7 @@ options:
clear:
description:
- Clear the existing files before trying to copy or link the original file.
- - Used only with the V(collectstatic) command. The C(--noinput) argument is added automatically.
+ - Used only with the V(collectstatic) command. The C(--noinput) argument will be added automatically.
required: false
default: false
type: bool
@@ -101,18 +101,18 @@ options:
required: false
skip:
description:
- - Skips over out-of-order missing migrations, you can only use this parameter with V(migrate) command.
+ - Will skip over out-of-order missing migrations, you can only use this parameter with V(migrate) command.
required: false
type: bool
merge:
description:
- - Runs out-of-order or missing migrations as they are not rollback migrations, you can only use this parameter with
+ - Will run out-of-order or missing migrations as they are not rollback migrations, you can only use this parameter with
V(migrate) command.
required: false
type: bool
link:
description:
- - Creates links to the files instead of copying them, you can only use this parameter with V(collectstatic) command.
+ - Will create links to the files instead of copying them, you can only use this parameter with V(collectstatic) command.
required: false
type: bool
testrunner:
@@ -128,7 +128,7 @@ notes:
module allows for free-form commands, not verifying the version of Django being used, it is B(strongly recommended) to
use a more recent version of the framework.'
- Please notice that Django 4.1 requires Python 3.8 or greater.
- - This module does not create a virtualenv if the O(virtualenv) parameter is specified and a virtual environment does not
+ - This module will not create a virtualenv if the O(virtualenv) parameter is specified and a virtual environment does not
already exist at the given location. This behavior changed in community.general version 9.0.0.
- The recommended way to create a virtual environment in Ansible is by using M(ansible.builtin.pip).
- This module assumes English error messages for the V(createcachetable) command to detect table existence, unfortunately.
diff --git a/plugins/modules/dnf_config_manager.py b/plugins/modules/dnf_config_manager.py
index eb64bee864..69ac2c7085 100644
--- a/plugins/modules/dnf_config_manager.py
+++ b/plugins/modules/dnf_config_manager.py
@@ -120,7 +120,7 @@ changed_repos:
returned: success
type: list
elements: str
- sample: ["crb"]
+ sample: ['crb']
"""
from ansible.module_utils.basic import AnsibleModule
@@ -175,8 +175,8 @@ def pack_repo_states_for_return(states):
def main():
module_args = dict(
- name=dict(type='list', elements='str', default=[]),
- state=dict(type='str', choices=['enabled', 'disabled'], default='enabled')
+ name=dict(type='list', elements='str', required=False, default=[]),
+ state=dict(type='str', required=False, choices=['enabled', 'disabled'], default='enabled')
)
result = dict(
diff --git a/plugins/modules/dnf_versionlock.py b/plugins/modules/dnf_versionlock.py
index b3e2e2bcc9..d3eaf832a5 100644
--- a/plugins/modules/dnf_versionlock.py
+++ b/plugins/modules/dnf_versionlock.py
@@ -22,9 +22,9 @@ attributes:
support: partial
details:
- The logics of the C(versionlock) plugin for corner cases could be confusing, so please take in account that this module
- does its best to give a C(check_mode) prediction on what is going to happen. In case of doubt, check the documentation
+ will do its best to give a C(check_mode) prediction on what is going to happen. In case of doubt, check the documentation
of the plugin.
- - Sometimes the module could predict changes in C(check_mode) that are not fulfilled because C(versionlock) concludes
+ - Sometimes the module could predict changes in C(check_mode) that will not be such because C(versionlock) concludes
that there is already a entry in C(locklist) that already matches.
diff_mode:
support: none
@@ -47,12 +47,12 @@ options:
state:
description:
- Whether to add (V(present) or V(excluded)) to or remove (V(absent) or V(clean)) from the C(locklist).
- - V(present) adds a package name spec to the C(locklist). If there is a installed package that matches, then only that
- version is added. Otherwise, all available package versions are added.
- - V(excluded) adds a package name spec as excluded to the C(locklist). It means that packages represented by the package
- name spec are excluded from transaction operations. All available package versions are added.
- - V(absent) deletes entries in the C(locklist) that match the package name spec.
- - V(clean) deletes all entries in the C(locklist). This option is mutually exclusive with O(name).
+ - V(present) will add a package name spec to the C(locklist). If there is a installed package that matches, then only
+ that version will be added. Otherwise, all available package versions will be added.
+ - V(excluded) will add a package name spec as excluded to the C(locklist). It means that packages represented by the
+ package name spec will be excluded from transaction operations. All available package versions will be added.
+ - V(absent) will delete entries in the C(locklist) that match the package name spec.
+ - V(clean) will delete all entries in the C(locklist). This option is mutually exclusive with O(name).
choices: ['absent', 'clean', 'excluded', 'present']
type: str
default: present
@@ -83,12 +83,12 @@ EXAMPLES = r"""
- name: Remove lock from nginx to be updated again
community.general.dnf_versionlock:
- name: nginx
+ package: nginx
state: absent
- name: Exclude bind 32:9.11 from installs or updates
community.general.dnf_versionlock:
- name: bind-32:9.11*
+ package: bind-32:9.11*
state: excluded
- name: Keep bash package in major version 4
@@ -108,25 +108,25 @@ locklist_pre:
returned: success
type: list
elements: str
- sample: ["bash-0:4.4.20-1.el8_4.*", "!bind-32:9.11.26-4.el8_4.*"]
+ sample: ['bash-0:4.4.20-1.el8_4.*', '!bind-32:9.11.26-4.el8_4.*']
locklist_post:
description: Locklist after module execution.
returned: success and (not check mode or state is clean)
type: list
elements: str
- sample: ["bash-0:4.4.20-1.el8_4.*"]
+ sample: ['bash-0:4.4.20-1.el8_4.*']
specs_toadd:
description: Package name specs meant to be added by versionlock.
returned: success
type: list
elements: str
- sample: ["bash"]
+ sample: ['bash']
specs_todelete:
description: Package name specs meant to be deleted by versionlock.
returned: success
type: list
elements: str
- sample: ["bind"]
+ sample: ['bind']
"""
from ansible.module_utils.basic import AnsibleModule
diff --git a/plugins/modules/dnsimple.py b/plugins/modules/dnsimple.py
index 729c876841..979aca5797 100644
--- a/plugins/modules/dnsimple.py
+++ b/plugins/modules/dnsimple.py
@@ -25,8 +25,8 @@ attributes:
options:
account_email:
description:
- - Account email. If omitted, the environment variables E(DNSIMPLE_EMAIL) and E(DNSIMPLE_API_TOKEN) are looked for.
- - 'If those variables are not found, a C(.dnsimple) file is looked for, see: U(https://github.com/mikemaccana/dnsimple-python#getting-started).'
+ - Account email. If omitted, the environment variables E(DNSIMPLE_EMAIL) and E(DNSIMPLE_API_TOKEN) will be looked for.
+ - 'If those variables are not found, a C(.dnsimple) file will be looked for, see: U(https://github.com/mikemaccana/dnsimple-python#getting-started).'
- C(.dnsimple) config files are only supported in dnsimple-python<2.0.0.
type: str
account_api_token:
@@ -36,12 +36,12 @@ options:
domain:
description:
- Domain to work with. Can be the domain name (for example V(mydomain.com)) or the numeric ID of the domain in DNSimple.
- - If omitted, a list of domains is returned.
- - If domain is present but the domain does not exist, it is created.
+ - If omitted, a list of domains will be returned.
+ - If domain is present but the domain does not exist, it will be created.
type: str
record:
description:
- - Record to add, if blank a record for the domain is created, supports the wildcard (*).
+ - Record to add, if blank a record for the domain will be created, supports the wildcard (*).
type: str
record_ids:
description:
diff --git a/plugins/modules/dnsimple_info.py b/plugins/modules/dnsimple_info.py
index 78b4ceae25..c508525fac 100644
--- a/plugins/modules/dnsimple_info.py
+++ b/plugins/modules/dnsimple_info.py
@@ -26,8 +26,8 @@ options:
name:
description:
- The domain name to retrieve info from.
- - Returns all associated records for this domain if specified.
- - If not specified, returns all domains associated with the account ID.
+ - Will return all associated records for this domain if specified.
+ - If not specified, will return all domains associated with the account ID.
type: str
account_id:
@@ -43,7 +43,7 @@ options:
record:
description:
- The record to find.
- - If specified, only this record is returned instead of all records.
+ - If specified, only this record will be returned instead of all records.
required: false
type: str
diff --git a/plugins/modules/dnsmadeeasy.py b/plugins/modules/dnsmadeeasy.py
index ec17880af7..83268af379 100644
--- a/plugins/modules/dnsmadeeasy.py
+++ b/plugins/modules/dnsmadeeasy.py
@@ -50,7 +50,7 @@ options:
record_name:
description:
- - Record name to get/create/delete/update. If O(record_name) is not specified; all records for the domain are returned
+ - Record name to get/create/delete/update. If record_name is not specified; all records for the domain will be returned
in "result" regardless of the state argument.
type: str
@@ -64,8 +64,8 @@ options:
description:
- 'Record value. HTTPRED: , MX: , NS: , PTR: , SRV:
, TXT: ".'
- - If O(record_value) is not specified; no changes are made and the record is returned in RV(ignore:result) (in other
- words, this module can be used to fetch a record's current ID, type, and TTL).
+ - If record_value is not specified; no changes will be made and the record will be returned in 'result' (in other words,
+ this module can be used to fetch a record's current ID, type, and ttl).
type: str
record_ttl:
@@ -83,8 +83,8 @@ options:
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
+ self-signed certificates.
type: bool
default: true
@@ -128,7 +128,7 @@ options:
contactList:
description:
- - Name or ID of the contact list that the monitor notifies.
+ - Name or ID of the contact list that the monitor will notify.
- The default V('') means the Account Owner.
type: str
@@ -195,7 +195,7 @@ notes:
- Only A records can have a O(monitor) or O(failover).
- To add failover, the O(failover), O(autoFailover), O(port), O(protocol), O(ip1), and O(ip2) options are required.
- To add monitor, the O(monitor), O(port), O(protocol), O(maxEmails), O(systemDescription), and O(ip1) options are required.
- - The options O(monitor) and O(failover) share O(port), O(protocol), and O(ip1) options.
+ - The monitor and the failover will share O(port), O(protocol), and O(ip1) options.
requirements: [hashlib, hmac]
author: "Brice Burgess (@briceburg)"
"""
@@ -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(),
- record_type=dict(choices=[
+ record_name=dict(required=False),
+ record_type=dict(required=False, choices=[
'A', 'AAAA', 'CNAME', 'ANAME', 'HTTPRED', 'MX', 'NS', 'PTR', 'SRV', 'TXT']),
- record_value=dict(),
- record_ttl=dict(default=1800, type='int'),
+ record_value=dict(required=False),
+ record_ttl=dict(required=False, 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(),
- httpFqdn=dict(),
- httpFile=dict(),
- httpQueryString=dict(),
+ contactList=dict(default=None),
+ httpFqdn=dict(required=False),
+ httpFile=dict(required=False),
+ httpQueryString=dict(required=False),
failover=dict(default=False, type='bool'),
autoFailover=dict(default=False, type='bool'),
- ip1=dict(),
- ip2=dict(),
- ip3=dict(),
- ip4=dict(),
- ip5=dict(),
+ ip1=dict(required=False),
+ ip2=dict(required=False),
+ ip3=dict(required=False),
+ ip4=dict(required=False),
+ ip5=dict(required=False),
validate_certs=dict(default=True, type='bool'),
),
required_together=[
diff --git a/plugins/modules/dpkg_divert.py b/plugins/modules/dpkg_divert.py
index 6ef1f394e4..83a22bd632 100644
--- a/plugins/modules/dpkg_divert.py
+++ b/plugins/modules/dpkg_divert.py
@@ -17,8 +17,8 @@ author:
- quidame (@quidame)
description:
- A diversion is for C(dpkg) the knowledge that only a given package (or the local administrator) is allowed to install
- a file at a given location. Other packages shipping their own version of this file are forced to O(divert) it, that is
- to install it at another location. It allows one to keep changes in a file provided by a debian package by preventing
+ a file at a given location. Other packages shipping their own version of this file will be forced to O(divert) it, that
+ is to install it at another location. It allows one to keep changes in a file provided by a debian package by preventing
it being overwritten on package upgrade.
- This module manages diversions of debian packages files using the C(dpkg-divert) commandline tool. It can either create
or remove a diversion for a given file, but also update an existing diversion to modify its O(holder) and/or its O(divert)
@@ -54,7 +54,7 @@ options:
type: str
divert:
description:
- - The location where the versions of file are diverted.
+ - The location where the versions of file will be diverted.
- Default is to add suffix C(.distrib) to the file path.
- This parameter is ignored when O(state=absent).
type: path
@@ -70,7 +70,7 @@ options:
force:
description:
- When O(rename=true) and O(force=true), renaming is performed even if the target of the renaming exists, in other words
- the existing contents of the file at this location are lost.
+ the existing contents of the file at this location will be lost.
- This parameter is ignored when O(rename=false).
type: bool
default: false
@@ -166,11 +166,11 @@ def main():
module = AnsibleModule(
argument_spec=dict(
path=dict(required=True, type='path'),
- 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),
+ 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),
),
supports_check_mode=True,
)
diff --git a/plugins/modules/easy_install.py b/plugins/modules/easy_install.py
index 3eb56ecd11..734f0dc4df 100644
--- a/plugins/modules/easy_install.py
+++ b/plugins/modules/easy_install.py
@@ -33,8 +33,8 @@ options:
- An optional O(virtualenv) directory path to install into. If the O(virtualenv) does not exist, it is created automatically.
virtualenv_site_packages:
description:
- - Whether the virtual environment inherits packages from the global site-packages directory. Note that this setting
- has no effect on an already existing virtual environment, so if you want to change it, the environment must be deleted
+ - Whether the virtual environment will inherit packages from the global site-packages directory. Note that if this setting
+ is changed on an already existing virtual environment it will not have any effect, the environment must be deleted
and newly created.
type: bool
default: false
@@ -74,12 +74,6 @@ EXAMPLES = r"""
community.general.easy_install:
name: bottle
virtualenv: /webapps/myapp/venv
-
-- name: Install a python package using pyvenv as the virtualenv tool
- community.general.easy_install:
- name: package_name
- virtualenv: /opt/myenv
- virtualenv_command: pyvenv
"""
import os
@@ -89,7 +83,7 @@ from ansible.module_utils.basic import AnsibleModule
def install_package(module, name, easy_install, executable_arguments):
- cmd = [easy_install] + executable_arguments + [name]
+ cmd = '%s %s %s' % (easy_install, ' '.join(executable_arguments), name)
rc, out, err = module.run_command(cmd)
return rc, out, err
@@ -133,13 +127,14 @@ def _get_easy_install(module, env=None, executable=None):
def main():
arg_spec = dict(
name=dict(required=True),
- state=dict(default='present',
+ state=dict(required=False,
+ default='present',
choices=['present', 'latest'],
type='str'),
- virtualenv=dict(),
+ virtualenv=dict(default=None, required=False),
virtualenv_site_packages=dict(default=False, type='bool'),
- virtualenv_command=dict(default='virtualenv'),
- executable=dict(default='easy_install'),
+ virtualenv_command=dict(default='virtualenv', required=False),
+ executable=dict(default='easy_install', required=False),
)
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 8552b55ccd..3455691cd0 100644
--- a/plugins/modules/elasticsearch_plugin.py
+++ b/plugins/modules/elasticsearch_plugin.py
@@ -66,7 +66,7 @@ options:
type: bool
plugin_bin:
description:
- - Location of the plugin binary. If this file is not found, the default plugin binaries are used.
+ - Location of the plugin binary. If this file is not found, the default plugin binaries will be used.
type: path
plugin_dir:
description:
@@ -83,7 +83,7 @@ options:
type: str
version:
description:
- - Version of the plugin to be installed. If plugin exists with previous version, it is NOT updated.
+ - Version of the plugin to be installed. If plugin exists with previous version, it will NOT be updated.
type: str
"""
@@ -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(),
- url=dict(),
+ src=dict(default=None),
+ url=dict(default=None),
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(),
- proxy_port=dict(),
- version=dict()
+ proxy_host=dict(default=None),
+ proxy_port=dict(default=None),
+ version=dict(default=None)
),
mutually_exclusive=[("src", "url")],
supports_check_mode=True
diff --git a/plugins/modules/emc_vnx_sg_member.py b/plugins/modules/emc_vnx_sg_member.py
index a0b1e920e2..bdb86625d1 100644
--- a/plugins/modules/emc_vnx_sg_member.py
+++ b/plugins/modules/emc_vnx_sg_member.py
@@ -77,7 +77,7 @@ EXAMPLES = r"""
RETURN = r"""
hluid:
- description: LUNID visible to hosts attached to the storage group.
+ description: LUNID that hosts attached to the storage group will see.
type: int
returned: success
"""
diff --git a/plugins/modules/facter.py b/plugins/modules/facter.py
index 20be3d4a4d..ce9320282d 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(type='list', elements='str')
+ arguments=dict(required=False, type='list', elements='str')
)
)
diff --git a/plugins/modules/filesystem.py b/plugins/modules/filesystem.py
index f14458c337..2edc8be5ab 100644
--- a/plugins/modules/filesystem.py
+++ b/plugins/modules/filesystem.py
@@ -64,10 +64,10 @@ options:
description:
- If V(true), if the block device and filesystem size differ, grow the filesystem into the space.
- Supported for C(bcachefs), C(btrfs), C(ext2), C(ext3), C(ext4), C(ext4dev), C(f2fs), C(lvm), C(xfs), C(ufs) and C(vfat)
- filesystems. Attempts to resize other filesystem types fail.
- - XFS only grows if mounted. Currently, the module is based on commands from C(util-linux) package to perform operations,
+ filesystems. Attempts to resize other filesystem types will fail.
+ - XFS Will only grow if mounted. Currently, the module is based on commands from C(util-linux) package to perform operations,
so resizing of XFS is not supported on FreeBSD systems.
- - VFAT is likely to fail if C(fatresize < 1.04).
+ - VFAT will likely fail if C(fatresize < 1.04).
- Mutually exclusive with O(uuid).
type: bool
default: false
@@ -82,7 +82,7 @@ options:
- See xfs_admin(8) (C(xfs)), tune2fs(8) (C(ext2), C(ext3), C(ext4), C(ext4dev)) for possible values.
- For O(fstype=lvm) the value is ignored, it resets the PV UUID if set.
- Supported for O(fstype) being one of C(bcachefs), C(ext2), C(ext3), C(ext4), C(ext4dev), C(lvm), or C(xfs).
- - This is B(not idempotent). Specifying this option always results in a change.
+ - This is B(not idempotent). Specifying this option will always result in a change.
- Mutually exclusive with O(resizefs).
type: str
version_added: 7.1.0
@@ -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'),
+ uuid=dict(type='str', required=False),
),
required_if=[
('state', 'present', ['fstype'])
diff --git a/plugins/modules/flatpak.py b/plugins/modules/flatpak.py
index 98de9de3ed..13898c3349 100644
--- a/plugins/modules/flatpak.py
+++ b/plugins/modules/flatpak.py
@@ -27,7 +27,7 @@ attributes:
check_mode:
support: partial
details:
- - If O(state=latest), the module always returns RV(ignore:changed=true).
+ - If O(state=latest), the module will always return C(changed=true).
diff_mode:
support: none
options:
@@ -53,7 +53,7 @@ options:
- When supplying a reverse DNS name, you can use the O(remote) option to specify on what remote to look for the flatpak.
An example for a reverse DNS name is C(org.gnome.gedit).
- When used with O(state=absent) or O(state=latest), it is recommended to specify the name in the reverse DNS format.
- - When supplying a URL with O(state=absent) or O(state=latest), the module tries to match the installed flatpak based
+ - When supplying a URL with O(state=absent) or O(state=latest), the module will try to match the installed flatpak based
on the name of the flatpakref to remove or update it. However, there is no guarantee that the names of the flatpakref
file and the reverse DNS name of the installed flatpak do match.
type: list
@@ -107,12 +107,6 @@ EXAMPLES = r"""
state: present
remote: gnome
-- name: Install GIMP using custom flatpak binary path
- community.general.flatpak:
- name: org.gimp.GIMP
- state: present
- executable: /usr/local/bin/flatpak-dev
-
- name: Install multiple packages
community.general.flatpak:
name:
@@ -171,6 +165,26 @@ command:
returned: When a flatpak command has been executed
type: str
sample: "/usr/bin/flatpak install --user --nontinteractive flathub org.gnome.Calculator"
+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: Error searching remote flathub: Can't find ref org.gnome.KDE"
+stdout:
+ description: Output from flatpak binary.
+ returned: When a flatpak command has been executed
+ type: str
+ sample: "org.gnome.Calendar/x86_64/stable\tcurrent\norg.gnome.gitg/x86_64/stable\tcurrent\n"
"""
from ansible.module_utils.six.moves.urllib.parse import urlparse
diff --git a/plugins/modules/flatpak_remote.py b/plugins/modules/flatpak_remote.py
index 641ce930d0..ba202d3033 100644
--- a/plugins/modules/flatpak_remote.py
+++ b/plugins/modules/flatpak_remote.py
@@ -17,7 +17,7 @@ description:
- Allows users to add or remove flatpak remotes.
- The flatpak remotes concept is comparable to what is called repositories in other packaging formats.
- Currently, remote addition is only supported using C(flatpakrepo) file URLs.
- - Existing remotes are not updated.
+ - Existing remotes will not be updated.
- See the M(community.general.flatpak) module for managing flatpaks.
author:
- John Kwiatkoski (@JayKayy)
@@ -56,8 +56,8 @@ options:
name:
description:
- The desired name for the flatpak remote to be registered under on the managed host.
- - When used with O(state=present), the remote is added to the managed host under the specified O(name).
- - When used with O(state=absent) the remote with that name is removed.
+ - When used with O(state=present), the remote will be added to the managed host under the specified O(name).
+ - When used with O(state=absent) the remote with that name will be removed.
type: str
required: true
state:
@@ -112,6 +112,26 @@ 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 1ea9c68a94..c01433cb90 100644
--- a/plugins/modules/gem.py
+++ b/plugins/modules/gem.py
@@ -48,7 +48,7 @@ options:
repository:
type: str
description:
- - The repository from which the gem is installed.
+ - The repository from which the gem will be installed.
required: false
aliases: [source]
user_install:
@@ -65,7 +65,7 @@ options:
install_dir:
type: path
description:
- - Install the gems into a specific directory. These gems are independent from the global installed ones. Specifying
+ - Install the gems into a specific directory. These gems will be independent from the global installed ones. Specifying
this requires user_install to be false.
required: false
bindir:
@@ -295,22 +295,22 @@ def main():
module = AnsibleModule(
argument_spec=dict(
- executable=dict(type='path'),
- gem_source=dict(type='path'),
- include_dependencies=dict(default=True, type='bool'),
+ executable=dict(required=False, type='path'),
+ gem_source=dict(required=False, type='path'),
+ include_dependencies=dict(required=False, default=True, type='bool'),
name=dict(required=True, type='str'),
- 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'),
+ 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'),
bindir=dict(type='path'),
norc=dict(type='bool', default=True),
- 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'),
+ 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'),
),
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 b8864ea3e3..77ee653d85 100644
--- a/plugins/modules/gio_mime.py
+++ b/plugins/modules/gio_mime.py
@@ -26,12 +26,12 @@ attributes:
options:
mime_type:
description:
- - MIME type for which a default handler is set.
+ - MIME type for which a default handler will be set.
type: str
required: true
handler:
description:
- - Default handler set for the MIME type.
+ - Default handler will be set for the MIME type.
type: str
required: true
notes:
@@ -61,6 +61,18 @@ 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 29922382de..c8152cfa42 100644
--- a/plugins/modules/git_config_info.py
+++ b/plugins/modules/git_config_info.py
@@ -26,7 +26,7 @@ options:
name:
description:
- The name of the setting to read.
- - If not provided, all settings are returned as RV(config_values).
+ - If not provided, all settings will be returned as RV(config_values).
type: str
path:
description:
@@ -94,8 +94,8 @@ config_values:
description:
- This is a dictionary mapping a git configuration setting to a list of its values.
- When O(name) is not set, all configuration settings are returned here.
- - When O(name) is set, only the setting specified in O(name) is returned here. If that setting is not set, the key is
- still present, and its value is an empty list.
+ - When O(name) is set, only the setting specified in O(name) is returned here. If that setting is not set, the key will
+ still be present, and its value will be an empty list.
returned: success
type: dict
sample:
@@ -113,7 +113,7 @@ def main():
argument_spec=dict(
name=dict(type="str"),
path=dict(type="path"),
- scope=dict(type="str", default="system", choices=["global", "system", "local", "file"]),
+ scope=dict(required=False, 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 4ec7fbb769..2e5f9125ad 100644
--- a/plugins/modules/github_deploy_key.py
+++ b/plugins/modules/github_deploy_key.py
@@ -57,8 +57,8 @@ options:
type: str
read_only:
description:
- - If V(true), the deploy key is only able to read repository contents. Otherwise, the deploy key is able to read and
- write.
+ - If V(true), the deploy key will only be able to read repository contents. Otherwise, the deploy key will be able to
+ read and write.
type: bool
default: true
state:
@@ -301,18 +301,18 @@ class GithubDeployKey(object):
def main():
module = AnsibleModule(
argument_spec=dict(
- github_url=dict(type='str', default="https://api.github.com"),
+ github_url=dict(required=False, 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(type='bool', default=True),
+ read_only=dict(required=False, type='bool', default=True),
state=dict(default='present', choices=['present', 'absent']),
- 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)
+ 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)
),
mutually_exclusive=[
['password', 'token']
diff --git a/plugins/modules/github_key.py b/plugins/modules/github_key.py
index 80b0a6bf70..f9754398cc 100644
--- a/plugins/modules/github_key.py
+++ b/plugins/modules/github_key.py
@@ -45,8 +45,8 @@ options:
type: str
force:
description:
- - The default is V(true), which replaces the existing remote key if it is different than O(pubkey). If V(false), the
- key is only set if no key with the given O(name) exists.
+ - The default is V(true), which will replace the existing remote key if it is different than O(pubkey). If V(false),
+ the key will only be set if no key with the given O(name) exists.
type: bool
default: true
api_url:
diff --git a/plugins/modules/github_release.py b/plugins/modules/github_release.py
index eae2081701..1376bf4f3d 100644
--- a/plugins/modules/github_release.py
+++ b/plugins/modules/github_release.py
@@ -182,29 +182,13 @@ def main():
else:
gh_obj = github3.GitHub()
- # GitHub's token formats:
- # - ghp_ - Personal access token (classic)
- # - github_pat_ - Fine-grained personal access token
- # - gho_ - OAuth access token
- # - ghu_ - User access token for a GitHub App
- # - ghs_ - Installation access token for a GitHub App
- # - ghr_ - Refresh token for a GitHub App
- #
- # References:
- # https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/about-authentication-to-github#githubs-token-formats
- #
- # Test if we're actually logged in, but skip this check for some token prefixes
- SKIPPED_TOKEN_PREFIXES = ['ghs_']
- if password or (login_token and not any(login_token.startswith(prefix) for prefix in SKIPPED_TOKEN_PREFIXES)):
+ # test if we're actually logged in
+ if password or login_token:
gh_obj.me()
except github3.exceptions.AuthenticationFailed as e:
module.fail_json(msg='Failed to connect to GitHub: %s' % to_native(e),
details="Please check username and password or token "
"for repository %s" % repo)
- except github3.exceptions.GitHubError as e:
- module.fail_json(msg='GitHub API error: %s' % to_native(e),
- details="Please check username and password or token "
- "for repository %s" % repo)
repository = gh_obj.repository(user, repo)
diff --git a/plugins/modules/github_repo.py b/plugins/modules/github_repo.py
index 0971e22878..2d2c6f8588 100644
--- a/plugins/modules/github_repo.py
+++ b/plugins/modules/github_repo.py
@@ -72,7 +72,7 @@ options:
organization:
description:
- Organization for the repository.
- - When O(state=present), the repository is created in the current user profile.
+ - When O(state=present), the repository will be created in the current user profile.
type: str
required: false
api_url:
@@ -83,9 +83,11 @@ options:
version_added: "3.5.0"
force_defaults:
description:
- - If V(true), overwrite current O(description) and O(private) attributes with defaults.
- - V(true) is deprecated for this option and will not be allowed starting in community.general 13.0.0. V(false) will be the default value then.
+ - Overwrite current O(description) and O(private) attributes with defaults if set to V(true), which currently is the
+ default.
+ - The default for this option will be deprecated in a future version of this collection, and eventually change to V(false).
type: bool
+ default: true
required: false
version_added: 4.1.0
requirements:
@@ -244,13 +246,13 @@ 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', default="present",
+ state=dict(type='str', required=False, default="present",
choices=["present", "absent"]),
- organization=dict(type='str', ),
+ organization=dict(type='str', required=False, default=None),
private=dict(type='bool'),
description=dict(type='str'),
- api_url=dict(type='str', default='https://api.github.com'),
- force_defaults=dict(type='bool'),
+ api_url=dict(type='str', required=False, default='https://api.github.com'),
+ force_defaults=dict(type='bool', default=True),
)
module = AnsibleModule(
argument_spec=module_args,
@@ -260,11 +262,6 @@ def main():
mutually_exclusive=[('username', 'access_token')]
)
- if module.params['force_defaults'] is None:
- module.deprecate("'force_defaults=true' is deprecated and will not be allowed in community.general 13.0.0, use 'force_defaults=false' instead",
- version="13.0.0", collection_name="community.general")
- module.params['force_defaults'] = True
-
if not HAS_GITHUB_PACKAGE:
module.fail_json(msg=missing_required_lib(
"PyGithub"), exception=GITHUB_IMP_ERR)
diff --git a/plugins/modules/github_webhook.py b/plugins/modules/github_webhook.py
index 1ae2e71aaa..8608c90bc9 100644
--- a/plugins/modules/github_webhook.py
+++ b/plugins/modules/github_webhook.py
@@ -32,7 +32,7 @@ options:
- repo
url:
description:
- - URL to which payloads are delivered.
+ - URL to which payloads will be delivered.
type: str
required: true
content_type:
@@ -208,16 +208,25 @@ 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'), 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'),
+ 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'),
user=dict(type='str', required=True),
- password=dict(type='str', no_log=True),
- token=dict(type='str', no_log=True),
- github_url=dict(type='str', default="https://api.github.com")),
+ 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")),
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 75315c77aa..648095b3fa 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', no_log=True),
- token=dict(type='str', no_log=True),
+ password=dict(type='str', required=False, no_log=True),
+ token=dict(type='str', required=False, no_log=True),
github_url=dict(
- type='str', default="https://api.github.com")),
+ type='str', required=False, 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 6ed6e6a0c5..b32169ef5a 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'),
+ ref_branch=dict(type='str', required=False),
state=dict(type='str', default="present", choices=["absent", "present"]),
)
diff --git a/plugins/modules/gitlab_deploy_key.py b/plugins/modules/gitlab_deploy_key.py
index d116df0714..f5ae130324 100644
--- a/plugins/modules/gitlab_deploy_key.py
+++ b/plugins/modules/gitlab_deploy_key.py
@@ -55,8 +55,8 @@ options:
default: false
state:
description:
- - When V(present) the deploy key is added to the project if it does not exist.
- - When V(absent) it is removed from the project if it exists.
+ - When V(present) the deploy key added to the project if it does not exist.
+ - When V(absent) it will be removed from the project if it exists.
default: present
type: str
choices: ["present", "absent"]
@@ -208,7 +208,7 @@ class GitLabDeployKey(object):
'''
def find_deploy_key(self, project, key_title):
for deploy_key in project.keys.list(**list_all_kwargs):
- if deploy_key.title == key_title:
+ if (deploy_key.title == key_title):
return deploy_key
'''
diff --git a/plugins/modules/gitlab_group.py b/plugins/modules/gitlab_group.py
index d6105642b8..6d03476092 100644
--- a/plugins/modules/gitlab_group.py
+++ b/plugins/modules/gitlab_group.py
@@ -13,8 +13,8 @@ DOCUMENTATION = r"""
module: gitlab_group
short_description: Creates/updates/deletes GitLab Groups
description:
- - When the group does not exist in GitLab, it is created.
- - When the group does exist and O(state=absent), the group is deleted.
+ - When the group does not exist in GitLab, it will be created.
+ - When the group does exist and state=absent, the group will be deleted.
author:
- Werner Dijkerman (@dj-wasabi)
- Guillaume Martinez (@Lunik)
@@ -101,8 +101,8 @@ options:
type: str
path:
description:
- - The path of the group you want to create, this is O(api_url)/O(path).
- - If not supplied, O(name) is used.
+ - The path of the group you want to create, this will be api_url/group_path.
+ - If not supplied, the group_name will be used.
type: str
prevent_forking_outside_group:
description:
@@ -129,7 +129,7 @@ options:
service_access_tokens_expiration_enforced:
description:
- Service account token expiration.
- - Changes do not affect existing token expiration dates.
+ - Changes will not affect existing token expiration dates.
- Only available for top level groups.
type: bool
version_added: 9.5.0
diff --git a/plugins/modules/gitlab_group_access_token.py b/plugins/modules/gitlab_group_access_token.py
index 0fe6c14af2..3da3e42114 100644
--- a/plugins/modules/gitlab_group_access_token.py
+++ b/plugins/modules/gitlab_group_access_token.py
@@ -28,7 +28,7 @@ extends_documentation_fragment:
- community.general.attributes
notes:
- Access tokens can not be changed. If a parameter needs to be changed, an acceess token has to be recreated. Whether tokens
- are recreated or not is controlled by the O(recreate) option, which defaults to V(never).
+ will be recreated is controlled by the O(recreate) option, which defaults to V(never).
- Token string is contained in the result only when access token is created or recreated. It can not be fetched afterwards.
- Token matching is done by comparing O(name) option.
attributes:
@@ -79,17 +79,17 @@ options:
required: true
recreate:
description:
- - Whether the access token is recreated if it already exists.
- - When V(never) the token is never recreated.
- - When V(always) the token is always recreated.
- - When V(state_change) the token is recreated if there is a difference between desired state and actual state.
+ - Whether the access token will be recreated if it already exists.
+ - When V(never) the token will never be recreated.
+ - When V(always) the token will always be recreated.
+ - When V(state_change) the token will be recreated if there is a difference between desired state and actual state.
type: str
choices: ["never", "always", "state_change"]
default: never
state:
description:
- - When V(present) the access token is added to the group if it does not exist.
- - When V(absent) it is removed from the group if it exists.
+ - When V(present) the access token will be added to the group if it does not exist.
+ - When V(absent) it will be removed from the group if it exists.
default: present
type: str
choices: ["present", "absent"]
@@ -195,7 +195,7 @@ class GitLabGroupAccessToken(object):
def find_access_token(self, group, name):
access_tokens = [x for x in group.access_tokens.list(all=True) if not getattr(x, 'revoked', False)]
for access_token in access_tokens:
- if access_token.name == name:
+ if (access_token.name == name):
self.access_token_object = access_token
return False
return False
@@ -245,7 +245,7 @@ def main():
'create_runner',
'ai_features',
'k8s_proxy']),
- access_level=dict(type='str', default='maintainer', choices=['guest', 'reporter', 'developer', 'maintainer', 'owner']),
+ access_level=dict(type='str', required=False, 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 10ca467bcd..926f4fe20a 100644
--- a/plugins/modules/gitlab_group_variable.py
+++ b/plugins/modules/gitlab_group_variable.py
@@ -15,9 +15,9 @@ short_description: Creates, updates, or deletes GitLab groups variables
version_added: 1.2.0
description:
- Creates a group variable if it does not exist.
- - When a group variable does exist, its value is updated when the values are different.
+ - When a group variable does exist, its value will be updated when the values are different.
- Variables which are untouched in the playbook, but are not untouched in the GitLab group, they stay untouched (O(purge=false))
- or are deleted (O(purge=true)).
+ or will be deleted (O(purge=true)).
author:
- Florent Madiot (@scodeman)
requirements:
@@ -52,7 +52,7 @@ options:
type: bool
vars:
description:
- - When the list element is a simple key-value pair, masked, raw and protected are set to V(false).
+ - When the list element is a simple key-value pair, masked, raw and protected will be set to false.
- When the list element is a dict with the keys C(value), C(masked), C(raw) and C(protected), the user can have full
control about whether a value should be masked, raw, protected or both.
- Support for group variables requires GitLab >= 9.5.
@@ -185,22 +185,22 @@ group_variable:
description: A list of variables which were created.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
untouched:
description: A list of variables which exist.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
removed:
description: A list of variables which were deleted.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
updated:
description: A list of variables whose values were changed.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
"""
from ansible.module_utils.basic import AnsibleModule
@@ -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', default=False),
- vars=dict(type='dict', default=dict(), no_log=True),
+ purge=dict(type='bool', required=False, default=False),
+ vars=dict(type='dict', required=False, 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', default=list(), options=dict(
+ variables=dict(type='list', elements='dict', required=False, 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 87c8aa635a..cb132c8aaa 100644
--- a/plugins/modules/gitlab_hook.py
+++ b/plugins/modules/gitlab_hook.py
@@ -45,8 +45,8 @@ options:
type: str
state:
description:
- - When V(present) the hook is updated to match the input or created if it does not exist.
- - When V(absent) hook is deleted if it exists.
+ - When V(present) the hook will be updated to match the input or created if it does not exist.
+ - When V(absent) hook will be deleted if it exists.
default: present
type: str
choices: ["present", "absent"]
@@ -103,15 +103,15 @@ options:
version_added: '8.4.0'
hook_validate_certs:
description:
- - Whether GitLab performs SSL verification when triggering the hook.
+ - Whether GitLab will do SSL verification when triggering the hook.
type: bool
default: false
aliases: [enable_ssl_verification]
token:
description:
- Secret token to validate hook messages at the receiver.
- - If this is present it always results in a change as it cannot be retrieved from GitLab.
- - It shows up in the C(X-GitLab-Token) HTTP request header.
+ - If this is present it will always result in a change as it cannot be retrieved from GitLab.
+ - Will show up in the X-GitLab-Token HTTP request header.
required: false
type: str
"""
@@ -271,7 +271,7 @@ class GitLabHook(object):
'''
def find_hook(self, project, hook_url):
for hook in project.hooks.list(**list_all_kwargs):
- if hook.url == hook_url:
+ if (hook.url == hook_url):
return hook
'''
@@ -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'),
+ releases_events=dict(type='bool', default=None),
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 0f2c9b7752..2023b0ad7d 100644
--- a/plugins/modules/gitlab_instance_variable.py
+++ b/plugins/modules/gitlab_instance_variable.py
@@ -16,10 +16,10 @@ short_description: Creates, updates, or deletes GitLab instance variables
version_added: 7.1.0
description:
- Creates a instance variable if it does not exist.
- - When a instance variable does exist, its value is updated if the values are different.
+ - When a instance variable does exist, its value will be updated if the values are different.
- Support for instance variables requires GitLab >= 13.0.
- - Variables which are not mentioned in the modules options, but are present on the GitLab instance, either stay (O(purge=false))
- or are deleted (O(purge=true)).
+ - Variables which are not mentioned in the modules options, but are present on the GitLab instance, will either stay (O(purge=false))
+ or will be deleted (O(purge=true)).
author:
- Benedikt Braunger (@benibr)
requirements:
@@ -124,22 +124,22 @@ instance_variable:
description: A list of variables which were created.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
untouched:
description: A list of variables which exist.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
removed:
description: A list of variables which were deleted.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
updated:
description: A list pre-existing variables whose values have been set.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
"""
from ansible.module_utils.basic import AnsibleModule
@@ -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', default=False),
- variables=dict(type='list', elements='dict', default=list(), options=dict(
+ purge=dict(type='bool', required=False, default=False),
+ variables=dict(type='list', elements='dict', required=False, 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 c6bf6f8328..47b6f072e8 100644
--- a/plugins/modules/gitlab_issue.py
+++ b/plugins/modules/gitlab_issue.py
@@ -18,8 +18,8 @@ short_description: Create, update, or delete GitLab issues
version_added: '8.1.0'
description:
- Creates an issue if it does not exist.
- - When an issue does exist, it is updated if the provided parameters are different.
- - When an issue does exist and O(state=absent), the issue is deleted.
+ - When an issue does exist, it will be updated if the provided parameters are different.
+ - When an issue does exist and O(state=absent), the issue will be deleted.
- When multiple issues are detected, the task fails.
- Existing issues are matched based on O(title) and O(state_filter) filters.
author:
@@ -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'),
- 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'),
+ 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),
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 a139d1fcbd..8b9503e325 100644
--- a/plugins/modules/gitlab_label.py
+++ b/plugins/modules/gitlab_label.py
@@ -12,8 +12,8 @@ module: gitlab_label
short_description: Creates/updates/deletes GitLab Labels belonging to project or group
version_added: 8.3.0
description:
- - When a label does not exist, it is created.
- - When a label does exist, its value is updated when the values are different.
+ - When a label does not exist, it will be created.
+ - When a label does exist, its value will be updated when the values are different.
- Labels can be purged.
author:
- "Gabriele Pongelli (@gpongelli)"
@@ -197,22 +197,22 @@ labels:
description: A list of labels which were created.
returned: always
type: list
- sample: ["abcd", "label-one"]
+ sample: ['abcd', 'label-one']
untouched:
description: A list of labels which exist.
returned: always
type: list
- sample: ["defg", "new-label"]
+ sample: ['defg', 'new-label']
removed:
description: A list of labels which were deleted.
returned: always
type: list
- sample: ["defg", "new-label"]
+ sample: ['defg', 'new-label']
updated:
description: A list pre-existing labels whose values have been set.
returned: always
type: list
- sample: ["defg", "new-label"]
+ sample: ['defg', 'new-label']
labels_obj:
description: API object.
returned: success
@@ -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'),
- group=dict(type='str'),
- purge=dict(type='bool', default=False),
- labels=dict(type='list', elements='dict', default=list(),
+ 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(),
options=dict(
name=dict(type='str', required=True),
- color=dict(type='str'),
- description=dict(type='str'),
- priority=dict(type='int'),
- new_name=dict(type='str'),)
+ 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),)
),
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 922b224c1f..fd6068980a 100644
--- a/plugins/modules/gitlab_merge_request.py
+++ b/plugins/modules/gitlab_merge_request.py
@@ -18,8 +18,8 @@ short_description: Create, update, or delete GitLab merge requests
version_added: 7.1.0
description:
- Creates a merge request if it does not exist.
- - When a single merge request does exist, it is updated if the provided parameters are different.
- - When a single merge request does exist and O(state=absent), the merge request is deleted.
+ - When a single merge request does exist, it will be updated if the provided parameters are different.
+ - When a single merge request does exist and O(state=absent), the merge request will be deleted.
- When multiple merge requests are detected, the task fails.
- Existing merge requests are matched based on O(title), O(source_branch), O(target_branch), and O(state_filter) filters.
author:
@@ -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'),
- labels=dict(type='str', default=""),
- description_path=dict(type='path'),
- remove_source_branch=dict(type='bool', default=False),
+ 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),
state_filter=dict(type='str', default="opened", choices=["opened", "closed", "locked", "merged"]),
- assignee_ids=dict(type='str'),
- reviewer_ids=dict(type='str'),
+ assignee_ids=dict(type='str', required=False),
+ reviewer_ids=dict(type='str', required=False),
state=dict(type='str', default="present", choices=["absent", "present"]),
)
diff --git a/plugins/modules/gitlab_milestone.py b/plugins/modules/gitlab_milestone.py
index 1406f96ffb..99b922c4dd 100644
--- a/plugins/modules/gitlab_milestone.py
+++ b/plugins/modules/gitlab_milestone.py
@@ -12,8 +12,8 @@ module: gitlab_milestone
short_description: Creates/updates/deletes GitLab Milestones belonging to project or group
version_added: 8.3.0
description:
- - When a milestone does not exist, it is created.
- - When a milestone does exist, its value is updated when the values are different.
+ - When a milestone does not exist, it will be created.
+ - When a milestone does exist, its value will be updated when the values are different.
- Milestones can be purged.
author:
- "Gabriele Pongelli (@gpongelli)"
@@ -181,22 +181,22 @@ milestones:
description: A list of milestones which were created.
returned: always
type: list
- sample: ["abcd", "milestone-one"]
+ sample: ['abcd', 'milestone-one']
untouched:
description: A list of milestones which exist.
returned: always
type: list
- sample: ["defg", "new-milestone"]
+ sample: ['defg', 'new-milestone']
removed:
description: A list of milestones which were deleted.
returned: always
type: list
- sample: ["defg", "new-milestone"]
+ sample: ['defg', 'new-milestone']
updated:
description: A list pre-existing milestones whose values have been set.
returned: always
type: list
- sample: ["defg", "new-milestone"]
+ sample: ['defg', 'new-milestone']
milestones_obj:
description: API object.
returned: success
@@ -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'),
- group=dict(type='str'),
- purge=dict(type='bool', default=False),
- milestones=dict(type='list', elements='dict', default=list(),
+ 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(),
options=dict(
title=dict(type='str', required=True),
- description=dict(type='str'),
- due_date=dict(type='str'),
- start_date=dict(type='str'),)
+ description=dict(type='str', required=False),
+ due_date=dict(type='str', required=False),
+ start_date=dict(type='str', required=False),)
),
state=dict(type='str', default="present", choices=["absent", "present"]),
)
diff --git a/plugins/modules/gitlab_project.py b/plugins/modules/gitlab_project.py
index 1e2140e24a..eec2b0fa7a 100644
--- a/plugins/modules/gitlab_project.py
+++ b/plugins/modules/gitlab_project.py
@@ -13,9 +13,9 @@ DOCUMENTATION = r"""
module: gitlab_project
short_description: Creates/updates/deletes GitLab Projects
description:
- - When the project does not exist in GitLab, it is created.
- - When the project does exist and O(state=absent), the project is deleted.
- - When changes are made to the project, the project is updated.
+ - When the project does not exist in GitLab, it will be created.
+ - When the project does exist and O(state=absent), the project will be deleted.
+ - When changes are made to the project, the project will be updated.
author:
- Werner Dijkerman (@dj-wasabi)
- Guillaume Martinez (@Lunik)
@@ -47,7 +47,7 @@ options:
build_timeout:
description:
- Maximum number of seconds a CI job can run.
- - If not specified on creation, GitLab imposes a default value.
+ - If not specified on creation, GitLab will impose a default value.
type: int
version_added: "10.6.0"
builds_access_level:
@@ -148,7 +148,7 @@ options:
type: str
import_url:
description:
- - Git repository which is imported into gitlab.
+ - Git repository which will be imported into gitlab.
- GitLab server needs read access to this git repository.
required: false
type: str
@@ -162,7 +162,7 @@ options:
version_added: "6.4.0"
initialize_with_readme:
description:
- - Initializes the project with a default C(README.md).
+ - Will initialize the project with a default C(README.md).
- Is only used when the project is created, and ignored otherwise.
type: bool
default: false
@@ -248,8 +248,8 @@ options:
version_added: "9.3.0"
path:
description:
- - The path of the project you want to create, this is server_url/O(group)/O(path).
- - If not supplied, O(name) is used.
+ - The path of the project you want to create, this will be server_url//path.
+ - If not supplied, name will be used.
type: str
releases_access_level:
description:
@@ -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', options=dict(
+ container_expiration_policy=dict(type='dict', default=None, 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 3747870d9a..07d3985633 100644
--- a/plugins/modules/gitlab_project_access_token.py
+++ b/plugins/modules/gitlab_project_access_token.py
@@ -28,7 +28,7 @@ extends_documentation_fragment:
- community.general.attributes
notes:
- Access tokens can not be changed. If a parameter needs to be changed, an acceess token has to be recreated. Whether tokens
- are recreated or not is controlled by the O(recreate) option, which defaults to V(never).
+ will be recreated is controlled by the O(recreate) option, which defaults to V(never).
- Token string is contained in the result only when access token is created or recreated. It can not be fetched afterwards.
- Token matching is done by comparing O(name) option.
attributes:
@@ -79,17 +79,17 @@ options:
required: true
recreate:
description:
- - Whether the access token is recreated if it already exists.
- - When V(never) the token is never recreated.
- - When V(always) the token is always recreated.
- - When V(state_change) the token is recreated if there is a difference between desired state and actual state.
+ - Whether the access token will be recreated if it already exists.
+ - When V(never) the token will never be recreated.
+ - When V(always) the token will always be recreated.
+ - When V(state_change) the token will be recreated if there is a difference between desired state and actual state.
type: str
choices: ["never", "always", "state_change"]
default: never
state:
description:
- - When V(present) the access token is added to the project if it does not exist.
- - When V(absent) it is removed from the project if it exists.
+ - When V(present) the access token will be added to the project if it does not exist.
+ - When V(absent) it will be removed from the project if it exists.
default: present
type: str
choices: ["present", "absent"]
@@ -193,7 +193,7 @@ class GitLabProjectAccessToken(object):
def find_access_token(self, project, name):
access_tokens = [x for x in project.access_tokens.list(all=True) if not getattr(x, 'revoked', False)]
for access_token in access_tokens:
- if access_token.name == name:
+ if (access_token.name == name):
self.access_token_object = access_token
return False
return False
@@ -243,7 +243,7 @@ def main():
'create_runner',
'ai_features',
'k8s_proxy']),
- access_level=dict(type='str', default='maintainer', choices=['guest', 'reporter', 'developer', 'maintainer', 'owner']),
+ access_level=dict(type='str', required=False, 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 4c261f5978..5903c9b5c4 100644
--- a/plugins/modules/gitlab_project_variable.py
+++ b/plugins/modules/gitlab_project_variable.py
@@ -11,10 +11,10 @@ DOCUMENTATION = r"""
module: gitlab_project_variable
short_description: Creates/updates/deletes GitLab Projects Variables
description:
- - When a project variable does not exist, it is created.
- - When a project variable does exist, its value is updated when the values are different.
+ - When a project variable does not exist, it will be created.
+ - When a project variable does exist, its value will be updated when the values are different.
- Variables which are untouched in the playbook, but are not untouched in the GitLab project, they stay untouched (O(purge=false))
- or are deleted (O(purge=true)).
+ or will be deleted (O(purge=true)).
author:
- "Markus Bergholz (@markuman)"
requirements:
@@ -45,12 +45,12 @@ options:
type: str
purge:
description:
- - When set to V(true), all variables which are not untouched in the task are deleted.
+ - When set to true, all variables which are not untouched in the task will be deleted.
default: false
type: bool
vars:
description:
- - When the list element is a simple key-value pair, masked, raw and protected are set to V(false).
+ - When the list element is a simple key-value pair, masked, raw and protected will be set to false.
- When the list element is a dict with the keys C(value), C(masked), C(raw) and C(protected), the user can have full
control about whether a value should be masked, raw, protected or both.
- Support for protected values requires GitLab >= 9.3.
@@ -202,22 +202,22 @@ project_variable:
description: A list of variables which were created.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
untouched:
description: A list of variables which exist.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
removed:
description: A list of variables which were deleted.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
updated:
description: A list of variables whose values were changed.
returned: always
type: list
- sample: ["ACCESS_KEY_ID", "SECRET_ACCESS_KEY"]
+ sample: ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']
"""
from ansible.module_utils.basic import AnsibleModule
@@ -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', default=False),
- vars=dict(type='dict', default=dict(), no_log=True),
+ purge=dict(type='bool', required=False, default=False),
+ vars=dict(type='dict', required=False, 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', default=list(), options=dict(
+ variables=dict(type='list', elements='dict', required=False, 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_runner.py b/plugins/modules/gitlab_runner.py
index 87ba152ffa..62875c552a 100644
--- a/plugins/modules/gitlab_runner.py
+++ b/plugins/modules/gitlab_runner.py
@@ -81,8 +81,8 @@ options:
description:
- The registration token is used to register new runners before GitLab 16.0.
- Required if O(state=present) for GitLab < 16.0.
- - If set, the runner is created using the old runner creation workflow.
- - If not set, the runner is created using the new runner creation workflow, introduced in GitLab 16.0.
+ - If set, the runner will be created using the old runner creation workflow.
+ - If not set, the runner will be created using the new runner creation workflow, introduced in GitLab 16.0.
- If not set, requires python-gitlab >= 4.0.0.
type: str
owned:
@@ -122,8 +122,8 @@ options:
- If set to V(not_protected), runner can pick up jobs from both protected and unprotected branches.
- If set to V(ref_protected), runner can pick up jobs only from protected branches.
- Before community.general 8.0.0 the default was V(ref_protected). This was changed to no default in community.general
- 8.0.0. If this option is not specified explicitly, GitLab uses V(not_protected) on creation, and the value set is
- not changed on any updates.
+ 8.0.0. If this option is not specified explicitly, GitLab will use V(not_protected) on creation, and the value set
+ will not be changed on any updates.
required: false
choices: ["not_protected", "ref_protected"]
type: str
@@ -393,10 +393,10 @@ class GitLabRunner(object):
# python-gitlab 2.2 through at least 2.5 returns a list of dicts for list() instead of a Runner
# object, so we need to handle both
if hasattr(runner, "description"):
- if runner.description == description:
+ if (runner.description == description):
return self._gitlab.runners.get(runner.id)
else:
- if runner['description'] == description:
+ if (runner['description'] == description):
return self._gitlab.runners.get(runner['id'])
'''
diff --git a/plugins/modules/gitlab_user.py b/plugins/modules/gitlab_user.py
index 4d7bd506f6..3be684b1e9 100644
--- a/plugins/modules/gitlab_user.py
+++ b/plugins/modules/gitlab_user.py
@@ -14,10 +14,10 @@ DOCUMENTATION = r"""
module: gitlab_user
short_description: Creates/updates/deletes/blocks/unblocks GitLab Users
description:
- - When the user does not exist in GitLab, it is created.
- - When the user exists and state=absent, the user is deleted.
- - When the user exists and state=blocked, the user is blocked.
- - When changes are made to user, the user is updated.
+ - When the user does not exist in GitLab, it will be created.
+ - When the user exists and state=absent, the user will be deleted.
+ - When the user exists and state=blocked, the user will be blocked.
+ - When changes are made to user, the user will be updated.
notes:
- From community.general 0.2.0 and onwards, name, email and password are optional while deleting the user.
author:
diff --git a/plugins/modules/grove.py b/plugins/modules/grove.py
index 81417657c8..abdc303f90 100644
--- a/plugins/modules/grove.py
+++ b/plugins/modules/grove.py
@@ -51,8 +51,8 @@ options:
required: false
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
+ self-signed certificates.
default: true
type: bool
author: "Jonas Pfenniger (@zimbatm)"
@@ -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'),
- icon_url=dict(type='str'),
+ url=dict(type='str', default=None),
+ icon_url=dict(type='str', default=None),
validate_certs=dict(default=True, type='bool'),
)
)
diff --git a/plugins/modules/gunicorn.py b/plugins/modules/gunicorn.py
index b524165c90..8118e0f60d 100644
--- a/plugins/modules/gunicorn.py
+++ b/plugins/modules/gunicorn.py
@@ -50,8 +50,8 @@ options:
pid:
type: path
description:
- - A filename to use for the PID file. If not set and not found on the configuration file a tmp pid file is created to
- check a successful run of gunicorn.
+ - A filename to use for the PID file. If not set and not found on the configuration file a tmp pid file will be created
+ to check a successful run of gunicorn.
worker:
type: str
choices: ['sync', 'eventlet', 'gevent', 'tornado ', 'gthread', 'gaiohttp']
@@ -62,8 +62,8 @@ options:
description:
- Switch worker processes to run as this user.
notes:
- - If not specified on config file, a temporary error log is created on C(/tmp) directory. Please make sure you have write
- access in C(/tmp) directory. Not needed but it is helpful to identify any problem with configuration.
+ - If not specified on config file, a temporary error log will be created on /tmp dir. Please make sure you have write access
+ in /tmp dir. Not needed but will help you to identify any problem with configuration.
"""
EXAMPLES = r"""
diff --git a/plugins/modules/haproxy.py b/plugins/modules/haproxy.py
index b0e56de061..9c60e59040 100644
--- a/plugins/modules/haproxy.py
+++ b/plugins/modules/haproxy.py
@@ -32,7 +32,7 @@ options:
backend:
description:
- Name of the HAProxy backend pool.
- - If this parameter is unset, it is auto-detected.
+ - If this parameter is unset, it will be auto-detected.
type: str
drain:
description:
@@ -62,7 +62,8 @@ options:
state:
description:
- Desired state of the provided backend host.
- - Note that V(drain) state is supported only by HAProxy version 1.5 or later. When used on versions < 1.5, it is ignored.
+ - Note that V(drain) state is supported only by HAProxy version 1.5 or later. When used on versions < 1.5, it will be
+ ignored.
type: str
required: true
choices: [disabled, drain, enabled]
@@ -102,7 +103,7 @@ options:
weight:
description:
- The value passed in argument.
- - If the value ends with the V(%) sign, then the new weight is relative to the initially configured weight.
+ - If the value ends with the V(%) sign, then the new weight will be relative to the initially configured weight.
- Relative weights are only permitted between 0 and 100% and absolute weights are permitted between 0 and 256.
type: str
"""
diff --git a/plugins/modules/hg.py b/plugins/modules/hg.py
index 982364504c..f269628abb 100644
--- a/plugins/modules/hg.py
+++ b/plugins/modules/hg.py
@@ -61,15 +61,15 @@ options:
default: true
executable:
description:
- - Path to C(hg) executable to use. If not supplied, the normal mechanism for resolving binary paths is used.
+ - Path to hg executable to use. If not supplied, the normal mechanism for resolving binary paths will be used.
type: str
notes:
- This module does not support push capability. See U(https://github.com/ansible/ansible/issues/31156).
- - 'If the task seems to be hanging, first verify remote host is in C(known_hosts). SSH prompts user to authorize the first
- contact with a remote host. To avoid this prompt, one solution is to add the remote host public key in C(/etc/ssh/ssh_known_hosts)
+ - 'If the task seems to be hanging, first verify remote host is in C(known_hosts). SSH will prompt user to authorize the
+ first contact with a remote host. To avoid this prompt, one solution is to add the remote host public key in C(/etc/ssh/ssh_known_hosts)
before calling the hg module, with the following command: C(ssh-keyscan remote_host.com >> /etc/ssh/ssh_known_hosts).'
- As per 01 Dec 2018, Bitbucket has dropped support for TLSv1 and TLSv1.1 connections. As such, if the underlying system
- still uses a Python version below 2.7.9, you are bound to have issues checking out bitbucket repositories. See
+ still uses a Python version below 2.7.9, you will have issues checking out bitbucket repositories. See
U(https://bitbucket.org/blog/deprecating-tlsv1-tlsv1-1-2018-12-01).
"""
@@ -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', aliases=['version']),
+ revision=dict(type='str', default=None, 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'),
+ executable=dict(type='str', default=None),
),
)
repo = module.params['repo']
diff --git a/plugins/modules/homebrew.py b/plugins/modules/homebrew.py
index 021f990e67..25d4fc37e2 100644
--- a/plugins/modules/homebrew.py
+++ b/plugins/modules/homebrew.py
@@ -83,7 +83,7 @@ options:
default: false
version_added: 9.0.0
notes:
- - When used with a C(loop:) each package is processed individually, it is much more efficient to pass the list directly
+ - When used with a C(loop:) each package will be processed individually, it is much more efficient to pass the list directly
to the O(name) option.
"""
@@ -173,7 +173,7 @@ changed_pkgs:
- List of package names which are changed after module run.
returned: success
type: list
- sample: ["git", "git-cola"]
+ sample: ['git', 'git-cola']
version_added: '0.2.0'
"""
@@ -807,11 +807,13 @@ 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(
@@ -833,11 +835,13 @@ 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 948f5c1fd1..7455a61d69 100644
--- a/plugins/modules/homebrew_cask.py
+++ b/plugins/modules/homebrew_cask.py
@@ -734,11 +734,13 @@ 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(
@@ -751,6 +753,7 @@ def main():
),
sudo_password=dict(
type="str",
+ required=False,
no_log=True,
),
update_homebrew=dict(
@@ -758,6 +761,7 @@ 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 f50472f90d..f070ccccc7 100644
--- a/plugins/modules/homebrew_tap.py
+++ b/plugins/modules/homebrew_tap.py
@@ -220,10 +220,11 @@ def main():
module = AnsibleModule(
argument_spec=dict(
name=dict(aliases=['tap'], type='list', required=True, elements='str'),
- url=dict(),
+ url=dict(default=None, required=False),
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/homectl.py b/plugins/modules/homectl.py
index f93867d03b..6e4366960d 100644
--- a/plugins/modules/homectl.py
+++ b/plugins/modules/homectl.py
@@ -65,7 +65,7 @@ options:
type: str
resize:
description:
- - When used with O(disksize) this attempts to resize the home directory immediately.
+ - When used with O(disksize) this will attempt to resize the home directory immediately.
default: false
type: bool
realname:
diff --git a/plugins/modules/honeybadger_deployment.py b/plugins/modules/honeybadger_deployment.py
index 2512fc2642..d4bf92b583 100644
--- a/plugins/modules/honeybadger_deployment.py
+++ b/plugins/modules/honeybadger_deployment.py
@@ -51,7 +51,7 @@ options:
default: "https://api.honeybadger.io/v1/deploys"
validate_certs:
description:
- - If V(false), SSL certificates for the target URL are not validated. This should only be used on personally controlled
+ - If V(false), SSL certificates for the target URL will not be validated. This should only be used on personally controlled
sites using self-signed certificates.
type: bool
default: true
@@ -88,9 +88,9 @@ def main():
token=dict(required=True, no_log=True),
environment=dict(required=True),
user=dict(required=False),
- repo=dict(),
- revision=dict(),
- url=dict(default='https://api.honeybadger.io/v1/deploys'),
+ repo=dict(required=False),
+ revision=dict(required=False),
+ url=dict(required=False, default='https://api.honeybadger.io/v1/deploys'),
validate_certs=dict(default=True, type='bool'),
),
supports_check_mode=True
diff --git a/plugins/modules/hpilo_boot.py b/plugins/modules/hpilo_boot.py
index f04aaaed20..c3d14564d6 100644
--- a/plugins/modules/hpilo_boot.py
+++ b/plugins/modules/hpilo_boot.py
@@ -67,7 +67,7 @@ options:
force:
description:
- Whether to force a reboot (even when the system is already booted).
- - As a safeguard, without force, M(community.general.hpilo_boot) refuses to reboot a server that is already running.
+ - As a safeguard, without force, hpilo_boot will refuse to reboot a server that is already running.
default: false
type: bool
ssl_version:
@@ -78,7 +78,7 @@ options:
choices: ["SSLv3", "SSLv23", "TLSv1", "TLSv1_1", "TLSv1_2"]
idempotent_boot_once:
description:
- - This option makes O(state=boot_once) succeed instead of failing when the server is already powered on.
+ - "This option makes O(state=boot_once) succeed instead of failing when the server is already powered on."
type: bool
default: false
version_added: 10.6.0
diff --git a/plugins/modules/hpilo_info.py b/plugins/modules/hpilo_info.py
index 90680603e8..70eecb8b0e 100644
--- a/plugins/modules/hpilo_info.py
+++ b/plugins/modules/hpilo_info.py
@@ -121,7 +121,7 @@ hw_uuid:
host_power_status:
description:
- Power status of host.
- - It is one of V(ON), V(OFF) and V(UNKNOWN).
+ - Will be one of V(ON), V(OFF) and V(UNKNOWN).
returned: always
type: str
sample: "ON"
diff --git a/plugins/modules/htpasswd.py b/plugins/modules/htpasswd.py
index d8a755476f..f13cd5a610 100644
--- a/plugins/modules/htpasswd.py
+++ b/plugins/modules/htpasswd.py
@@ -46,13 +46,10 @@ options:
description:
- Hashing scheme to be used. As well as the four choices listed here, you can also use any other hash supported by passlib,
such as V(portable_apache22) and V(host_apache24); or V(md5_crypt) and V(sha256_crypt), which are Linux passwd hashes.
- Only some schemes in addition to the four choices below are compatible with Apache or Nginx, and supported schemes
- depend on C(passlib) version and its dependencies.
+ Only some schemes in addition to the four choices below will be compatible with Apache or Nginx, and supported schemes
+ depend on passlib version and its dependencies.
- See U(https://passlib.readthedocs.io/en/stable/lib/passlib.apache.html#passlib.apache.HtpasswdFile) parameter C(default_scheme).
- 'Some of the available choices might be: V(apr_md5_crypt), V(des_crypt), V(ldap_sha1), V(plaintext).'
- - 'B(WARNING): The module has no mechanism to determine the O(hash_scheme) of an existing entry, therefore, it does
- not detect whether the O(hash_scheme) has changed. If you want to change the scheme, you must remove the existing
- entry and then create a new one using the new scheme.'
aliases: [crypt_scheme]
state:
type: str
@@ -66,8 +63,8 @@ options:
type: bool
default: true
description:
- - Used with O(state=present). If V(true), the file is created if it does not exist. Conversely, if set to V(false) and
- the file does not exist, it fails.
+ - Used with O(state=present). If V(true), the file will be created if it does not exist. Conversely, if set to V(false)
+ and the file does not exist it will fail.
notes:
- This module depends on the C(passlib) Python library, which needs to be installed on all target systems.
- 'On Debian < 11, Ubuntu <= 20.04, or Fedora: install C(python-passlib).'
@@ -191,9 +188,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', no_log=True),
- hash_scheme=dict(type='str', default="apr_md5_crypt", aliases=["crypt_scheme"]),
- state=dict(type='str', default="present", choices=["present", "absent"]),
+ 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"]),
create=dict(type='bool', default=True),
)
@@ -241,8 +238,8 @@ def main():
(msg, changed) = present(path, username, password, hash_scheme, create, check_mode)
elif state == 'absent':
if not os.path.exists(path):
- module.warn("%s does not exist" % path)
- module.exit_json(msg="%s not present" % username, changed=False)
+ module.exit_json(msg="%s not present" % username,
+ warnings="%s does not exist" % path, changed=False)
(msg, changed) = absent(path, username, check_mode)
else:
module.fail_json(msg="Invalid state: %s" % state)
diff --git a/plugins/modules/hwc_ecs_instance.py b/plugins/modules/hwc_ecs_instance.py
index 13becdf07f..f01b7c48fd 100644
--- a/plugins/modules/hwc_ecs_instance.py
+++ b/plugins/modules/hwc_ecs_instance.py
@@ -442,7 +442,7 @@ created:
disk_config_type:
description:
- Specifies the disk configuration type. MANUAL is The image space is not expanded. AUTO is the image space of the system
- disk is expanded to be as same as the flavor.
+ disk will be expanded to be as same as the flavor.
type: str
returned: success
host_name:
diff --git a/plugins/modules/hwc_evs_disk.py b/plugins/modules/hwc_evs_disk.py
index 0d57caf6cb..0763c07b01 100644
--- a/plugins/modules/hwc_evs_disk.py
+++ b/plugins/modules/hwc_evs_disk.py
@@ -70,8 +70,8 @@ options:
- SSD specifies the ultra-high I/O disk type.
- SAS specifies the high I/O disk type.
- SATA specifies the common I/O disk type.
- - If the specified disk type is not available in the AZ, the disk creation fails. If the EVS disk is created from a
- snapshot, the volume_type field must be the same as that of the snapshot's source disk.
+ - If the specified disk type is not available in the AZ, the disk will fail to create. If the EVS disk is created from
+ a snapshot, the volume_type field must be the same as that of the snapshot's source disk.
type: str
required: true
backup_id:
@@ -92,9 +92,9 @@ options:
required: false
enable_scsi:
description:
- - If this parameter is set to V(true), the disk device type is SCSI, which allows ECS OSs to directly access underlying
- storage media. SCSI reservation command is supported. If this parameter is set to V(false), the disk device type is
- VBD, which supports only simple SCSI read/write commands.
+ - If this parameter is set to True, the disk device type will be SCSI, which allows ECS OSs to directly access underlying
+ storage media. SCSI reservation command is supported. If this parameter is set to False, the disk device type will
+ be VBD, which supports only simple SCSI read/write commands.
- If parameter enable_share is set to True and this parameter is not specified, shared SCSI disks are created. SCSI
EVS disks cannot be created from backups, which means that this parameter cannot be True if backup_id has been specified.
type: bool
@@ -167,8 +167,8 @@ volume_type:
- SSD specifies the ultra-high I/O disk type.
- SAS specifies the high I/O disk type.
- SATA specifies the common I/O disk type.
- - If the specified disk type is not available in the AZ, the disk creation fails. If the EVS disk is created from a snapshot,
- the volume_type field must be the same as that of the snapshot's source disk.
+ - If the specified disk type is not available in the AZ, the disk will fail to create. If the EVS disk is created from
+ a snapshot, the volume_type field must be the same as that of the snapshot's source disk.
type: str
returned: success
backup_id:
@@ -189,8 +189,8 @@ enable_full_clone:
returned: success
enable_scsi:
description:
- - If this parameter is set to V(true), the disk device type is SCSI, which allows ECS OSs to directly access underlying
- storage media. SCSI reservation command is supported. If this parameter is set to V(false), the disk device type is
+ - If this parameter is set to True, the disk device type will be SCSI, which allows ECS OSs to directly access underlying
+ storage media. SCSI reservation command is supported. If this parameter is set to False, the disk device type will be
VBD, which supports only simple SCSI read/write commands.
- If parameter enable_share is set to True and this parameter is not specified, shared SCSI disks are created. SCSI EVS
disks cannot be created from backups, which means that this parameter cannot be True if backup_id has been specified.
diff --git a/plugins/modules/hwc_network_vpc.py b/plugins/modules/hwc_network_vpc.py
index d34e428d6a..3342280061 100644
--- a/plugins/modules/hwc_network_vpc.py
+++ b/plugins/modules/hwc_network_vpc.py
@@ -117,7 +117,7 @@ routes:
returned: success
next_hop:
description:
- - The next hop of a route. If the route type is peering, it provides VPC peering connection ID.
+ - The next hop of a route. If the route type is peering, it will provide VPC peering connection ID.
type: str
returned: success
enable_shared_snat:
diff --git a/plugins/modules/hwc_vpc_eip.py b/plugins/modules/hwc_vpc_eip.py
index e830c2b14b..b818fe0d86 100644
--- a/plugins/modules/hwc_vpc_eip.py
+++ b/plugins/modules/hwc_vpc_eip.py
@@ -92,7 +92,7 @@ options:
required: false
ip_version:
description:
- - The value can be 4 (IPv4 address) or 6 (IPv6 address). If this parameter is left blank, an IPv4 address is assigned.
+ - The value can be 4 (IPv4 address) or 6 (IPv6 address). If this parameter is left blank, an IPv4 address will be assigned.
type: int
required: false
ipv4_address:
@@ -193,7 +193,7 @@ enterprise_project_id:
returned: success
ip_version:
description:
- - The value can be 4 (IPv4 address) or 6 (IPv6 address). If this parameter is left blank, an IPv4 address is assigned.
+ - The value can be 4 (IPv4 address) or 6 (IPv6 address). If this parameter is left blank, an IPv4 address will be assigned.
type: int
returned: success
ipv4_address:
diff --git a/plugins/modules/hwc_vpc_private_ip.py b/plugins/modules/hwc_vpc_private_ip.py
index e665568774..695c644cb9 100644
--- a/plugins/modules/hwc_vpc_private_ip.py
+++ b/plugins/modules/hwc_vpc_private_ip.py
@@ -21,7 +21,7 @@ notes:
- If O(id) option is provided, it takes precedence over O(subnet_id), O(ip_address) for private IP selection.
- O(subnet_id), O(ip_address) are used for private IP selection. If more than one private IP with this options exists, execution
is aborted.
- - No parameter support updating. If one of option is changed, the module creates a new resource.
+ - No parameter support updating. If one of option is changed, the module will create a new resource.
version_added: '0.2.0'
author: Huawei Inc. (@huaweicloud)
requirements:
diff --git a/plugins/modules/hwc_vpc_route.py b/plugins/modules/hwc_vpc_route.py
index 20bbba6cd8..85224fd4c8 100644
--- a/plugins/modules/hwc_vpc_route.py
+++ b/plugins/modules/hwc_vpc_route.py
@@ -21,7 +21,7 @@ notes:
- If O(id) option is provided, it takes precedence over O(destination), O(vpc_id), O(type), and O(next_hop) for route selection.
- O(destination), O(vpc_id), O(type) and O(next_hop) are used for route selection. If more than one route with this options
exists, execution is aborted.
- - No parameter support updating. If one of option is changed, the module creates a new resource.
+ - No parameter support updating. If one of option is changed, the module will create a new resource.
version_added: '0.2.0'
author: Huawei Inc. (@huaweicloud)
requirements:
diff --git a/plugins/modules/hwc_vpc_security_group.py b/plugins/modules/hwc_vpc_security_group.py
index e1b2b41ae4..9f53b49c0d 100644
--- a/plugins/modules/hwc_vpc_security_group.py
+++ b/plugins/modules/hwc_vpc_security_group.py
@@ -22,7 +22,7 @@ notes:
selection.
- O(name), O(enterprise_project_id) and O(vpc_id) are used for security group selection. If more than one security group
with this options exists, execution is aborted.
- - No parameter support updating. If one of option is changed, the module creates a new resource.
+ - No parameter support updating. If one of option is changed, the module will create a new resource.
version_added: '0.2.0'
author: Huawei Inc. (@huaweicloud)
requirements:
diff --git a/plugins/modules/hwc_vpc_security_group_rule.py b/plugins/modules/hwc_vpc_security_group_rule.py
index 42f854a029..0848901cd5 100644
--- a/plugins/modules/hwc_vpc_security_group_rule.py
+++ b/plugins/modules/hwc_vpc_security_group_rule.py
@@ -21,7 +21,7 @@ notes:
- If O(id) option is provided, it takes precedence over O(security_group_id) for security group rule selection.
- O(security_group_id) is used for security group rule selection. If more than one security group rule with this options
exists, execution is aborted.
- - No parameter support updating. If one of option is changed, the module creates a new resource.
+ - No parameter support updating. If one of option is changed, the module will create a new resource.
version_added: '0.2.0'
author: Huawei Inc. (@huaweicloud)
requirements:
diff --git a/plugins/modules/hwc_vpc_subnet.py b/plugins/modules/hwc_vpc_subnet.py
index b9af890688..84a9219370 100644
--- a/plugins/modules/hwc_vpc_subnet.py
+++ b/plugins/modules/hwc_vpc_subnet.py
@@ -86,7 +86,7 @@ options:
required: false
dns_address:
description:
- - Specifies the DNS server addresses for subnet. The address in the head is used first.
+ - Specifies the DNS server addresses for subnet. The address in the head will be used first.
type: list
elements: str
required: false
@@ -148,7 +148,7 @@ dhcp_enable:
returned: success
dns_address:
description:
- - Specifies the DNS server addresses for subnet. The address in the head is used first.
+ - Specifies the DNS server addresses for subnet. The address in the head will be used first.
type: list
returned: success
"""
diff --git a/plugins/modules/ibm_sa_host.py b/plugins/modules/ibm_sa_host.py
index b3d80a6b62..f6613b3b29 100644
--- a/plugins/modules/ibm_sa_host.py
+++ b/plugins/modules/ibm_sa_host.py
@@ -41,8 +41,8 @@ options:
type: str
domain:
description:
- - The domains the cluster is attached to. To include more than one domain, separate domain names with commas. To include
- all existing domains, use an asterisk (V(*)).
+ - The domains the cluster will be attached to. To include more than one domain, separate domain names with commas. To
+ include all existing domains, use an asterisk (V(*)).
required: false
type: str
iscsi_chap_name:
diff --git a/plugins/modules/icinga2_host.py b/plugins/modules/icinga2_host.py
index d78f607aae..8d0a3b554b 100644
--- a/plugins/modules/icinga2_host.py
+++ b/plugins/modules/icinga2_host.py
@@ -30,13 +30,13 @@ options:
- HTTP, HTTPS, or FTP URL in the form V((http|https|ftp\)://[user[:pass]]@host.domain[:port]/path).
use_proxy:
description:
- - If V(false), it does not use a proxy, even if one is defined in an environment variable on the target hosts.
+ - If V(false), it will not use a proxy, even if one is defined in an environment variable on the target hosts.
type: bool
default: true
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
+ self-signed certificates.
type: bool
default: true
url_username:
@@ -48,12 +48,12 @@ options:
type: str
description:
- The password for use in HTTP basic authentication.
- - If the O(url_username) parameter is not specified, the O(url_password) parameter is not used.
+ - If the O(url_username) parameter is not specified, the O(url_password) parameter will not be used.
force_basic_auth:
description:
- - C(httplib2), the library used by Ansible's HTTP request code 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
- may fail. This option forces the sending of the Basic authentication header upon initial request.
+ - C(httplib2), the library used by Ansible's HTTP request code 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.
type: bool
default: false
client_cert:
@@ -235,11 +235,11 @@ def main():
state=dict(default="present", choices=["absent", "present"]),
name=dict(required=True, aliases=['host']),
zone=dict(),
- template=dict(),
+ template=dict(default=None),
check_command=dict(default="hostalive"),
- display_name=dict(),
+ display_name=dict(default=None),
ip=dict(),
- variables=dict(type='dict'),
+ variables=dict(type='dict', default=None),
)
# Define the main module
diff --git a/plugins/modules/imc_rest.py b/plugins/modules/imc_rest.py
index 674ba0d2b3..8a0b63cd78 100644
--- a/plugins/modules/imc_rest.py
+++ b/plugins/modules/imc_rest.py
@@ -57,8 +57,8 @@ options:
description:
- When used instead of O(path), sets the content of the API requests directly.
- This may be convenient to template simple requests, for anything complex use the M(ansible.builtin.template) module.
- - You can collate multiple IMC XML fragments and they are processed sequentially in a single stream, the Cisco IMC output
- is subsequently merged.
+ - You can collate multiple IMC XML fragments and they will be processed sequentially in a single stream, the Cisco IMC
+ output is subsequently merged.
- Parameter O(content) is mutual exclusive with parameter O(path).
type: str
protocol:
@@ -71,12 +71,12 @@ options:
description:
- The socket level timeout in seconds.
- This is the time that every single connection (every fragment) can spend. If this O(timeout) is reached, the module
- fails with a C(Connection failure) indicating that C(The read operation timed out).
+ will fail with a C(Connection failure) indicating that C(The read operation timed out).
default: 60
type: int
validate_certs:
description:
- - If V(false), SSL certificates are not validated.
+ - If V(false), SSL certificates will not be validated.
- This should only set to V(false) used on personally controlled sites using self-signed certificates.
type: bool
default: true
@@ -84,8 +84,8 @@ notes:
- The XML fragments do not need an authentication cookie, this is injected by the module automatically.
- The Cisco IMC XML output is being translated to JSON using the Cobra convention.
- Any configConfMo change requested has a return status of C(modified), even if there was no actual change from the previous
- configuration. As a result, this module always reports a change on subsequent runs. In case this behaviour is fixed in
- a future update to Cisco IMC, this module is meant to automatically adapt.
+ configuration. As a result, this module will always report a change on subsequent runs. In case this behaviour is fixed
+ in a future update to Cisco IMC, this module will automatically adapt.
- If you get a C(Connection failure) related to C(The read operation timed out) increase the O(timeout) parameter. Some
XML fragments can take longer than the default timeout.
- More information about the IMC REST API is available from
diff --git a/plugins/modules/imgadm.py b/plugins/modules/imgadm.py
index ef27508986..344bf9cc56 100644
--- a/plugins/modules/imgadm.py
+++ b/plugins/modules/imgadm.py
@@ -44,7 +44,7 @@ options:
choices: [present, absent, deleted, imported, updated, vacuumed]
description:
- State the object operated on should be in. V(imported) is an alias for for V(present) and V(deleted) for V(absent).
- When set to V(vacuumed) and O(uuid=*), it removes all unused images.
+ When set to V(vacuumed) and O(uuid=*), it will remove all unused images.
type: str
type:
@@ -158,9 +158,9 @@ class Imgadm(object):
def update_images(self):
if self.uuid == '*':
- cmd = [self.cmd, 'update']
+ cmd = '{0} update'.format(self.cmd)
else:
- cmd = [self.cmd, 'update', self.uuid]
+ cmd = '{0} update {1}'.format(self.cmd, self.uuid)
(rc, stdout, stderr) = self.module.run_command(cmd)
@@ -177,13 +177,13 @@ class Imgadm(object):
source = self.params['source']
imgtype = self.params['type']
- cmd = [self.cmd, 'sources']
+ cmd = '{0} sources'.format(self.cmd)
if force:
- cmd = cmd + ['-f']
+ cmd += ' -f'
if self.present:
- cmd = cmd + ['-a', source, '-t', imgtype]
+ cmd = '{0} -a {1} -t {2}'.format(cmd, source, imgtype)
(rc, stdout, stderr) = self.module.run_command(cmd)
if rc != 0:
@@ -222,7 +222,7 @@ class Imgadm(object):
if state == 'vacuumed':
# Unconditionally pass '--force', otherwise we're prompted with 'y/N'
- cmd = [self.cmd, 'vacuum', '-f']
+ cmd = '{0} vacuum -f'.format(self.cmd)
(rc, stdout, stderr) = self.module.run_command(cmd)
@@ -234,7 +234,8 @@ class Imgadm(object):
else:
self.changed = True
if self.present:
- cmd = [self.cmd, 'import', '-P', pool, '-q'] + ([self.uuid] if self.uuid else [])
+ cmd = '{0} import -P {1} -q {2}'.format(self.cmd, pool, self.uuid)
+
(rc, stdout, stderr) = self.module.run_command(cmd)
if rc != 0:
@@ -252,7 +253,8 @@ class Imgadm(object):
if re.match(regex, stdout.splitlines()[-1]):
self.changed = True
else:
- cmd = [self.cmd, 'delete', '-P', pool] + ([self.uuid] if self.uuid else [])
+ cmd = '{0} delete -P {1} {2}'.format(self.cmd, pool, self.uuid)
+
(rc, stdout, stderr) = self.module.run_command(cmd)
regex = '.*ImageNotInstalled.*'
diff --git a/plugins/modules/influxdb_user.py b/plugins/modules/influxdb_user.py
index 45410e76a5..5ec6cd010d 100644
--- a/plugins/modules/influxdb_user.py
+++ b/plugins/modules/influxdb_user.py
@@ -37,7 +37,7 @@ options:
admin:
description:
- Whether the user should be in the admin role or not.
- - Since version 2.8, the role is also updated.
+ - Since version 2.8, the role will also be updated.
default: false
type: bool
state:
@@ -50,8 +50,8 @@ options:
description:
- Privileges to grant to this user.
- Takes a list of dicts containing the "database" and "privilege" keys.
- - If this argument is not provided, the current grants are left alone.
- - If an empty list is provided, all grants for the user are removed.
+ - If this argument is not provided, the current grants will be left alone.
+ - If an empty list is provided, all grants for the user will be removed.
type: list
elements: dict
extends_documentation_fragment:
@@ -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(type='str', no_log=True),
+ user_password=dict(required=False, 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 04fe92fa08..bf8534bf39 100644
--- a/plugins/modules/ini_file.py
+++ b/plugins/modules/ini_file.py
@@ -39,7 +39,7 @@ options:
section:
description:
- Section name in INI file. This is added if O(state=present) automatically when a single value is being set.
- - If being omitted, the O(option) is placed before the first O(section).
+ - If being omitted, the O(option) will be placed before the first O(section).
- Omitting O(section) is also required if the config format does not support sections.
type: str
section_has_values:
@@ -63,7 +63,7 @@ options:
elements: str
description:
- Among possibly multiple sections of the same name, select the first one that contains matching options and values.
- - With O(state=present), if a suitable section is not found, a new section is added, including the required options.
+ - With O(state=present), if a suitable section is not found, a new section will be added, including the required options.
- With O(state=absent), at most one O(section) is removed if it contains the values.
version_added: 8.6.0
option:
@@ -100,8 +100,8 @@ options:
O(option)s with the same name are not touched.
- If set to V(present) and O(exclusive) set to V(false) the specified O(option=values) lines are added, but the other
O(option)s with the same name are not touched.
- - If set to V(present) and O(exclusive) set to V(true) all given O(option=values) lines are added and the other O(option)s
- with the same name are removed.
+ - If set to V(present) and O(exclusive) set to V(true) all given O(option=values) lines will be added and the other
+ O(option)s with the same name are removed.
type: str
choices: [absent, present]
default: present
@@ -126,8 +126,8 @@ options:
version_added: 7.5.0
create:
description:
- - If set to V(false), the module fails if the file does not already exist.
- - By default it creates the file if it is missing.
+ - If set to V(false), the module will fail if the file does not already exist.
+ - By default it will create the file if it is missing.
type: bool
default: true
allow_no_value:
@@ -584,7 +584,7 @@ def main():
option=dict(type='str', required=True),
value=dict(type='str'),
values=dict(type='list', elements='str')
- ), mutually_exclusive=[['value', 'values']]),
+ ), default=None, mutually_exclusive=[['value', 'values']]),
option=dict(type='str'),
value=dict(type='str'),
values=dict(type='list', elements='str'),
diff --git a/plugins/modules/installp.py b/plugins/modules/installp.py
index da88a7e7c2..e54a56949f 100644
--- a/plugins/modules/installp.py
+++ b/plugins/modules/installp.py
@@ -47,7 +47,7 @@ options:
choices: [absent, present]
default: present
notes:
- - If the package is already installed, even the package/fileset is new, the module does not install it.
+ - If the package is already installed, even the package/fileset is new, the module will not install it.
"""
EXAMPLES = r"""
diff --git a/plugins/modules/interfaces_file.py b/plugins/modules/interfaces_file.py
index 8e315d7b69..23bfd78790 100644
--- a/plugins/modules/interfaces_file.py
+++ b/plugins/modules/interfaces_file.py
@@ -45,10 +45,10 @@ options:
value:
type: str
description:
- - If O(option) is not presented for the O(iface) and O(state) is V(present), then O(option) is added. If O(option) already
- exists and is not V(pre-up), V(up), V(post-up) or V(down), its value is updated. V(pre-up), V(up), V(post-up) and
- V(down) options cannot be updated, only adding new options, removing existing ones or cleaning the whole option set
- are supported.
+ - If O(option) is not presented for the O(iface) and O(state) is V(present) option will be added. If O(option) already
+ exists and is not V(pre-up), V(up), V(post-up) or V(down), its value will be updated. V(pre-up), V(up), V(post-up)
+ and V(down) options cannot be updated, only adding new options, removing existing ones or cleaning the whole option
+ set are supported.
backup:
description:
- Create a backup file including the timestamp information so you can get the original file back if you somehow clobbered
@@ -58,12 +58,12 @@ options:
state:
type: str
description:
- - If set to V(absent) the option or section is removed if present instead of created.
+ - If set to V(absent) the option or section will be removed if present instead of created.
default: "present"
choices: ["present", "absent"]
notes:
- - If option is defined multiple times last one is updated but all others are deleted in case of an O(state=absent).
+ - If option is defined multiple times last one will be updated but all will be deleted in case of an absent state.
requirements: []
author: "Roman Belyakovsky (@hryamzik)"
"""
diff --git a/plugins/modules/ipa_dnsrecord.py b/plugins/modules/ipa_dnsrecord.py
index 3cba35b11c..d92e2c4f66 100644
--- a/plugins/modules/ipa_dnsrecord.py
+++ b/plugins/modules/ipa_dnsrecord.py
@@ -45,31 +45,33 @@ options:
- Manage DNS record name with this value.
- Mutually exclusive with O(record_values), and exactly one of O(record_value) and O(record_values) has to be specified.
- Use O(record_values) if you need to specify multiple values.
- - In the case of V(A) or V(AAAA) record types, this is the IP address.
- - In the case of V(A6) record type, this is the A6 Record data.
- - In the case of V(CNAME) record type, this is the hostname.
- - In the case of V(DNAME) record type, this is the DNAME target.
- - In the case of V(NS) record type, this is the name server hostname. Hostname must already have a valid A or AAAA record.
- - In the case of V(PTR) record type, this is the hostname.
- - In the case of V(TXT) record type, this is a text.
- - In the case of V(SRV) record type, this is a service record.
- - In the case of V(MX) record type, this is a mail exchanger record.
- - In the case of V(SSHFP) record type, this is an SSH fingerprint record.
+ - In the case of V(A) or V(AAAA) record types, this will be the IP address.
+ - In the case of V(A6) record type, this will be the A6 Record data.
+ - In the case of V(CNAME) record type, this will be the hostname.
+ - In the case of V(DNAME) record type, this will be the DNAME target.
+ - In the case of V(NS) record type, this will be the name server hostname. Hostname must already have a valid A or AAAA
+ record.
+ - In the case of V(PTR) record type, this will be the hostname.
+ - In the case of V(TXT) record type, this will be a text.
+ - In the case of V(SRV) record type, this will be a service record.
+ - In the case of V(MX) record type, this will be a mail exchanger record.
+ - In the case of V(SSHFP) record type, this will be an SSH fingerprint record.
type: str
record_values:
description:
- Manage DNS record name with this value.
- Mutually exclusive with O(record_value), and exactly one of O(record_value) and O(record_values) has to be specified.
- - In the case of V(A) or V(AAAA) record types, this is the IP address.
- - In the case of V(A6) record type, this is the A6 Record data.
- - In the case of V(CNAME) record type, this is the hostname.
- - In the case of V(DNAME) record type, this is the DNAME target.
- - In the case of V(NS) record type, this is the name server hostname. Hostname must already have a valid A or AAAA record.
- - In the case of V(PTR) record type, this is the hostname.
- - In the case of V(TXT) record type, this is a text.
- - In the case of V(SRV) record type, this is a service record.
- - In the case of V(MX) record type, this is a mail exchanger record.
- - In the case of V(SSHFP) record type, this is an SSH fingerprint record.
+ - In the case of V(A) or V(AAAA) record types, this will be the IP address.
+ - In the case of V(A6) record type, this will be the A6 Record data.
+ - In the case of V(CNAME) record type, this will be the hostname.
+ - In the case of V(DNAME) record type, this will be the DNAME target.
+ - In the case of V(NS) record type, this will be the name server hostname. Hostname must already have a valid A or AAAA
+ record.
+ - In the case of V(PTR) record type, this will be the hostname.
+ - In the case of V(TXT) record type, this will be a text.
+ - In the case of V(SRV) record type, this will be a service record.
+ - In the case of V(MX) record type, this will be a mail exchanger record.
+ - In the case of V(SSHFP) record type, this will be an SSH fingerprint record.
type: list
elements: str
record_ttl:
@@ -165,7 +167,7 @@ EXAMPLES = r"""
state: absent
- name: Ensure an NS record for a subdomain is present
- community.general.ipa_dnsrecord:
+ community,general.ipa_dnsrecord:
name: subdomain
zone_name: example.com
record_type: 'NS'
@@ -353,7 +355,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'),
+ record_ttl=dict(type='int', required=False),
)
module = AnsibleModule(
diff --git a/plugins/modules/ipa_dnszone.py b/plugins/modules/ipa_dnszone.py
index 81a99bc54b..b536c258d2 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', default=False),
- allowsyncptr=dict(type='bool', default=False),
+ dynamicupdate=dict(type='bool', required=False, default=False),
+ allowsyncptr=dict(type='bool', required=False, default=False),
)
module = AnsibleModule(argument_spec=argument_spec,
diff --git a/plugins/modules/ipa_getkeytab.py b/plugins/modules/ipa_getkeytab.py
index 7c533fb729..dfd612564b 100644
--- a/plugins/modules/ipa_getkeytab.py
+++ b/plugins/modules/ipa_getkeytab.py
@@ -67,15 +67,15 @@ options:
retrieve_mode:
description:
- Retrieve an existing key from the server instead of generating a new one.
- - This is incompatible with the O(password), and works only against a IPA server more recent than version 3.3.
+ - This is incompatible with the O(password), and will work only against a IPA server more recent than version 3.3.
- The user requesting the keytab must have access to the keys for this operation to succeed.
- - Be aware that if set V(true), a new keytab is generated.
+ - Be aware that if set V(true), a new keytab will be generated.
- This invalidates all previously retrieved keytabs for this service principal.
type: bool
encryption_types:
description:
- The list of encryption types to use to generate keys.
- - It uses local client defaults if not provided.
+ - It will use local client defaults if not provided.
- Valid values depend on the Kerberos library version and configuration.
type: str
state:
diff --git a/plugins/modules/ipa_group.py b/plugins/modules/ipa_group.py
index 934e533dff..60077a2c6a 100644
--- a/plugins/modules/ipa_group.py
+++ b/plugins/modules/ipa_group.py
@@ -22,7 +22,7 @@ options:
append:
description:
- If V(true), add the listed O(user) and O(group) to the group members.
- - If V(false), only the listed O(user) and O(group) are set as group members, removing any other members.
+ - If V(false), only the listed O(user) and O(group) will be group members, removing any other members.
default: false
type: bool
version_added: 4.0.0
@@ -49,10 +49,10 @@ options:
group:
description:
- List of group names assigned to this group.
- - If O(append=false) and an empty list is passed all groups are removed from this group.
- - Groups that are already assigned but not passed are removed.
- - If O(append=true) the listed groups are assigned without removing other groups.
- - If option is omitted assigned groups are not checked or changed.
+ - If O(append=false) and an empty list is passed all groups will be removed from this group.
+ - Groups that are already assigned but not passed will be removed.
+ - If O(append=true) the listed groups will be assigned without removing other groups.
+ - If option is omitted assigned groups will not be checked or changed.
type: list
elements: str
nonposix:
@@ -62,10 +62,10 @@ options:
user:
description:
- List of user names assigned to this group.
- - If O(append=false) and an empty list is passed all users are removed from this group.
- - Users that are already assigned but not passed are removed.
- - If O(append=true) the listed users are assigned without removing other users.
- - If option is omitted assigned users are not checked or changed.
+ - If O(append=false) and an empty list is passed all users will be removed from this group.
+ - Users that are already assigned but not passed will be removed.
+ - If O(append=true) the listed users will be assigned without removing other users.
+ - If option is omitted assigned users will not be checked or changed.
type: list
elements: str
external_user:
@@ -73,7 +73,7 @@ options:
- List of external users assigned to this group.
- Behaves identically to O(user) with respect to O(append) attribute.
- List entries can be in V(DOMAIN\\\\username) or SID format.
- - Unless SIDs are provided, the module always attempts to make changes even if the group already has all the users.
+ - Unless SIDs are provided, the module will always attempt to make changes even if the group already has all the users.
This is because only SIDs are returned by IPA query.
- O(external=true) is needed for this option to work.
type: list
@@ -261,7 +261,7 @@ def ensure(module, client):
nonposix=module.params['nonposix'])
ipa_group = client.group_find(name=name)
- if not (external or external_user is None):
+ if (not (external or external_user is None)):
module.fail_json("external_user can only be set if external = True")
changed = False
diff --git a/plugins/modules/ipa_hbacrule.py b/plugins/modules/ipa_hbacrule.py
index cb828f68e9..d168a3a7e0 100644
--- a/plugins/modules/ipa_hbacrule.py
+++ b/plugins/modules/ipa_hbacrule.py
@@ -32,8 +32,8 @@ options:
host:
description:
- List of host names to assign.
- - If an empty list is passed all hosts are removed from the rule.
- - If option is omitted hosts are not checked or changed.
+ - If an empty list is passed all hosts will be removed from the rule.
+ - If option is omitted hosts will not be checked or changed.
required: false
type: list
elements: str
@@ -44,15 +44,15 @@ options:
hostgroup:
description:
- List of hostgroup names to assign.
- - If an empty list is passed all hostgroups are removed from the rule.
- - If option is omitted hostgroups are not checked or changed.
+ - If an empty list is passed all hostgroups will be removed from the rule.
+ - If option is omitted hostgroups will not be checked or changed.
type: list
elements: str
service:
description:
- List of service names to assign.
- - If an empty list is passed all services are removed from the rule.
- - If option is omitted services are not checked or changed.
+ - If an empty list is passed all services will be removed from the rule.
+ - If option is omitted services will not be checked or changed.
type: list
elements: str
servicecategory:
@@ -62,15 +62,15 @@ options:
servicegroup:
description:
- List of service group names to assign.
- - If an empty list is passed all assigned service groups are removed from the rule.
- - If option is omitted service groups are not checked or changed.
+ - If an empty list is passed all assigned service groups will be removed from the rule.
+ - If option is omitted service groups will not be checked or changed.
type: list
elements: str
sourcehost:
description:
- List of source host names to assign.
- - If an empty list if passed all assigned source hosts are removed from the rule.
- - If option is omitted source hosts are not checked or changed.
+ - If an empty list if passed all assigned source hosts will be removed from the rule.
+ - If option is omitted source hosts will not be checked or changed.
type: list
elements: str
sourcehostcategory:
@@ -80,8 +80,8 @@ options:
sourcehostgroup:
description:
- List of source host group names to assign.
- - If an empty list if passed all assigned source host groups are removed from the rule.
- - If option is omitted source host groups are not checked or changed.
+ - If an empty list if passed all assigned source host groups will be removed from the rule.
+ - If option is omitted source host groups will not be checked or changed.
type: list
elements: str
state:
@@ -92,8 +92,8 @@ options:
user:
description:
- List of user names to assign.
- - If an empty list if passed all assigned users are removed from the rule.
- - If option is omitted users are not checked or changed.
+ - If an empty list if passed all assigned users will be removed from the rule.
+ - If option is omitted users will not be checked or changed.
type: list
elements: str
usercategory:
@@ -103,8 +103,8 @@ options:
usergroup:
description:
- List of user group names to assign.
- - If an empty list if passed all assigned user groups are removed from the rule.
- - If option is omitted user groups are not checked or changed.
+ - If an empty list if passed all assigned user groups will be removed from the rule.
+ - If option is omitted user groups will not be checked or changed.
type: list
elements: str
extends_documentation_fragment:
diff --git a/plugins/modules/ipa_host.py b/plugins/modules/ipa_host.py
index c88f3c0adb..a78ea6223e 100644
--- a/plugins/modules/ipa_host.py
+++ b/plugins/modules/ipa_host.py
@@ -42,9 +42,9 @@ options:
mac_address:
description:
- List of Hardware MAC address(es) off this host.
- - If option is omitted MAC addresses are not checked nor changed.
- - If an empty list is passed all assigned MAC addresses are removed.
- - MAC addresses that are already assigned but not passed are removed.
+ - If option is omitted MAC addresses will not be checked or changed.
+ - If an empty list is passed all assigned MAC addresses will be removed.
+ - MAC addresses that are already assigned but not passed will be removed.
aliases: ["macaddress"]
type: list
elements: str
@@ -66,9 +66,9 @@ options:
user_certificate:
description:
- List of Base-64 encoded server certificates.
- - If option is omitted certificates are not checked nor changed.
- - If an empty list is passed all assigned certificates are removed.
- - Certificates already assigned but not passed are removed.
+ - If option is omitted certificates will not be checked or changed.
+ - If an empty list is passed all assigned certificates will be removed.
+ - Certificates already assigned but not passed will be removed.
aliases: ["usercertificate"]
type: list
elements: str
diff --git a/plugins/modules/ipa_hostgroup.py b/plugins/modules/ipa_hostgroup.py
index ffe87fca4c..c1e7d3ad56 100644
--- a/plugins/modules/ipa_hostgroup.py
+++ b/plugins/modules/ipa_hostgroup.py
@@ -22,7 +22,7 @@ options:
append:
description:
- If V(true), add the listed O(host) to the O(hostgroup).
- - If V(false), only the listed O(host) is set in O(hostgroup), removing any other hosts.
+ - If V(false), only the listed O(host) will be in O(hostgroup), removing any other hosts.
default: false
type: bool
version_added: 6.6.0
@@ -40,17 +40,17 @@ options:
host:
description:
- List of hosts that belong to the host-group.
- - If an empty list is passed all hosts are removed from the group.
- - If option is omitted hosts are not checked nor changed.
- - If option is passed all assigned hosts that are not passed are unassigned from the group.
+ - If an empty list is passed all hosts will be removed from the group.
+ - If option is omitted hosts will not be checked or changed.
+ - If option is passed all assigned hosts that are not passed will be unassigned from the group.
type: list
elements: str
hostgroup:
description:
- List of host-groups than belong to that host-group.
- - If an empty list is passed all host-groups are removed from the group.
- - If option is omitted host-groups are not checked nor changed.
- - If option is passed all assigned hostgroups that are not passed are unassigned from the group.
+ - If an empty list is passed all host-groups will be removed from the group.
+ - If option is omitted host-groups will not be checked or changed.
+ - If option is passed all assigned hostgroups that are not passed will be unassigned from the group.
type: list
elements: str
state:
diff --git a/plugins/modules/ipa_otptoken.py b/plugins/modules/ipa_otptoken.py
index e8c99bd302..5f5c8dd612 100644
--- a/plugins/modules/ipa_otptoken.py
+++ b/plugins/modules/ipa_otptoken.py
@@ -26,7 +26,7 @@ options:
aliases: ["name"]
type: str
newuniqueid:
- description: If specified, the unique ID specified is changed to this.
+ description: If specified, the unique ID specified will be changed to this.
type: str
otptype:
description:
@@ -37,7 +37,7 @@ options:
secretkey:
description:
- Token secret (Base64).
- - If OTP is created and this is not specified, a random secret is generated by IPA.
+ - If OTP is created and this is not specified, a random secret will be generated by IPA.
- B(Note:) Cannot be modified after OTP is created.
type: str
description:
@@ -54,13 +54,13 @@ options:
description:
- First date/time the token can be used.
- In the format C(YYYYMMddHHmmss).
- - For example, V(20180121182022) allows the token to be used starting on 21 January 2018 at 18:20:22.
+ - For example, V(20180121182022) will allow the token to be used starting on 21 January 2018 at 18:20:22.
type: str
notafter:
description:
- Last date/time the token can be used.
- In the format C(YYYYMMddHHmmss).
- - For example, V(20200121182022) allows the token to be used until 21 January 2020 at 18:20:22.
+ - For example, V(20200121182022) will allow the token to be used until 21 January 2020 at 18:20:22.
type: str
vendor:
description: Token vendor name (informational only).
@@ -84,7 +84,7 @@ options:
type: str
digits:
description:
- - Number of digits each token code has.
+ - Number of digits each token code will have.
- B(Note:) Cannot be modified after OTP is created.
choices: [6, 8]
type: int
diff --git a/plugins/modules/ipa_role.py b/plugins/modules/ipa_role.py
index 6057deec7b..e77b732cb2 100644
--- a/plugins/modules/ipa_role.py
+++ b/plugins/modules/ipa_role.py
@@ -33,41 +33,41 @@ options:
group:
description:
- List of group names assign to this role.
- - If an empty list is passed all assigned groups are unassigned from the role.
- - If option is omitted groups are not checked nor changed.
- - If option is passed all assigned groups that are not passed are unassigned from the role.
+ - If an empty list is passed all assigned groups will be unassigned from the role.
+ - If option is omitted groups will not be checked or changed.
+ - If option is passed all assigned groups that are not passed will be unassigned from the role.
type: list
elements: str
host:
description:
- List of host names to assign.
- - If an empty list is passed all assigned hosts are unassigned from the role.
- - If option is omitted hosts are not checked nor changed.
- - If option is passed all assigned hosts that are not passed are unassigned from the role.
+ - If an empty list is passed all assigned hosts will be unassigned from the role.
+ - If option is omitted hosts will not be checked or changed.
+ - If option is passed all assigned hosts that are not passed will be unassigned from the role.
type: list
elements: str
hostgroup:
description:
- List of host group names to assign.
- - If an empty list is passed all assigned host groups are removed from the role.
- - If option is omitted host groups are not checked nor changed.
- - If option is passed all assigned hostgroups that are not passed are unassigned from the role.
+ - If an empty list is passed all assigned host groups will be removed from the role.
+ - If option is omitted host groups will not be checked or changed.
+ - If option is passed all assigned hostgroups that are not passed will be unassigned from the role.
type: list
elements: str
privilege:
description:
- List of privileges granted to the role.
- - If an empty list is passed all assigned privileges are removed.
- - If option is omitted privileges are not checked nor changed.
- - If option is passed all assigned privileges that are not passed are removed.
+ - If an empty list is passed all assigned privileges will be removed.
+ - If option is omitted privileges will not be checked or changed.
+ - If option is passed all assigned privileges that are not passed will be removed.
type: list
elements: str
service:
description:
- List of service names to assign.
- - If an empty list is passed all assigned services are removed from the role.
- - If option is omitted services are not checked nor changed.
- - If option is passed all assigned services that are not passed are removed from the role.
+ - If an empty list is passed all assigned services will be removed from the role.
+ - If option is omitted services will not be checked or changed.
+ - If option is passed all assigned services that are not passed will be removed from the role.
type: list
elements: str
state:
@@ -78,8 +78,8 @@ options:
user:
description:
- List of user names to assign.
- - If an empty list is passed all assigned users are removed from the role.
- - If option is omitted users are not checked nor changed.
+ - If an empty list is passed all assigned users will be removed from the role.
+ - If option is omitted users will not be checked or changed.
type: list
elements: str
extends_documentation_fragment:
diff --git a/plugins/modules/ipa_service.py b/plugins/modules/ipa_service.py
index 51ace78760..54c5575950 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'),
- skip_host_check=dict(type='bool', default=False),
- hosts=dict(type='list', elements='str'),
- state=dict(type='str', default='present',
+ 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',
choices=['present', 'absent']))
module = AnsibleModule(argument_spec=argument_spec,
diff --git a/plugins/modules/ipa_sudocmdgroup.py b/plugins/modules/ipa_sudocmdgroup.py
index 4298032121..c7ab798f4c 100644
--- a/plugins/modules/ipa_sudocmdgroup.py
+++ b/plugins/modules/ipa_sudocmdgroup.py
@@ -37,8 +37,8 @@ options:
sudocmd:
description:
- List of sudo commands to assign to the group.
- - If an empty list is passed all assigned commands are removed from the group.
- - If option is omitted sudo commands are not checked nor changed.
+ - If an empty list is passed all assigned commands will be removed from the group.
+ - If option is omitted sudo commands will not be checked or changed.
type: list
elements: str
extends_documentation_fragment:
diff --git a/plugins/modules/ipa_sudorule.py b/plugins/modules/ipa_sudorule.py
index ae3730da62..1670a52035 100644
--- a/plugins/modules/ipa_sudorule.py
+++ b/plugins/modules/ipa_sudorule.py
@@ -34,31 +34,31 @@ options:
cmd:
description:
- List of commands assigned to the rule.
- - If an empty list is passed all commands are removed from the rule.
- - If option is omitted commands are not checked nor changed.
+ - If an empty list is passed all commands will be removed from the rule.
+ - If option is omitted commands will not be checked or changed.
type: list
elements: str
cmdgroup:
description:
- List of command groups assigned to the rule.
- - If an empty list is passed all command groups are removed from the rule.
- - If option is omitted command groups are not checked nor changed.
+ - If an empty list is passed all command groups will be removed from the rule.
+ - If option is omitted command groups will not be checked or changed.
type: list
elements: str
version_added: 2.0.0
deny_cmd:
description:
- List of denied commands assigned to the rule.
- - If an empty list is passed all commands are removed from the rule.
- - If option is omitted commands are not checked nor changed.
+ - If an empty list is passed all commands will be removed from the rule.
+ - If option is omitted commands will not be checked or changed.
type: list
elements: str
version_added: 8.1.0
deny_cmdgroup:
description:
- List of denied command groups assigned to the rule.
- - If an empty list is passed all command groups are removed from the rule.
- - If option is omitted command groups are not checked nor changed.
+ - If an empty list is passed all command groups will be removed from the rule.
+ - If option is omitted command groups will not be checked or changed.
type: list
elements: str
version_added: 8.1.0
@@ -69,8 +69,8 @@ options:
host:
description:
- List of hosts assigned to the rule.
- - If an empty list is passed all hosts are removed from the rule.
- - If option is omitted hosts are not checked nor changed.
+ - If an empty list is passed all hosts will be removed from the rule.
+ - If option is omitted hosts will not be checked or changed.
- Option O(hostcategory) must be omitted to assign hosts.
type: list
elements: str
@@ -84,8 +84,8 @@ options:
hostgroup:
description:
- List of host groups assigned to the rule.
- - If an empty list is passed all host groups are removed from the rule.
- - If option is omitted host groups are not checked nor changed.
+ - If an empty list is passed all host groups will be removed from the rule.
+ - If option is omitted host groups will not be checked or changed.
- Option O(hostcategory) must be omitted to assign host groups.
type: list
elements: str
@@ -113,8 +113,8 @@ options:
user:
description:
- List of users assigned to the rule.
- - If an empty list is passed all users are removed from the rule.
- - If option is omitted users are not checked nor changed.
+ - If an empty list is passed all users will be removed from the rule.
+ - If option is omitted users will not be checked or changed.
type: list
elements: str
usercategory:
@@ -125,8 +125,8 @@ options:
usergroup:
description:
- List of user groups assigned to the rule.
- - If an empty list is passed all user groups are removed from the rule.
- - If option is omitted user groups are not checked nor changed.
+ - If an empty list is passed all user groups will be removed from the rule.
+ - If option is omitted user groups will not be checked or changed.
type: list
elements: str
state:
diff --git a/plugins/modules/ipa_user.py b/plugins/modules/ipa_user.py
index 6e61f89600..47d50972bd 100644
--- a/plugins/modules/ipa_user.py
+++ b/plugins/modules/ipa_user.py
@@ -35,9 +35,9 @@ options:
type: str
krbpasswordexpiration:
description:
- - Date at which the user password expires.
+ - Date at which the user password will expire.
- In the format YYYYMMddHHmmss.
- - For example V(20180121182022) expires on 21 January 2018 at 18:20:22.
+ - For example V(20180121182022) will expire on 21 January 2018 at 18:20:22.
type: str
loginshell:
description: Login shell.
@@ -45,14 +45,14 @@ options:
mail:
description:
- List of mail addresses assigned to the user.
- - If an empty list is passed all assigned email addresses are deleted.
- - If None is passed email addresses are not checked nor changed.
+ - If an empty list is passed all assigned email addresses will be deleted.
+ - If None is passed email addresses will not be checked or changed.
type: list
elements: str
password:
description:
- Password for a user.
- - It is not set for an existing user unless O(update_password=always), which is the default.
+ - Will not be set for an existing user unless O(update_password=always), which is the default.
type: str
sn:
description:
@@ -62,8 +62,8 @@ options:
sshpubkey:
description:
- List of public SSH key.
- - If an empty list is passed all assigned public keys are deleted.
- - If None is passed SSH public keys are not checked nor changed.
+ - If an empty list is passed all assigned public keys will be deleted.
+ - If None is passed SSH public keys will not be checked or changed.
type: list
elements: str
state:
@@ -74,8 +74,8 @@ options:
telephonenumber:
description:
- List of telephone numbers assigned to the user.
- - If an empty list is passed all assigned telephone numbers are deleted.
- - If None is passed telephone numbers are not checked nor changed.
+ - If an empty list is passed all assigned telephone numbers will be deleted.
+ - If None is passed telephone numbers will not be checked or changed.
type: list
elements: str
title:
diff --git a/plugins/modules/ipbase_info.py b/plugins/modules/ipbase_info.py
index 7a2dde13d6..3c7d3d26c1 100644
--- a/plugins/modules/ipbase_info.py
+++ b/plugins/modules/ipbase_info.py
@@ -21,7 +21,7 @@ extends_documentation_fragment:
options:
ip:
description:
- - The IP you want to get the info for. If not specified the API detects the IP automatically.
+ - The IP you want to get the info for. If not specified the API will detect the IP automatically.
required: false
type: str
apikey:
@@ -31,7 +31,7 @@ options:
type: str
hostname:
description:
- - If the O(hostname) parameter is set to V(true), the API response contains the hostname of the IP.
+ - If the O(hostname) parameter is set to V(true), the API response will contain the hostname of the IP.
required: false
type: bool
default: false
@@ -71,148 +71,147 @@ data:
of the response."
returned: success
type: dict
- sample:
- {
- "ip": "1.1.1.1",
- "hostname": "one.one.one.one",
- "type": "v4",
- "range_type": {
- "type": "PUBLIC",
- "description": "Public address"
+ sample: {
+ "ip": "1.1.1.1",
+ "hostname": "one.one.one.one",
+ "type": "v4",
+ "range_type": {
+ "type": "PUBLIC",
+ "description": "Public address"
+ },
+ "connection": {
+ "asn": 13335,
+ "organization": "Cloudflare, Inc.",
+ "isp": "APNIC Research and Development",
+ "range": "1.1.1.1/32"
+ },
+ "location": {
+ "geonames_id": 5332870,
+ "latitude": 34.053611755371094,
+ "longitude": -118.24549865722656,
+ "zip": "90012",
+ "continent": {
+ "code": "NA",
+ "name": "North America",
+ "name_translated": "North America"
},
- "connection": {
- "asn": 13335,
- "organization": "Cloudflare, Inc.",
- "isp": "APNIC Research and Development",
- "range": "1.1.1.1/32"
+ "country": {
+ "alpha2": "US",
+ "alpha3": "USA",
+ "calling_codes": [
+ "+1"
+ ],
+ "currencies": [
+ {
+ "symbol": "$",
+ "name": "US Dollar",
+ "symbol_native": "$",
+ "decimal_digits": 2,
+ "rounding": 0,
+ "code": "USD",
+ "name_plural": "US dollars"
+ }
+ ],
+ "emoji": "...",
+ "ioc": "USA",
+ "languages": [
+ {
+ "name": "English",
+ "name_native": "English"
+ }
+ ],
+ "name": "United States",
+ "name_translated": "United States",
+ "timezones": [
+ "America/New_York",
+ "America/Detroit",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Vevay",
+ "America/Chicago",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Knox",
+ "America/Menominee",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/North_Dakota/Beulah",
+ "America/Denver",
+ "America/Boise",
+ "America/Phoenix",
+ "America/Los_Angeles",
+ "America/Anchorage",
+ "America/Juneau",
+ "America/Sitka",
+ "America/Metlakatla",
+ "America/Yakutat",
+ "America/Nome",
+ "America/Adak",
+ "Pacific/Honolulu"
+ ],
+ "is_in_european_union": false,
+ "fips": "US",
+ "geonames_id": 6252001,
+ "hasc_id": "US",
+ "wikidata_id": "Q30"
},
- "location": {
- "geonames_id": 5332870,
- "latitude": 34.053611755371094,
- "longitude": -118.24549865722656,
- "zip": "90012",
- "continent": {
- "code": "NA",
- "name": "North America",
- "name_translated": "North America"
- },
- "country": {
- "alpha2": "US",
- "alpha3": "USA",
- "calling_codes": [
- "+1"
- ],
- "currencies": [
- {
- "symbol": "$",
- "name": "US Dollar",
- "symbol_native": "$",
- "decimal_digits": 2,
- "rounding": 0,
- "code": "USD",
- "name_plural": "US dollars"
- }
- ],
- "emoji": "...",
- "ioc": "USA",
- "languages": [
- {
- "name": "English",
- "name_native": "English"
- }
- ],
- "name": "United States",
- "name_translated": "United States",
- "timezones": [
- "America/New_York",
- "America/Detroit",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Indiana/Indianapolis",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Vevay",
- "America/Chicago",
- "America/Indiana/Tell_City",
- "America/Indiana/Knox",
- "America/Menominee",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/North_Dakota/Beulah",
- "America/Denver",
- "America/Boise",
- "America/Phoenix",
- "America/Los_Angeles",
- "America/Anchorage",
- "America/Juneau",
- "America/Sitka",
- "America/Metlakatla",
- "America/Yakutat",
- "America/Nome",
- "America/Adak",
- "Pacific/Honolulu"
- ],
- "is_in_european_union": false,
- "fips": "US",
- "geonames_id": 6252001,
- "hasc_id": "US",
- "wikidata_id": "Q30"
- },
- "city": {
- "fips": "644000",
- "alpha2": null,
- "geonames_id": 5368753,
- "hasc_id": null,
- "wikidata_id": "Q65",
- "name": "Los Angeles",
- "name_translated": "Los Angeles"
- },
- "region": {
- "fips": "US06",
- "alpha2": "US-CA",
- "geonames_id": 5332921,
- "hasc_id": "US.CA",
- "wikidata_id": "Q99",
- "name": "California",
- "name_translated": "California"
- }
+ "city": {
+ "fips": "644000",
+ "alpha2": null,
+ "geonames_id": 5368753,
+ "hasc_id": null,
+ "wikidata_id": "Q65",
+ "name": "Los Angeles",
+ "name_translated": "Los Angeles"
},
- "tlds": [
- ".us"
- ],
- "timezone": {
- "id": "America/Los_Angeles",
- "current_time": "2023-05-04T04:30:28-07:00",
- "code": "PDT",
- "is_daylight_saving": true,
- "gmt_offset": -25200
- },
- "security": {
- "is_anonymous": false,
- "is_datacenter": false,
- "is_vpn": false,
- "is_bot": false,
- "is_abuser": true,
- "is_known_attacker": true,
- "is_proxy": false,
- "is_spam": false,
- "is_tor": false,
- "is_icloud_relay": false,
- "threat_score": 100
- },
- "domains": {
- "count": 10943,
- "domains": [
- "eliwise.academy",
- "accountingprose.academy",
- "pistola.academy",
- "1and1-test-ntlds-fr.accountant",
- "omnergy.africa"
- ]
+ "region": {
+ "fips": "US06",
+ "alpha2": "US-CA",
+ "geonames_id": 5332921,
+ "hasc_id": "US.CA",
+ "wikidata_id": "Q99",
+ "name": "California",
+ "name_translated": "California"
}
+ },
+ "tlds": [
+ ".us"
+ ],
+ "timezone": {
+ "id": "America/Los_Angeles",
+ "current_time": "2023-05-04T04:30:28-07:00",
+ "code": "PDT",
+ "is_daylight_saving": true,
+ "gmt_offset": -25200
+ },
+ "security": {
+ "is_anonymous": false,
+ "is_datacenter": false,
+ "is_vpn": false,
+ "is_bot": false,
+ "is_abuser": true,
+ "is_known_attacker": true,
+ "is_proxy": false,
+ "is_spam": false,
+ "is_tor": false,
+ "is_icloud_relay": false,
+ "threat_score": 100
+ },
+ "domains": {
+ "count": 10943,
+ "domains": [
+ "eliwise.academy",
+ "accountingprose.academy",
+ "pistola.academy",
+ "1and1-test-ntlds-fr.accountant",
+ "omnergy.africa"
+ ]
}
+ }
"""
from ansible.module_utils.basic import AnsibleModule
@@ -285,10 +284,10 @@ class IpbaseInfo(object):
def main():
module_args = dict(
- 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'),
+ 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'),
)
module = AnsibleModule(
diff --git a/plugins/modules/ipify_facts.py b/plugins/modules/ipify_facts.py
index b7cd2b7447..7767c8d0ff 100644
--- a/plugins/modules/ipify_facts.py
+++ b/plugins/modules/ipify_facts.py
@@ -24,7 +24,7 @@ options:
api_url:
description:
- URL of the ipify.org API service.
- - C(?format=json) is appended by default.
+ - C(?format=json) will be appended per default.
type: str
default: https://api.ipify.org/
timeout:
@@ -34,7 +34,7 @@ options:
default: 10
validate_certs:
description:
- - When set to V(false), SSL certificates are not validated.
+ - When set to V(false), SSL certificates will not be validated.
type: bool
default: true
notes:
diff --git a/plugins/modules/ipmi_boot.py b/plugins/modules/ipmi_boot.py
index 69131732c6..bd96b35a51 100644
--- a/plugins/modules/ipmi_boot.py
+++ b/plugins/modules/ipmi_boot.py
@@ -95,17 +95,17 @@ author: "Bulat Gaifullin (@bgaifullin) "
RETURN = r"""
bootdev:
- description: The boot device name which is used beyond next boot.
+ description: The boot device name which will be used beyond next boot.
returned: success
type: str
sample: default
persistent:
- description: If V(true), system firmware uses this device beyond next boot.
+ description: If True, system firmware will use this device beyond next boot.
returned: success
type: bool
sample: false
uefimode:
- description: If V(true), system firmware uses UEFI boot explicitly beyond next boot.
+ description: If True, system firmware will use UEFI boot explicitly beyond next boot.
returned: success
type: bool
sample: false
diff --git a/plugins/modules/iptables_state.py b/plugins/modules/iptables_state.py
index 21fe75ce02..568577c82f 100644
--- a/plugins/modules/iptables_state.py
+++ b/plugins/modules/iptables_state.py
@@ -27,8 +27,8 @@ description:
notes:
- The rollback feature is not a module option and depends on task's attributes. To enable it, the module must be played
asynchronously, in other words by setting task attributes C(poll) to V(0), and C(async) to a value less or equal to C(ANSIBLE_TIMEOUT).
- If C(async) is greater, the rollback still happens when needed, but you experience a connection timeout instead of more
- relevant info returned by the module after its failure.
+ If C(async) is greater, the rollback will still happen if it shall happen, but you will experience a connection timeout
+ instead of more relevant info returned by the module after its failure.
attributes:
check_mode:
support: full
diff --git a/plugins/modules/ipwcli_dns.py b/plugins/modules/ipwcli_dns.py
index 604eb82b5f..118f59e8d9 100644
--- a/plugins/modules/ipwcli_dns.py
+++ b/plugins/modules/ipwcli_dns.py
@@ -16,7 +16,7 @@ short_description: Manage DNS Records for Ericsson IPWorks using C(ipwcli)
version_added: '0.2.0'
description:
- - Manage DNS records for the Ericsson IPWorks DNS server. The module uses the C(ipwcli) to deploy the DNS records.
+ - Manage DNS records for the Ericsson IPWorks DNS server. The module will use the C(ipwcli) to deploy the DNS records.
requirements:
- ipwcli (installed on Ericsson IPWorks)
@@ -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'),
- ttl=dict(type='int', default=3600),
+ address=dict(type='str', required=False),
+ ttl=dict(type='int', required=False, default=3600),
state=dict(type='str', default='present', choices=['absent', 'present']),
- 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'),
+ 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),
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 d18c9fd85f..2cd99341b6 100644
--- a/plugins/modules/irc.py
+++ b/plugins/modules/irc.py
@@ -73,13 +73,13 @@ options:
channel:
type: str
description:
- - Channel name. One of nick_to or channel needs to be set. When both are set, the message is sent to both of them.
+ - Channel name. One of nick_to or channel needs to be set. When both are set, the message will be sent to both of them.
nick_to:
type: list
elements: str
description:
- A list of nicknames to send the message to. One of nick_to or channel needs to be set. When both are defined, the
- message is sent to both of them.
+ message will be sent to both of them.
key:
type: str
description:
@@ -118,7 +118,7 @@ options:
default: none
validate_certs:
description:
- - If set to V(false), the SSL certificates are not validated.
+ - If set to V(false), the SSL certificates will not be validated.
- This should always be set to V(true). Using V(false) is unsafe and should only be done if the network between between
Ansible and the IRC server is known to be safe.
- B(Note:) for security reasons, you should always set O(use_tls=true) and O(validate_certs=true) whenever possible.
@@ -232,11 +232,9 @@ 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:
@@ -246,7 +244,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, **kwargs)
+ irc = context.wrap_socket(irc)
irc.connect((server, int(port)))
if passwd:
@@ -311,7 +309,7 @@ def main():
server=dict(default='localhost'),
port=dict(type='int', default=6667),
nick=dict(default='ansible'),
- nick_to=dict(type='list', elements='str'),
+ nick_to=dict(required=False, type='list', elements='str'),
msg=dict(required=True),
color=dict(default="none", aliases=['colour'], choices=["white", "black", "blue",
"green", "red", "brown",
@@ -320,7 +318,7 @@ def main():
"light_blue", "pink", "gray",
"light_gray", "none"]),
style=dict(default="none", choices=["underline", "reverse", "bold", "italic", "none"]),
- channel=dict(),
+ channel=dict(required=False),
key=dict(no_log=True),
topic=dict(),
passwd=dict(no_log=True),
diff --git a/plugins/modules/iso_create.py b/plugins/modules/iso_create.py
index 70f76558e6..008cb271bb 100644
--- a/plugins/modules/iso_create.py
+++ b/plugins/modules/iso_create.py
@@ -32,8 +32,8 @@ attributes:
options:
src_files:
description:
- - This is a list of absolute paths of source files or folders to be contained in the new generated ISO file.
- - The module fails if specified file or folder in O(src_files) does not exist on local machine.
+ - This is a list of absolute paths of source files or folders which will be contained in the new generated ISO file.
+ - Will fail if specified file or folder in O(src_files) does not exist on local machine.
- 'Note: With all ISO9660 levels from 1 to 3, all file names are restricted to uppercase letters, numbers and underscores
(_). File names are limited to 31 characters, directory nesting is limited to 8 levels, and path names are limited
to 255 characters.'
@@ -43,7 +43,7 @@ options:
dest_iso:
description:
- The absolute path with file name of the new generated ISO file on local machine.
- - It creates intermediate folders when they do not exist.
+ - Will create intermediate folders when they does not exist.
type: path
required: true
interchange_level:
diff --git a/plugins/modules/iso_customize.py b/plugins/modules/iso_customize.py
index 5ee5b22c2c..feac8417b8 100644
--- a/plugins/modules/iso_customize.py
+++ b/plugins/modules/iso_customize.py
@@ -14,7 +14,7 @@ module: iso_customize
short_description: Add/remove/change files in ISO file
description:
- This module is used to add/remove/change files in ISO file.
- - The file inside ISO is overwritten if it exists by option O(add_files).
+ - The file inside ISO will be overwritten if it exists by option O(add_files).
author:
- Yuhua Zou (@ZouYuhua)
requirements:
@@ -51,7 +51,7 @@ options:
add_files:
description:
- Allows to add and replace files in the ISO file.
- - It creates intermediate folders inside the ISO file when they do not exist.
+ - Will create intermediate folders inside the ISO file when they do not exist.
type: list
required: false
elements: dict
@@ -69,9 +69,9 @@ options:
required: true
notes:
- The C(pycdlib) library states it supports Python 2.7 and 3.4+.
- - The function C(add_file) in pycdlib is designed to overwrite the existing file in ISO with type ISO9660 / Rock Ridge 1.12
- / Joliet / UDF. But it does not overwrite the existing file in ISO with Rock Ridge 1.09 / 1.10. So we take workaround
- "delete the existing file and then add file for ISO with Rock Ridge".
+ - The function C(add_file) in pycdlib will overwrite the existing file in ISO with type ISO9660 / Rock Ridge 1.12 / Joliet
+ / UDF. But it will not overwrite the existing file in ISO with Rock Ridge 1.09 / 1.10. So we take workaround "delete the
+ existing file and then add file for ISO with Rock Ridge".
"""
EXAMPLES = r"""
diff --git a/plugins/modules/iso_extract.py b/plugins/modules/iso_extract.py
index 88644a6eb6..8cda967b64 100644
--- a/plugins/modules/iso_extract.py
+++ b/plugins/modules/iso_extract.py
@@ -55,19 +55,19 @@ options:
required: true
force:
description:
- - If V(true), it replaces the remote file when contents are different than the source.
- - If V(false), the file is only extracted and copied if the destination does not already exist.
+ - If V(true), which will replace the remote file when contents are different than the source.
+ - If V(false), the file will only be extracted and copied if the destination does not already exist.
type: bool
default: true
executable:
description:
- The path to the C(7z) executable to use for extracting files from the ISO.
- - If not provided, it assumes the value V(7z).
+ - If not provided, it will assume the value V(7z).
type: path
password:
description:
- Password used to decrypt files from the ISO.
- - It is only used if C(7z) is used.
+ - Will only be used if 7z is used.
- The password is used as a command line argument to 7z. This is a B(potential security risk) that allows passwords
to be revealed if someone else can list running processes on the same machine in the right moment.
type: str
diff --git a/plugins/modules/jabber.py b/plugins/modules/jabber.py
index ab73672410..01a34ff9f5 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(),
- port=dict(default=5222, type='int'),
- encoding=dict(),
+ host=dict(required=False),
+ port=dict(required=False, default=5222, type='int'),
+ encoding=dict(required=False),
),
supports_check_mode=True
)
diff --git a/plugins/modules/java_cert.py b/plugins/modules/java_cert.py
index 13cfea9324..b75021fc57 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 is used to create server URL:PORT.
+ - This will be 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 O(state=present), the certificate is always inserted into the keystore, even if there already exists a cert alias
- that is different.
+ - 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.
type: str
choices: [absent, present]
default: present
@@ -197,6 +197,18 @@ 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 c826c9af4c..df7e71abbe 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 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.
+ - 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.
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 re-creates the keystore with the new passphrase.
+ - If the provided password fails to unlock the keystore, the module will re-create 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 causes the existing O(dest) to be overwritten.
+ materials will cause the existing O(dest) to be overwritten.
"""
EXAMPLES = r"""
@@ -166,12 +166,24 @@ 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.py b/plugins/modules/jenkins_build.py
index 4e11dd3642..cec8fcc490 100644
--- a/plugins/modules/jenkins_build.py
+++ b/plugins/modules/jenkins_build.py
@@ -99,16 +99,6 @@ EXAMPLES = r"""
state: stopped
url: http://localhost:8080
-- name: Trigger Jenkins build in detached mode
- community.general.jenkins_build:
- name: "detached-build"
- state: present
- user: admin
- token: abcdefghijklmnopqrstuvwxyz123456
- url: http://localhost:8080
- detach: true
- time_between_checks: 20
-
- name: Delete a jenkins build using token authentication
community.general.jenkins_build:
name: "delete-experiment"
@@ -190,11 +180,11 @@ class JenkinsBuild:
def get_jenkins_connection(self):
try:
- if self.user and self.password:
+ if (self.user and self.password):
return jenkins.Jenkins(self.jenkins_url, self.user, self.password)
- elif self.user and self.token:
+ elif (self.user and self.token):
return jenkins.Jenkins(self.jenkins_url, self.user, self.token)
- elif self.user and not (self.password or self.token):
+ elif (self.user and not (self.password or self.token)):
return jenkins.Jenkins(self.jenkins_url, self.user)
else:
return jenkins.Jenkins(self.jenkins_url)
diff --git a/plugins/modules/jenkins_build_info.py b/plugins/modules/jenkins_build_info.py
index 85cb22ad2c..f252eb504a 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 is returned.
+ - If not specified the last build information will be returned.
type: int
password:
description:
@@ -138,11 +138,11 @@ class JenkinsBuildInfo:
def get_jenkins_connection(self):
try:
- if self.user and self.password:
+ if (self.user and self.password):
return jenkins.Jenkins(self.jenkins_url, self.user, self.password)
- elif self.user and self.token:
+ elif (self.user and self.token):
return jenkins.Jenkins(self.jenkins_url, self.user, self.token)
- elif self.user and not (self.password or self.token):
+ elif (self.user and not (self.password or self.token)):
return jenkins.Jenkins(self.jenkins_url, self.user)
else:
return jenkins.Jenkins(self.jenkins_url)
diff --git a/plugins/modules/jenkins_credential.py b/plugins/modules/jenkins_credential.py
deleted file mode 100644
index 3bd8a9dd7a..0000000000
--- a/plugins/modules/jenkins_credential.py
+++ /dev/null
@@ -1,863 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-#
-# 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
-
-from __future__ import absolute_import, division, print_function
-
-__metaclass__ = type
-
-DOCUMENTATION = r"""
-module: jenkins_credential
-short_description: Manage Jenkins credentials and domains through API
-version_added: 11.1.0
-description:
- - 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
-author:
- - Youssef Ali (@YoussefKhalidAli)
-extends_documentation_fragment:
- - community.general.attributes
-attributes:
- check_mode:
- support: full
- diff_mode:
- support: none
-options:
- id:
- description:
- - The ID of the Jenkins credential or domain.
- type: str
- type:
- description:
- - Type of the credential or action.
- choices:
- - user_and_pass
- - file
- - text
- - github_app
- - ssh_key
- - certificate
- - scope
- - token
- type: str
- state:
- description:
- - The state of the credential.
- choices:
- - present
- - absent
- default: present
- type: str
- scope:
- description:
- - Jenkins credential domain scope.
- - Deleting a domain scope deletes all credentials within it.
- type: str
- default: '_'
- force:
- description:
- - Force update if the credential already exists, used with O(state=present).
- - If set to V(true), it deletes the existing credential before creating a new one.
- - Always returns RV(ignore:changed=true).
- type: bool
- default: false
- url:
- description:
- - Jenkins server URL.
- type: str
- default: http://localhost:8080
- jenkins_user:
- description:
- - Jenkins user for authentication.
- required: true
- type: str
- jenkins_password:
- description:
- - Jenkins password for token creation. Required if O(type=token).
- type: str
- token:
- description:
- - Jenkins API token. Required unless O(type=token).
- type: str
- description:
- description:
- - Description of the credential or domain.
- default: ''
- type: str
- location:
- description:
- - Location of the credential. Either V(system) or V(folder).
- - If O(location=folder) then O(url) must be set to V(/job/).
- choices:
- - system
- - folder
- default: 'system'
- type: str
- name:
- description:
- - Name of the token to generate. Required if O(type=token).
- - When generating a new token, do not pass O(id). It is generated automatically.
- - Creating two tokens with the same name generates two distinct tokens with different RV(token_uuid) values.
- - Replacing a token with another one of the same name requires deleting the original first using O(force=True).
- type: str
- username:
- description:
- - Username for credentials types that require it (for example O(type=ssh_key) or O(type=user_and_pass)).
- type: str
- password:
- description:
- - Password for credentials types that require it (for example O(type=user_and_passs) or O(type=certificate)).
- type: str
- secret:
- description:
- - Secret text (used when O(type=text)).
- type: str
- appID:
- description:
- - GitHub App ID.
- type: str
- api_uri:
- description:
- - Link to Github API.
- default: 'https://api.github.com'
- type: str
- owner:
- description:
- - GitHub App owner.
- type: str
- file_path:
- description:
- - File path to secret file (for example O(type=file) or O(type=certificate)).
- - For O(type=certificate), this can be a V(.p12) or V(.pem) file.
- type: path
- private_key_path:
- description:
- - Path to private key file for PEM certificates or GitHub Apps.
- type: path
- passphrase:
- description:
- - SSH passphrase if needed.
- type: str
- inc_hostname:
- description:
- - List of hostnames to include in scope.
- type: list
- elements: str
- exc_hostname:
- description:
- - List of hostnames to exclude from scope.
- - If a hostname appears in both this list and O(inc_hostname), the hostname is excluded.
- type: list
- elements: str
- inc_hostname_port:
- description:
- - List of V(host:port) to include in scope.
- type: list
- elements: str
- exc_hostname_port:
- description:
- - List of host:port to exclude from scope.
- - If a hostname and port appears in both this list and O(inc_hostname_port), it is excluded.
- type: list
- elements: str
- 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.'
- type: list
- elements: str
- exc_path:
- description:
- - List of URL paths to exclude.
- - If a path is also matched by O(exc_path), it is excluded.
- - If you exclude a subpath of a path previously included, that subpath alone is excluded.
- type: list
- elements: str
- schemes:
- description:
- - List of schemes (for example V(http) or V(https)) to match.
- type: list
- elements: str
-"""
-
-EXAMPLES = r"""
-- name: Generate token
- community.general.jenkins_credential:
- id: "test-token"
- jenkins_user: "admin"
- jenkins_password: "password"
- type: "token"
- register: token_result
-
-- name: Add CUSTOM scope credential
- community.general.jenkins_credential:
- id: "CUSTOM"
- type: "scope"
- jenkins_user: "admin"
- token: "{{ token }}"
- description: "Custom scope credential"
- inc_path:
- - "include/path"
- - "include/path2"
- exc_path:
- - "exclude/path"
- - "exclude/path2"
- inc_hostname:
- - "included-hostname"
- - "included-hostname2"
- exc_hostname:
- - "excluded-hostname"
- - "excluded-hostname2"
- schemes:
- - "http"
- - "https"
- inc_hostname_port:
- - "included-hostname:7000"
- - "included-hostname2:7000"
- exc_hostname_port:
- - "excluded-hostname:7000"
- - "excluded-hostname2:7000"
-
-- name: Add user_and_pass credential
- community.general.jenkins_credential:
- id: "userpass-id"
- type: "user_and_pass"
- jenkins_user: "admin"
- token: "{{ token }}"
- description: "User and password credential"
- username: "user1"
- password: "pass1"
-
-- name: Add file credential to custom scope
- community.general.jenkins_credential:
- id: "file-id"
- type: "file"
- jenkins_user: "admin"
- token: "{{ token }}"
- scope: "CUSTOM"
- description: "File credential"
- file_path: "../vars/my-secret.pem"
-
-- name: Add text credential to folder
- community.general.jenkins_credential:
- id: "text-id"
- type: "text"
- jenkins_user: "admin"
- token: "{{ token }}"
- description: "Text credential"
- secret: "mysecrettext"
- location: "folder"
- url: "http://localhost:8080/job/test"
-
-- name: Add githubApp credential
- community.general.jenkins_credential:
- id: "githubapp-id"
- type: "github_app"
- jenkins_user: "admin"
- token: "{{ token }}"
- description: "GitHub app credential"
- appID: "12345"
- file_path: "../vars/github.pem"
- owner: "github_owner"
-
-- name: Add sshKey credential
- community.general.jenkins_credential:
- id: "sshkey-id"
- type: "ssh_key"
- jenkins_user: "admin"
- token: "{{ token }}"
- description: "SSH key credential"
- username: "sshuser"
- file_path: "../vars/ssh_key"
- passphrase: 1234
-
-- name: Add certificate credential (p12)
- community.general.jenkins_credential:
- id: "certificate-id"
- type: "certificate"
- jenkins_user: "admin"
- token: "{{ token }}"
- description: "Certificate credential"
- password: "12345678901234"
- file_path: "../vars/certificate.p12"
-
-- name: Add certificate credential (pem)
- community.general.jenkins_credential:
- id: "certificate-id-pem"
- type: "certificate"
- jenkins_user: "admin"
- token: "{{ token }}"
- description: "Certificate credential (pem)"
- file_path: "../vars/cert.pem"
- private_key_path: "../vars/private.key"
-"""
-RETURN = r"""
-details:
- description: Return more details in case of errors.
- type: str
- returned: failed
-token:
- description:
- - The generated API token if O(type=token).
- - This is needed to authenticate API calls later.
- - This should be stored securely, as it is the only time it is returned.
- type: str
- returned: success
-token_uuid:
- description:
- - The generated ID of the token.
- - You pass this value back to the module as O(id) to edit or revoke the token later.
- - This should be stored securely, as it is the only time it is returned.
- type: str
- returned: success
-"""
-
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.urls import fetch_url, basic_auth_header
-from ansible.module_utils.six.moves.urllib.parse import urlencode
-from ansible_collections.community.general.plugins.module_utils import deps
-
-import json
-import os
-import base64
-
-with deps.declare("urllib3", reason="urllib3 is required to embed files into requests"):
- import urllib3
-
-
-# Function to validate file paths exist on disk
-def validate_file_exist(module, path):
-
- if path and not os.path.exists(path):
- module.fail_json(msg="File not found: {}".format(path))
-
-
-# Gets the Jenkins crumb for CSRF protection which is required for API calls
-def get_jenkins_crumb(module, headers):
- type = module.params["type"]
- url = module.params["url"]
-
- if "/job" in url:
- url = url.split("/job")[0]
-
- crumb_url = "{}/crumbIssuer/api/json".format(url)
-
- response, info = fetch_url(module, crumb_url, headers=headers)
-
- if info["status"] != 200:
- module.fail_json(msg="Failed to fetch Jenkins crumb. Confirm token is real.")
-
- # Cookie is needed to generate API token
- cookie = info.get("set-cookie", "")
- session_cookie = cookie.split(";")[0] if cookie else None
-
- try:
- data = response.read()
- json_data = json.loads(data)
- crumb_request_field = json_data["crumbRequestField"]
- crumb = json_data["crumb"]
- headers[crumb_request_field] = crumb # Set the crumb in headers
- headers["Content-Type"] = (
- "application/x-www-form-urlencoded" # Set Content-Type for form data
- )
- if type == "token":
- headers["Cookie"] = (
- session_cookie # Set session cookie for token operations
- )
- return crumb_request_field, crumb, session_cookie # Return for test purposes
-
- except Exception:
- return None
-
-
-# Function to clean the data sent via API by removing unwanted keys and None values
-def clean_data(data):
- # Keys to remove (including those with None values)
- keys_to_remove = {
- "url",
- "token",
- "jenkins_user",
- "jenkins_password",
- "file_path",
- "private_key_path",
- "type",
- "state",
- "force",
- "name",
- "scope",
- "location",
- "api_uri",
- }
-
- # Filter out None values and unwanted keys
- cleaned_data = {
- key: value
- for key, value in data.items()
- if value is not None and key not in keys_to_remove
- }
-
- return cleaned_data
-
-
-# Function to check if credentials/domain exists
-def target_exists(module, check_domain=False):
- url = module.params["url"]
- location = module.params["location"]
- scope = module.params["scope"]
- name = module.params["id"]
- user = module.params["jenkins_user"]
- token = module.params["token"]
-
- headers = {"Authorization": basic_auth_header(user, token)}
-
- if module.params["type"] == "scope" or check_domain:
- target_url = "{}/credentials/store/{}/domain/{}/api/json".format(
- url, location, scope if check_domain else name
- )
- elif module.params["type"] == "token":
- return False # Can't check token
- else:
- target_url = "{}/credentials/store/{}/domain/{}/credential/{}/api/json".format(
- url, location, scope, name
- )
-
- response, info = fetch_url(module, target_url, headers=headers)
- status = info.get("status", 0)
-
- if status == 200:
- return True
- elif status == 404:
- return False
- else:
- module.fail_json(
- msg="Unexpected status code {} when checking {} existence.".format(
- status, name
- )
- )
-
-
-# Function to delete the scope or credential provided
-def delete_target(module, headers):
- user = module.params["jenkins_user"]
- type = module.params["type"]
- url = module.params["url"]
- location = module.params["location"]
- id = module.params["id"]
- scope = module.params["scope"]
-
- body = False
-
- try:
-
- if type == "token":
- delete_url = "{}/user/{}/descriptorByName/jenkins.security.ApiTokenProperty/revoke".format(
- url, user
- )
- body = urlencode({"tokenUuid": id})
-
- elif type == "scope":
- delete_url = "{}/credentials/store/{}/domain/{}/doDelete".format(
- url, location, id
- )
-
- else:
- delete_url = (
- "{}/credentials/store/{}/domain/{}/credential/{}/doDelete".format(
- url, location, scope, id
- )
- )
-
- response, info = fetch_url(
- module,
- delete_url,
- headers=headers,
- data=body if body else None,
- method="POST",
- )
-
- status = info.get("status", 0)
- if not status == 200:
- module.fail_json(
- msg="Failed to delete: HTTP {}, {}, {}".format(
- status, response, headers
- )
- )
-
- except Exception as e:
- module.fail_json(msg="Exception during delete: {}".format(str(e)))
-
-
-# Function to read the private key for types texts and ssh_key
-def read_privateKey(module):
- try:
- with open(module.params["private_key_path"], "r") as f:
- private_key = f.read().strip()
- return private_key
- except Exception as e:
- module.fail_json(msg="Failed to read private key file: {}".format(str(e)))
-
-
-# Function to builds multipart form-data body and content-type header for file credential upload.
-# Returns:
-# body (bytes): Encoded multipart data
-# content_type (str): Content-Type header including boundary
-def embed_file_into_body(module, file_path, credentials):
-
- filename = os.path.basename(file_path)
-
- try:
- with open(file_path, "rb") as f:
- file_bytes = f.read()
- except Exception as e:
- module.fail_json(msg="Failed to read file: {}".format(str(e)))
- return "", "" # Return for test purposes
-
- credentials.update(
- {
- "file": "file0",
- "fileName": filename,
- }
- )
-
- payload = {"credentials": credentials}
-
- fields = {"file0": (filename, file_bytes), "json": json.dumps(payload)}
-
- body, content_type = urllib3.encode_multipart_formdata(fields)
- return body, content_type
-
-
-# Main function to run the Ansible module
-def run_module():
-
- module = AnsibleModule(
- argument_spec=dict(
- id=dict(type="str"),
- type=dict(
- type="str",
- choices=[
- "user_and_pass",
- "file",
- "text",
- "github_app",
- "ssh_key",
- "certificate",
- "scope",
- "token",
- ],
- ),
- state=dict(type="str", default="present", choices=["present", "absent"]),
- force=dict(type="bool", default=False),
- scope=dict(type="str", default="_"),
- url=dict(type="str", default="http://localhost:8080"),
- jenkins_user=dict(type="str", required=True),
- jenkins_password=dict(type="str", no_log=True),
- token=dict(type="str", no_log=True),
- description=dict(type="str", default=""),
- location=dict(type="str", default="system", choices=["system", "folder"]),
- name=dict(type="str"),
- username=dict(type="str"),
- password=dict(type="str", no_log=True),
- 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"),
- owner=dict(type="str"),
- passphrase=dict(type="str", no_log=True),
- private_key_path=dict(type="path", no_log=True),
- # Scope specifications parameters
- inc_hostname=dict(type="list", elements="str"),
- exc_hostname=dict(type="list", elements="str"),
- inc_hostname_port=dict(type="list", elements="str"),
- exc_hostname_port=dict(type="list", elements="str"),
- inc_path=dict(type="list", elements="str"),
- exc_path=dict(type="list", elements="str"),
- schemes=dict(type="list", elements="str"),
- ),
- supports_check_mode=True,
- required_if=[
- ("state", "present", ["type"]),
- ("state", "absent", ["id"]),
- ("type", "token", ["name", "jenkins_password"]),
- ("type", "user_and_pass", ["username", "password", "id", "token"]),
- ("type", "file", ["file_path", "id", "token"]),
- ("type", "text", ["secret", "id", "token"]),
- ("type", "github_app", ["appID", "private_key_path", "id", "token"]),
- ("type", "ssh_key", ["username", "private_key_path", "id", "token"]),
- ("type", "certificate", ["file_path", "id", "token"]),
- ("type", "scope", ["id", "token"]),
- ],
- )
-
- # Parameters
- id = module.params["id"]
- type = module.params["type"]
- state = module.params["state"]
- force = module.params["force"]
- scope = module.params["scope"]
- url = module.params["url"]
- jenkins_user = module.params["jenkins_user"]
- jenkins_password = module.params["jenkins_password"]
- name = module.params["name"]
- token = module.params["token"]
- description = module.params["description"]
- location = module.params["location"]
- filePath = module.params["file_path"]
- private_key_path = module.params["private_key_path"]
- api_uri = module.params["api_uri"]
- inc_hostname = module.params["inc_hostname"]
- exc_hostname = module.params["exc_hostname"]
- inc_hostname_port = module.params["inc_hostname_port"]
- exc_hostname_port = module.params["exc_hostname_port"]
- inc_path = module.params["inc_path"]
- exc_path = module.params["exc_path"]
- schemes = module.params["schemes"]
-
- deps.validate(module)
-
- headers = {
- "Authorization": basic_auth_header(jenkins_user, token or jenkins_password),
- }
-
- # Get the crumb for CSRF protection
- get_jenkins_crumb(module, headers)
-
- result = dict(
- changed=False,
- msg="",
- )
-
- credentials = clean_data(module.params)
-
- does_exist = target_exists(module)
-
- # Check if the credential/domain doesn't exist and the user wants to delete
- if not does_exist and state == "absent" and not type == "token":
- result["changed"] = False
- result["msg"] = "{} does not exist.".format(id)
- module.exit_json(**result)
-
- if state == "present":
-
- # If updating, we need to delete the existing credential/domain first based on force parameter
- if force and (does_exist or type == "token"):
- delete_target(module, headers)
- elif does_exist and not force:
- result["changed"] = False
- result["msg"] = "{} already exists. Use force=True to update.".format(id)
- module.exit_json(**result)
-
- if type == "token":
-
- post_url = "{}/user/{}/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken".format(
- url, jenkins_user
- )
-
- body = "newTokenName={}".format(name)
-
- elif type == "scope":
-
- post_url = "{}/credentials/store/{}/createDomain".format(url, location)
-
- specifications = []
-
- # Create a domain in Jenkins
- if inc_hostname or exc_hostname:
- specifications.append(
- {
- "stapler-class": "com.cloudbees.plugins.credentials.domains.HostnameSpecification",
- "includes": ",".join(inc_hostname),
- "excludes": ",".join(exc_hostname),
- }
- )
-
- if inc_hostname_port or exc_hostname_port:
- specifications.append(
- {
- "stapler-class": "com.cloudbees.plugins.credentials.domains.HostnamePortSpecification",
- "includes": ",".join(inc_hostname_port),
- "excludes": ",".join(exc_hostname_port),
- }
- )
-
- if schemes:
- specifications.append(
- {
- "stapler-class": "com.cloudbees.plugins.credentials.domains.SchemeSpecification",
- "schemes": ",".join(schemes),
- },
- )
-
- if inc_path or exc_path:
- specifications.append(
- {
- "stapler-class": "com.cloudbees.plugins.credentials.domains.PathSpecification",
- "includes": ",".join(inc_path),
- "excludes": ",".join(exc_path),
- }
- )
-
- payload = {
- "name": id,
- "description": description,
- "specifications": specifications,
- }
-
- else:
- if filePath:
- validate_file_exist(module, filePath)
- elif private_key_path:
- validate_file_exist(module, private_key_path)
-
- post_url = "{}/credentials/store/{}/domain/{}/createCredentials".format(
- url, location, scope
- )
-
- cred_class = {
- "user_and_pass": "com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl",
- "file": "org.jenkinsci.plugins.plaincredentials.impl.FileCredentialsImpl",
- "text": "org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl",
- "github_app": "org.jenkinsci.plugins.github_branch_source.GitHubAppCredentials",
- "ssh_key": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey",
- "certificate": "com.cloudbees.plugins.credentials.impl.CertificateCredentialsImpl",
- }
- credentials.update({"$class": cred_class[type]})
-
- if type == "file":
-
- # Build multipart body and content-type
- body, content_type = embed_file_into_body(module, filePath, credentials)
- headers["Content-Type"] = content_type
-
- elif type == "github_app":
-
- private_key = read_privateKey(module)
-
- credentials.update(
- {
- "privateKey": private_key,
- "apiUri": api_uri,
- }
- )
-
- elif type == "ssh_key":
-
- private_key = read_privateKey(module)
-
- credentials.update(
- {
- "privateKeySource": {
- "stapler-class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource",
- "privateKey": private_key,
- },
- }
- )
-
- elif type == "certificate":
-
- name, ext = os.path.splitext(filePath)
-
- if ext.lower() in [".p12", ".pfx"]:
- try:
- with open(filePath, "rb") as f:
- file_content = f.read()
- uploaded_keystore = base64.b64encode(file_content).decode(
- "utf-8"
- )
- except Exception as e:
- module.fail_json(
- msg="Failed to read or encode keystore file: {}".format(
- str(e)
- )
- )
-
- credentials.update(
- {
- "keyStoreSource": {
- "$class": "com.cloudbees.plugins.credentials.impl.CertificateCredentialsImpl$UploadedKeyStoreSource",
- "uploadedKeystore": uploaded_keystore,
- },
- }
- )
-
- elif ext.lower() in [".pem", ".crt"]: # PEM mode
- try:
- with open(filePath, "r") as f:
- cert_chain = f.read()
- with open(private_key_path, "r") as f:
- private_key = f.read()
- except Exception as e:
- module.fail_json(
- msg="Failed to read PEM files: {}".format(str(e))
- )
-
- credentials.update(
- {
- "keyStoreSource": {
- "$class": "com.cloudbees.plugins.credentials.impl.CertificateCredentialsImpl$PEMEntryKeyStoreSource",
- "certChain": cert_chain,
- "privateKey": private_key,
- },
- }
- )
-
- else:
- module.fail_json(
- msg="Unsupported certificate file type. Only .p12, .pfx, .pem or .crt are supported."
- )
-
- payload = {"credentials": credentials}
-
- if not type == "file" and not type == "token":
- body = urlencode({"json": json.dumps(payload)})
-
- else: # Delete
-
- delete_target(module, headers)
-
- module.exit_json(changed=True, msg="{} deleted successfully.".format(id))
-
- if (
- not type == "scope" and not scope == "_"
- ): # Check if custom scope exists if adding to a custom scope
- if not target_exists(module, True):
- module.fail_json(msg="Domain {} doesn't exists".format(scope))
-
- try:
- response, info = fetch_url(
- module, post_url, headers=headers, data=body, method="POST"
- )
- except Exception as e:
- module.fail_json(msg="Request to {} failed: {}".format(post_url, str(e)))
-
- status = info.get("status", 0)
-
- if not status == 200:
- body = response.read() if response else b""
- module.fail_json(
- msg="Failed to {} credential".format(
- "add/update" if state == "present" else "delete"
- ),
- details=body.decode("utf-8", errors="ignore"),
- )
-
- if type == "token":
- response_data = json.loads(response.read())
- result["token"] = response_data["data"]["tokenValue"]
- result["token_uuid"] = response_data["data"]["tokenUuid"]
-
- result["changed"] = True
- result["msg"] = response.read().decode("utf-8")
-
- module.exit_json(**result)
-
-
-if __name__ == "__main__":
- run_module()
diff --git a/plugins/modules/jenkins_job.py b/plugins/modules/jenkins_job.py
index 8362a40255..93d922ed22 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 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.
+ - 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.
- 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'),
+ config=dict(type='str', required=False),
name=dict(type='str', required=True),
- 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'),
+ 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),
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 37d9af3f56..638158fb44 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 are not validated.
+ - 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.
default: true
type: bool
diff --git a/plugins/modules/jenkins_node.py b/plugins/modules/jenkins_node.py
index aa75100168..affd462659 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 is raised.
+ - If O(offline_message) is given and requested O(state) is not V(disabled), an error will be 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 is issued.
+ offline (current state V(disabled)) is not possible. In this case, a warning will be issued.
type: str
version_added: 10.0.0
"""
diff --git a/plugins/modules/jenkins_plugin.py b/plugins/modules/jenkins_plugin.py
index ca06d77a8f..73ff40c725 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 is performed every time. This is suitable to keep the plugin up-to-date.
+ - 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.
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 is always 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 will always be downloaded to calculate
+ its checksum when O(state=latest) is specified.
default: 86400
updates_url:
type: list
@@ -74,18 +74,6 @@ options:
- A list of base URL(s) to retrieve C(update-center.json), and direct plugin files from.
- This can be a list since community.general 3.3.0.
default: ['https://updates.jenkins.io', 'http://mirrors.jenkins.io']
- updates_url_username:
- description:
- - If using a custom O(updates_url), set this as the username of the user with access to the URL.
- - If the custom O(updates_url) does not require authentication, this can be left empty.
- type: str
- version_added: 11.2.0
- updates_url_password:
- description:
- - If using a custom O(updates_url), set this as the password of the user with access to the URL.
- - If the custom O(updates_url) does not require authentication, this can be left empty.
- type: str
- version_added: 11.2.0
update_json_url_segment:
type: list
elements: str
@@ -93,13 +81,6 @@ options:
- A list of URL segment(s) to retrieve the update center JSON file from.
default: ['update-center.json', 'updates/update-center.json']
version_added: 3.3.0
- plugin_versions_url_segment:
- type: list
- elements: str
- description:
- - A list of URL segment(s) to retrieve the plugin versions JSON file from.
- default: ['plugin-versions.json', 'current/plugin-versions.json']
- version_added: 11.2.0
latest_plugins_url_segments:
type: list
elements: str
@@ -131,8 +112,7 @@ options:
with_dependencies:
description:
- Defines whether to install plugin dependencies.
- - In earlier versions, this option had no effect when a specific O(version) was set.
- Since community.general 11.2.0, dependencies are also installed for versioned plugins.
+ - This option takes effect only if the O(version) is not defined.
type: bool
default: true
@@ -144,9 +124,6 @@ notes:
- Pinning works only if the plugin is installed and Jenkins service was successfully restarted after the plugin installation.
- It is not possible to run the module remotely by changing the O(url) parameter to point to the Jenkins server. The module
must be used on the host where Jenkins runs as it needs direct access to the plugin files.
- - If using a custom O(updates_url), ensure that the URL provides a C(plugin-versions.json) file.
- This file must include metadata for all available plugin versions to support version compatibility resolution.
- The file should be in the same format as the one provided by Jenkins update center (https://updates.jenkins.io/current/plugin-versions.json).
extends_documentation_fragment:
- ansible.builtin.url
- ansible.builtin.files
@@ -338,13 +315,11 @@ import io
import json
import os
import tempfile
-import time
-from collections import OrderedDict
from ansible.module_utils.basic import AnsibleModule, to_bytes
from ansible.module_utils.six.moves import http_cookiejar as cookiejar
from ansible.module_utils.six.moves.urllib.parse import urlencode
-from ansible.module_utils.urls import fetch_url, url_argument_spec, basic_auth_header
+from ansible.module_utils.urls import fetch_url, url_argument_spec
from ansible.module_utils.six import text_type, binary_type
from ansible.module_utils.common.text.converters import to_native
@@ -365,24 +340,14 @@ class JenkinsPlugin(object):
self.url = self.params['url']
self.timeout = self.params['timeout']
- # Authentication for non-Jenkins calls
- self.updates_url_credentials = {}
- if self.params.get('updates_url_username') and self.params.get('updates_url_password'):
- self.updates_url_credentials["Authorization"] = basic_auth_header(self.params['updates_url_username'], self.params['updates_url_password'])
-
# Crumb
self.crumb = {}
-
- # Authentication for Jenkins calls
- if self.params.get('url_username') and self.params.get('url_password'):
- self.crumb["Authorization"] = basic_auth_header(self.params['url_username'], self.params['url_password'])
-
# Cookie jar for crumb session
self.cookies = None
if self._csrf_enabled():
self.cookies = cookiejar.LWPCookieJar()
- self._get_crumb()
+ self.crumb = self._get_crumb()
# Get list of installed plugins
self._get_installed_plugins()
@@ -425,14 +390,10 @@ class JenkinsPlugin(object):
err_msg = None
try:
self.module.debug("fetching url: %s" % url)
-
- is_jenkins_call = url.startswith(self.url)
- self.module.params['force_basic_auth'] = is_jenkins_call
-
response, info = fetch_url(
self.module, url, timeout=self.timeout, cookies=self.cookies,
- headers=self.crumb if is_jenkins_call else self.updates_url_credentials or self.crumb,
- **kwargs)
+ headers=self.crumb, **kwargs)
+
if info['status'] == 200:
return response
else:
@@ -461,13 +422,9 @@ class JenkinsPlugin(object):
# Get the URL data
try:
- is_jenkins_call = url.startswith(self.url)
- self.module.params['force_basic_auth'] = is_jenkins_call
-
response, info = fetch_url(
self.module, url, timeout=self.timeout, cookies=self.cookies,
- headers=self.crumb if is_jenkins_call else self.updates_url_credentials or self.crumb,
- **kwargs)
+ headers=self.crumb, **kwargs)
if info['status'] != 200:
if dont_fail:
@@ -487,12 +444,16 @@ class JenkinsPlugin(object):
"%s/%s" % (self.url, "crumbIssuer/api/json"), 'Crumb')
if 'crumbRequestField' in crumb_data and 'crumb' in crumb_data:
- self.crumb[crumb_data['crumbRequestField']] = crumb_data['crumb']
+ ret = {
+ crumb_data['crumbRequestField']: crumb_data['crumb']
+ }
else:
self.module.fail_json(
msg="Required fields not found in the Crum response.",
details=crumb_data)
+ return ret
+
def _get_installed_plugins(self):
plugins_data = self._get_json_data(
"%s/%s" % (self.url, "pluginManager/api/json?depth=1"),
@@ -506,7 +467,6 @@ class JenkinsPlugin(object):
self.is_installed = False
self.is_pinned = False
self.is_enabled = False
- self.installed_plugins = plugins_data['plugins']
for p in plugins_data['plugins']:
if p['shortName'] == self.params['name']:
@@ -520,40 +480,6 @@ class JenkinsPlugin(object):
break
- def _install_dependencies(self):
- dependencies = self._get_versioned_dependencies()
- self.dependencies_states = []
-
- for dep_name, dep_version in dependencies.items():
- if not any(p['shortName'] == dep_name and p['version'] == dep_version for p in self.installed_plugins):
- dep_params = self.params.copy()
- dep_params['name'] = dep_name
- dep_params['version'] = dep_version
- dep_module = AnsibleModule(
- argument_spec=self.module.argument_spec,
- supports_check_mode=self.module.check_mode
- )
- dep_module.params = dep_params
- dep_plugin = JenkinsPlugin(dep_module)
- if not dep_plugin.install():
- self.dependencies_states.append(
- {
- 'name': dep_name,
- 'version': dep_version,
- 'state': 'absent'})
- else:
- self.dependencies_states.append(
- {
- 'name': dep_name,
- 'version': dep_version,
- 'state': 'present'})
- else:
- self.dependencies_states.append(
- {
- 'name': dep_name,
- 'version': dep_version,
- 'state': 'present'})
-
def _install_with_plugin_manager(self):
if not self.module.check_mode:
# Install the plugin (with dependencies)
@@ -614,10 +540,6 @@ class JenkinsPlugin(object):
plugin_content = plugin_fh.read()
checksum_old = hashlib.sha1(plugin_content).hexdigest()
- # Install dependencies
- if self.params['with_dependencies']:
- self._install_dependencies()
-
if self.params['version'] in [None, 'latest']:
# Take latest version
plugin_urls = self._get_latest_plugin_urls()
@@ -690,58 +612,6 @@ class JenkinsPlugin(object):
urls.append("{0}/{1}/{2}.hpi".format(base_url, update_segment, self.params['name']))
return urls
- def _get_latest_compatible_plugin_version(self, plugin_name=None):
- if not hasattr(self, 'jenkins_version'):
- self.module.params['force_basic_auth'] = True
- resp, info = fetch_url(self.module, self.url)
- raw_version = info.get("x-jenkins")
- self.jenkins_version = self.parse_version(raw_version)
- name = plugin_name or self.params['name']
- cache_path = "{}/ansible_jenkins_plugin_cache.json".format(self.params['jenkins_home'])
- plugin_version_urls = []
- for base_url in self.params['updates_url']:
- for update_json in self.params['plugin_versions_url_segment']:
- plugin_version_urls.append("{}/{}".format(base_url, update_json))
-
- try: # Check if file is saved localy
- if os.path.exists(cache_path):
- file_mtime = os.path.getmtime(cache_path)
- else:
- file_mtime = 0
-
- now = time.time()
- if now - file_mtime >= 86400:
- response = self._get_urls_data(plugin_version_urls, what="plugin-versions.json")
- plugin_data = json.loads(to_native(response.read()), object_pairs_hook=OrderedDict)
-
- # Save it to file for next time
- with open(cache_path, "w") as f:
- json.dump(plugin_data, f)
-
- with open(cache_path, "r") as f:
- plugin_data = json.load(f)
-
- except Exception as e:
- if os.path.exists(cache_path):
- os.remove(cache_path)
- self.module.fail_json(msg="Failed to parse plugin-versions.json", details=to_native(e))
-
- plugin_versions = plugin_data.get("plugins", {}).get(name)
- if not plugin_versions:
- self.module.fail_json(msg="Plugin '{}' not found.".format(name))
-
- sorted_versions = list(reversed(plugin_versions.items()))
-
- for idx, (version_title, version_info) in enumerate(sorted_versions):
- required_core = version_info.get("requiredCore", "0.0")
- if self.parse_version(required_core) <= self.jenkins_version:
- return 'latest' if idx == 0 else version_title
-
- self.module.warn(
- "No compatible version found for plugin '{}'. "
- "Installing latest version.".format(name))
- return 'latest'
-
def _get_versioned_plugin_urls(self):
urls = []
for base_url in self.params['updates_url']:
@@ -756,18 +626,6 @@ class JenkinsPlugin(object):
urls.append("{0}/{1}".format(base_url, update_json))
return urls
- def _get_versioned_dependencies(self):
- # Get dependencies for the specified plugin version
- plugin_data = self._download_updates()['dependencies']
-
- dependencies_info = {
- dep["name"]: self._get_latest_compatible_plugin_version(dep["name"])
- for dep in plugin_data
- if not dep.get("optional", False)
- }
-
- return dependencies_info
-
def _download_updates(self):
try:
updates_file, download_updates = download_updates_file(self.params['updates_expiration'])
@@ -921,10 +779,6 @@ class JenkinsPlugin(object):
msg_exception="%s has failed." % msg,
method="POST")
- @staticmethod
- def parse_version(version_str):
- return tuple(int(x) for x in version_str.split('.'))
-
def main():
# Module arguments
@@ -949,12 +803,8 @@ def main():
updates_expiration=dict(default=86400, type="int"),
updates_url=dict(type="list", elements="str", default=['https://updates.jenkins.io',
'http://mirrors.jenkins.io']),
- updates_url_username=dict(type="str"),
- updates_url_password=dict(type="str", no_log=True),
update_json_url_segment=dict(type="list", elements="str", default=['update-center.json',
'updates/update-center.json']),
- plugin_versions_url_segment=dict(type="list", elements="str", default=['plugin-versions.json',
- 'current/plugin-versions.json']),
latest_plugins_url_segments=dict(type="list", elements="str", default=['latest']),
versioned_plugins_url_segments=dict(type="list", elements="str", default=['download/plugins', 'plugins']),
url=dict(default='http://localhost:8080'),
@@ -969,6 +819,9 @@ def main():
supports_check_mode=True,
)
+ # Force basic authentication
+ module.params['force_basic_auth'] = True
+
# Convert timeout to float
try:
module.params['timeout'] = float(module.params['timeout'])
@@ -976,17 +829,11 @@ def main():
module.fail_json(
msg='Cannot convert %s to float.' % module.params['timeout'],
details=to_native(e))
- # Instantiate the JenkinsPlugin object
- jp = JenkinsPlugin(module)
# Set version to latest if state is latest
if module.params['state'] == 'latest':
module.params['state'] = 'present'
- module.params['version'] = jp._get_latest_compatible_plugin_version()
-
- # Set version to latest compatible version if version is latest
- if module.params['version'] == 'latest':
- module.params['version'] = jp._get_latest_compatible_plugin_version()
+ module.params['version'] = 'latest'
# Create some shortcuts
name = module.params['name']
@@ -995,6 +842,9 @@ def main():
# Initial change state of the task
changed = False
+ # Instantiate the JenkinsPlugin object
+ jp = JenkinsPlugin(module)
+
# Perform action depending on the requested state
if state == 'present':
changed = jp.install()
@@ -1010,7 +860,7 @@ def main():
changed = jp.disable()
# Print status of the change
- module.exit_json(changed=changed, plugin=name, state=state, dependencies=jp.dependencies_states if hasattr(jp, 'dependencies_states') else None)
+ module.exit_json(changed=changed, plugin=name, state=state)
if __name__ == '__main__':
diff --git a/plugins/modules/jenkins_script.py b/plugins/modules/jenkins_script.py
index 5a00581366..bd30f9daa7 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 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.
+ - 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.
type: bool
default: true
user:
@@ -142,12 +142,12 @@ def main():
module = AnsibleModule(
argument_spec=dict(
script=dict(required=True, type="str"),
- 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")
+ 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)
)
)
diff --git a/plugins/modules/jira.py b/plugins/modules/jira.py
index f99c252675..580177d64d 100644
--- a/plugins/modules/jira.py
+++ b/plugins/modules/jira.py
@@ -117,13 +117,14 @@ options:
suboptions:
type:
description:
- - Use O(comment_visibility.type) to specify which of the JIRA visibility restriction types is used.
+ - Use type to specify which of the JIRA visibility restriction types will be used.
type: str
required: true
choices: [group, role]
value:
description:
- - Specify value corresponding to the type of visibility restriction. For example name of the group or role.
+ - Use value to 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'
@@ -164,12 +165,12 @@ options:
type: str
required: false
description:
- - Set issue from which link is created.
+ - Set issue from which link will be created.
outwardissue:
type: str
required: false
description:
- - Set issue to which link is created.
+ - Set issue to which link will be created.
fields:
type: dict
required: false
@@ -191,7 +192,7 @@ options:
maxresults:
required: false
description:
- - Limit the result of O(operation=search). If no value is specified, the default JIRA limit is used.
+ - Limit the result of O(operation=search). If no value is specified, the default jira limit will be used.
- Used when O(operation=search) only, ignored otherwise.
type: int
version_added: '0.2.0'
@@ -225,12 +226,12 @@ options:
content:
type: str
description:
- - The Base64 encoded contents of the file to attach. If not specified, the contents of O(attachment.filename) is
- used instead.
+ - The Base64 encoded contents of the file to attach. If not specified, the contents of O(attachment.filename) will
+ be used instead.
mimetype:
type: str
description:
- - The MIME type to supply for the upload. If not specified, best-effort detection is performed.
+ - The MIME type to supply for the upload. If not specified, best-effort detection will be done.
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 ac542d04e8..4cc0fcf166 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 is created.
+ - Path to the config file. If the file does not exist it will be created.
type: path
required: true
kwriteconfig_path:
description:
- - Path to the kwriteconfig executable. If not specified, Ansible tries to discover it.
+ - Path to the kwriteconfig executable. If not specified, Ansible will try to discover it.
type: path
values:
description:
diff --git a/plugins/modules/keycloak_authentication.py b/plugins/modules/keycloak_authentication.py
index ae6d24958c..fddff7a324 100644
--- a/plugins/modules/keycloak_authentication.py
+++ b/plugins/modules/keycloak_authentication.py
@@ -367,8 +367,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_authentication_required_actions.py b/plugins/modules/keycloak_authentication_required_actions.py
index 69183ce605..147acf9a1e 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 whether new users have the required action assigned to them.
+ - Indicates, if any new user will have the required action assigned to it.
type: bool
enabled:
description:
@@ -149,7 +149,7 @@ end_state:
type: dict
defaultAction:
description:
- - Indicates whether new users have the required action assigned to them.
+ - Indicates, if any new user will have the required action assigned to it.
sample: false
type: bool
enabled:
@@ -237,8 +237,8 @@ def main():
module = AnsibleModule(
argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_authz_authorization_scope.py b/plugins/modules/keycloak_authz_authorization_scope.py
index 78d70c7ee6..6b2e3c30f6 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 is created (or updated if it exists already).
- - On V(absent), the authorization scope is removed if it exists.
+ - 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.
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'),
- icon_uri=dict(type='str'),
+ display_name=dict(type='str', required=False),
+ icon_uri=dict(type='str', required=False),
client_id=dict(type='str', required=True),
realm=dict(type='str', required=True)
)
@@ -153,8 +153,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=(
- [['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ [['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_authz_custom_policy.py b/plugins/modules/keycloak_authz_custom_policy.py
index 9607c0172c..5e1a2a6a2d 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 is created (or updated if it exists already).
- - On V(absent), the custom policy is removed if it exists.
+ - 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.
choices: ['present', 'absent']
default: 'present'
type: str
@@ -139,8 +139,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=(
- [['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ [['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_authz_permission.py b/plugins/modules/keycloak_authz_permission.py
index 74bc6cf956..683b5f8c18 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 is created (or updated if it exists already).
- - On V(absent), the authorization permission is removed if it exists.
+ - 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.
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'),
+ description=dict(type='str', required=False),
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=[]),
- scopes=dict(type='list', elements='str', default=[]),
- policies=dict(type='list', elements='str', default=[]),
+ 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),
client_id=dict(type='str', required=True),
realm=dict(type='str', required=True)
)
@@ -253,8 +253,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=(
- [['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ [['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_authz_permission_info.py b/plugins/modules/keycloak_authz_permission_info.py
index af7318315f..0271dfd4c4 100644
--- a/plugins/modules/keycloak_authz_permission_info.py
+++ b/plugins/modules/keycloak_authz_permission_info.py
@@ -134,8 +134,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=(
- [['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ [['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_client.py b/plugins/modules/keycloak_client.py
index 6c8a7b1383..e7a2de7c85 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 are created (or updated if it exists already).
- - On V(absent), the client are removed if it exists.
+ - 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.
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
- 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).
+ 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).
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 are 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 will be 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 is V(openid-connect) if O(protocol) is omitted.
+ - At creation only, default value will be 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 is silently dropped. This is C(clientTemplate)
+ - Client template to use for this client. If it does not exist this field will silently be 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 does not use it.
+ used; if specified anyway, Keycloak will simply 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 is used to authenticate the client.
+ - For OpenID-Connect clients, subject which will be used to authenticate the client.
type: str
version_added: 9.5.0
@@ -704,31 +704,19 @@ 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, \
@@ -953,8 +941,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=([['client_id', 'id'],
- ['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ ['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_client_rolemapping.py b/plugins/modules/keycloak_client_rolemapping.py
index 1700c99cc1..cb1cad8291 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 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 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.
- 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 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.
+ - 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.
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 reduces the number of API
- calls required.
+ - This parameter is not required for updating or deleting the rolemapping but providing it will reduce 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 reduces the number of API
- calls required.
+ - This parameter is not required for updating or deleting the rolemapping but providing it will reduce 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 reduces the number
- of API calls required.
+ - This parameter is not required for updating or deleting a role_representation but providing it will reduce 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,13 +217,7 @@ 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:
@@ -231,13 +225,7 @@ 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 (
@@ -280,8 +268,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_client_rolescope.py b/plugins/modules/keycloak_client_rolescope.py
index fcf57c2e4a..db11f37098 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 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 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:
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) are mapped if not exist yet.
- - On V(absent), all roles mapping in O(role_names) are removed if it exists.
+ - 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.
default: 'present'
type: str
choices:
diff --git a/plugins/modules/keycloak_clientscope.py b/plugins/modules/keycloak_clientscope.py
index ddb4e1b04b..4c452d4f2e 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 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 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.
- 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 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.
+ - 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.
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 reduces the number of API
- calls required.
+ - This parameter is not required for updating or deleting a client_scope but providing it will reduce the number of
+ API calls required.
description:
type: str
description:
@@ -263,31 +263,19 @@ 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, \
@@ -366,8 +354,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=([['id', 'name'],
- ['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ ['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_clientscope_type.py b/plugins/modules/keycloak_clientscope_type.py
index 85308f1a22..0e742f676c 100644
--- a/plugins/modules/keycloak_clientscope_type.py
+++ b/plugins/modules/keycloak_clientscope_type.py
@@ -99,43 +99,20 @@ 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
@@ -168,10 +145,10 @@ def keycloak_clientscope_type_module():
argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=([
- ['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret'],
+ ['token', 'auth_realm', 'auth_username', 'auth_password'],
['default_clientscopes', 'optional_clientscopes']
]),
- required_together=([['auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
mutually_exclusive=[
['token', 'auth_realm'],
diff --git a/plugins/modules/keycloak_clientsecret_info.py b/plugins/modules/keycloak_clientsecret_info.py
index 0ea48f6a33..da07d03248 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 reduces the number of API
- calls required.
+ - This parameter is not required for getting or generating a client secret but providing it will reduce 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 2bcaeb3705..bb449abc10 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 reduces the number of API
- calls required.
+ - This parameter is not required for getting or generating a client secret but providing it will reduce 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 ee357605f1..a6af59b5ac 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 is created (or updated if it exists already).
- - On V(absent), the client template is removed if it exists.
+ - 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.
choices: ['present', 'absent']
default: 'present'
type: str
@@ -238,7 +238,10 @@ 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).
@@ -308,8 +311,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=([['id', 'name'],
- ['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ ['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_component.py b/plugins/modules/keycloak_component.py
index 8b0c67b321..d5a3be2a8e 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 is created (or updated if it exists already).
- - On V(absent), the component is removed if it exists.
+ - 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.
choices: ['present', 'absent']
default: 'present'
type: str
@@ -155,8 +155,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_group.py b/plugins/modules/keycloak_group.py
index 7053b33a35..08d2555745 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 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 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.
- 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 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.
+ - 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.
default: 'present'
type: str
choices:
@@ -61,7 +61,8 @@ options:
type: str
description:
- The unique identifier for this group.
- - This parameter is not required for updating or deleting a group but providing it reduces the number of API calls required.
+ - This parameter is not required for updating or deleting a group but providing it will reduce the number of API calls
+ required.
attributes:
type: dict
description:
@@ -281,7 +282,8 @@ end_state:
returned: always
sample: []
subGroups:
- description: A list of groups that are children of this group. These groups have the same parameters as documented here.
+ description: A list of groups that are children of this group. These groups will have the same parameters as documented
+ here.
type: list
returned: always
clientRoles:
@@ -332,8 +334,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=([['id', 'name'],
- ['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ ['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_identity_provider.py b/plugins/modules/keycloak_identity_provider.py
index 7d69611089..2107e273a8 100644
--- a/plugins/modules/keycloak_identity_provider.py
+++ b/plugins/modules/keycloak_identity_provider.py
@@ -34,8 +34,9 @@ options:
state:
description:
- State of the identity provider.
- - 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.
+ - 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.
default: 'present'
type: str
choices:
@@ -147,14 +148,14 @@ options:
sync_mode:
description:
- - Default sync mode for all mappers. The sync mode determines when user data is synced using the mappers.
+ - Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers.
aliases:
- syncMode
type: str
issuer:
description:
- - The issuer identifier for the issuer of the response. If not provided, no validation is performed.
+ - The issuer identifier for the issuer of the response. If not provided, no validation will be performed.
type: str
authorizationUrl:
@@ -204,7 +205,7 @@ options:
useJwksUrl:
description:
- - If V(true), identity provider public keys are downloaded from given JWKS URL.
+ - If the switch is on, identity provider public keys will be downloaded from given JWKS URL.
type: bool
jwksUrl:
@@ -214,7 +215,7 @@ options:
entityId:
description:
- - The Entity ID that is used to uniquely identify this SAML Service Provider.
+ - The Entity ID that will be used to uniquely identify this SAML Service Provider.
type: str
singleSignOnServiceUrl:
@@ -242,15 +243,6 @@ options:
- Way to identify and track external users from the assertion.
type: str
- fromUrl:
- description:
- - IDP well-known OpenID Connect configuration URL.
- - Support only O(provider_id=oidc).
- - O(config.fromUrl) is mutually exclusive with O(config.userInfoUrl), O(config.authorizationUrl),
- O(config.tokenUrl), O(config.logoutUrl), O(config.issuer) and O(config.jwksUrl).
- type: str
- version_added: '11.2.0'
-
mappers:
description:
- A list of dicts defining mappers associated with this Identity Provider.
@@ -327,24 +319,6 @@ EXAMPLES = r"""
user.attribute: last_name
syncMode: INHERIT
-- name: Create OIDC identity provider, with well-known configuration URL
- community.general.keycloak_identity_provider:
- state: present
- auth_keycloak_url: https://auth.example.com/auth
- auth_realm: master
- auth_username: admin
- auth_password: admin
- realm: myrealm
- alias: oidc-idp
- display_name: OpenID Connect IdP
- enabled: true
- provider_id: oidc
- config:
- fromUrl: https://the-idp.example.com/auth/realms/idprealm/.well-known/openid-configuration
- clientAuthMethod: client_secret_post
- clientId: my-client
- clientSecret: secret
-
- name: Create SAML identity provider, authentication with credentials
community.general.keycloak_identity_provider:
state: present
@@ -488,29 +462,6 @@ def get_identity_provider_with_mappers(kc, alias, realm):
return idp
-def fetch_identity_provider_wellknown_config(kc, config):
- """
- Fetches OpenID Connect well-known configuration from a given URL and updates the config dict with discovered endpoints.
- Support for oidc providers only.
- :param kc: KeycloakAPI instance used to fetch endpoints and handle errors.
- :param config: Dictionary containing identity provider configuration, must include 'fromUrl' key to trigger fetch.
- :return: None. The config dict is updated in-place.
- """
- if config and 'fromUrl' in config :
- if 'providerId' in config and config['providerId'] != 'oidc':
- kc.module.fail_json(msg="Only 'oidc' provider_id is supported when using 'fromUrl'.")
- endpoints = ['userInfoUrl', 'authorizationUrl', 'tokenUrl', 'logoutUrl', 'issuer', 'jwksUrl']
- if any(k in config for k in endpoints):
- kc.module.fail_json(msg="Cannot specify both 'fromUrl' and 'userInfoUrl', 'authorizationUrl', 'tokenUrl', 'logoutUrl', 'issuer' or 'jwksUrl'.")
- openIdConfig = kc.fetch_idp_endpoints_import_config_url(
- fromUrl=config['fromUrl'],
- realm=kc.module.params.get('realm', 'master'))
- for k in endpoints:
- if k in openIdConfig:
- config[k] = openIdConfig[k]
- del config['fromUrl']
-
-
def main():
"""
Module execution
@@ -549,8 +500,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
@@ -567,9 +518,6 @@ def main():
realm = module.params.get('realm')
alias = module.params.get('alias')
state = module.params.get('state')
- config = module.params.get('config')
-
- fetch_identity_provider_wellknown_config(kc, config)
# Filter and map the parameters names that apply to the identity provider.
idp_params = [x for x in module.params
diff --git a/plugins/modules/keycloak_realm.py b/plugins/modules/keycloak_realm.py
index 632b04af7a..6d896d4141 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 is created (or updated if it exists already).
- - On V(absent), the realm is removed if it exists.
+ - 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.
choices: ['present', 'absent']
default: 'present'
type: str
@@ -510,48 +510,6 @@ options:
aliases:
- waitIncrementSeconds
type: int
- client_session_idle_timeout:
- description:
- - All Clients will inherit from this setting, time a session is allowed to be idle before it expires.
- aliases:
- - clientSessionIdleTimeout
- type: int
- version_added: 11.2.0
- client_session_max_lifespan:
- description:
- - All Clients will inherit from this setting, max time before a session is expired.
- aliases:
- - clientSessionMaxLifespan
- type: int
- version_added: 11.2.0
- client_offline_session_idle_timeout:
- description:
- - All Clients will inherit from this setting, time an offline session is allowed to be idle before it expires.
- aliases:
- - clientOfflineSessionIdleTimeout
- type: int
- version_added: 11.2.0
- client_offline_session_max_lifespan:
- description:
- - All Clients will inherit from this setting, max time before an offline session is expired regardless of activity.
- aliases:
- - clientOfflineSessionMaxLifespan
- type: int
- version_added: 11.2.0
- oauth2_device_code_lifespan:
- description:
- - Max time before the device code and user code are expired.
- aliases:
- - oauth2DeviceCodeLifespan
- type: int
- version_added: 11.2.0
- oauth2_device_polling_interval:
- description:
- - The minimum amount of time in seconds that the client should wait between polling requests to the token endpoint.
- aliases:
- - oauth2DevicePollingInterval
- type: int
- version_added: 11.2.0
extends_documentation_fragment:
- community.general.keycloak
@@ -595,31 +553,19 @@ 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, \
@@ -752,12 +698,6 @@ def main():
user_managed_access_allowed=dict(type='bool', aliases=['userManagedAccessAllowed']),
verify_email=dict(type='bool', aliases=['verifyEmail']),
wait_increment_seconds=dict(type='int', aliases=['waitIncrementSeconds']),
- client_session_idle_timeout=dict(type='int', aliases=['clientSessionIdleTimeout']),
- client_session_max_lifespan=dict(type='int', aliases=['clientSessionMaxLifespan']),
- client_offline_session_idle_timeout=dict(type='int', aliases=['clientOfflineSessionIdleTimeout']),
- client_offline_session_max_lifespan=dict(type='int', aliases=['clientOfflineSessionMaxLifespan']),
- oauth2_device_code_lifespan=dict(type='int', aliases=['oauth2DeviceCodeLifespan']),
- oauth2_device_polling_interval=dict(type='int', aliases=['oauth2DevicePollingInterval']),
)
argument_spec.update(meta_args)
@@ -765,8 +705,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=([['id', 'realm', 'enabled'],
- ['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ ['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_realm_info.py b/plugins/modules/keycloak_realm_info.py
index 501ca48c21..838b19513d 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 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 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.
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 dbb284ec4b..97e0af6da5 100644
--- a/plugins/modules/keycloak_realm_key.py
+++ b/plugins/modules/keycloak_realm_key.py
@@ -25,9 +25,11 @@ 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 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.
+ 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.
attributes:
check_mode:
support: full
@@ -40,8 +42,8 @@ options:
state:
description:
- State of the keycloak realm key.
- - 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.
+ - 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.
choices: ['present', 'absent']
default: 'present'
type: str
@@ -117,10 +119,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 O(config.certificate) is not explicitly provided it is dynamically created by Keycloak. Therefore comparing the current
+ - 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.
- 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 ensure updating if you know that the private key might have changed.
+ the module to always update if you know that the private key might have changed.
extends_documentation_fragment:
- community.general.keycloak
- community.general.keycloak.actiongroup_keycloak
@@ -206,21 +208,7 @@ 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, \
@@ -275,8 +263,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_realm_keys_metadata_info.py b/plugins/modules/keycloak_realm_keys_metadata_info.py
index 8340c8f2a5..9946bd88ba 100644
--- a/plugins/modules/keycloak_realm_keys_metadata_info.py
+++ b/plugins/modules/keycloak_realm_keys_metadata_info.py
@@ -104,8 +104,8 @@ def main():
module = AnsibleModule(
argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([["token", "auth_realm", "auth_username", "auth_password"]]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_realm_rolemapping.py b/plugins/modules/keycloak_realm_rolemapping.py
index 2b6b6a4eda..2937ed0ec0 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 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 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.
- 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,8 +39,9 @@ options:
state:
description:
- State of the realm_rolemapping.
- - 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.
+ - 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.
default: 'present'
type: str
choices:
@@ -85,8 +86,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 reduces the number of API
- calls required.
+ - This parameter is not required for updating or deleting the rolemapping but providing it will reduce the number of
+ API calls required.
roles:
description:
- Roles to be mapped to the group.
@@ -102,8 +103,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 reduces the number
- of API calls required.
+ - This parameter is not required for updating or deleting a role_representation but providing it will reduce the
+ number of API calls required.
extends_documentation_fragment:
- community.general.keycloak
- community.general.keycloak.actiongroup_keycloak
@@ -194,7 +195,7 @@ proposed:
description: Representation of proposed client role mapping.
returned: always
type: dict
- sample: {"clientId": "test"}
+ sample: {clientId: "test"}
existing:
description:
@@ -202,13 +203,7 @@ 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:
@@ -216,13 +211,7 @@ 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 (
@@ -263,8 +252,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_role.py b/plugins/modules/keycloak_role.py
index 5b706354ed..9444140f06 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 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 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:
check_mode:
support: full
@@ -37,8 +37,8 @@ options:
state:
description:
- State of the role.
- - 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.
+ - 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.
default: 'present'
type: str
choices:
@@ -195,7 +195,10 @@ 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.
@@ -244,7 +247,7 @@ def main():
composites_spec = dict(
name=dict(type='str', required=True),
- client_id=dict(type='str', aliases=['clientId']),
+ client_id=dict(type='str', aliases=['clientId'], required=False),
state=dict(type='str', default='present', choices=['present', 'absent'])
)
@@ -263,8 +266,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_user.py b/plugins/modules/keycloak_user.py
index 2b3c838483..71e793ae21 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.
- - Using the path 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.
+ This is possible since community.general 10.6.0.
type: list
elements: dict
default: []
@@ -332,6 +332,11 @@ 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
@@ -344,6 +349,10 @@ 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, \
@@ -401,8 +410,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_user_federation.py b/plugins/modules/keycloak_user_federation.py
index 3290ab8dd9..13428ddeb3 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 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.
+ - 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.
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 is searched by its O(name).
+ - The unique ID for this user federation. If left empty, the user federation will be 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 is automatically used if left blank.
+ - Unique ID for the parent of this user federation. Realm ID will be 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 always detects a change and make an update if a O(config.bindCredential)
+ redacted value returned by Keycloak the module will always detect 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) is only updated if there are other changes to the user federation that require
- an update.
+ The value of O(config.bindCredential) will only be 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 are imported into Keycloak DB and synced by the configured sync policies.
+ - If V(true), LDAP users will be 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 is synced back to LDAP on demand. V(UNSYNCED) means
- user data is imported, but not synced back to LDAP.
+ - 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.
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 are written to LDAP with all those object classes and existing LDAP user records
+ Newly created Keycloak users will be 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 is used by Keycloak to access LDAP server.
+ - DN of LDAP user which will be 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 disables connection pooling.
+ - Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling.
default: false
type: bool
@@ -258,11 +258,11 @@ options:
useTruststoreSpi:
description:
- - 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.
+ - 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.
- Note even if standalone.xml/domain.xml is not configured, the default Java cacerts or certificate specified by
- C(javax.net.ssl.trustStore) property is used.
+ C(javax.net.ssl.trustStore) property will be 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 is
- provisioned from this LDAP server.
+ - Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will
+ be 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 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).
+ 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).
type: str
version_added: 8.1.0
@@ -419,17 +419,17 @@ options:
evictionDay:
description:
- - Day of the week the entry is set to become invalid on.
+ - Day of the week the entry will become invalid on.
type: str
evictionHour:
description:
- - Hour of day the entry is set to become invalid on.
+ - Hour of day the entry will become invalid on.
type: str
evictionMinute:
description:
- - Minute of day the entry is set to become invalid on.
+ - Minute of day the entry will become invalid on.
type: str
maxLifespan:
@@ -461,12 +461,12 @@ options:
name:
description:
- - Name of the mapper. If no ID is given, the mapper is searched by name.
+ - Name of the mapper. If no ID is given, the mapper will be searched by name.
type: str
parentId:
description:
- - Unique ID for the parent of this mapper. ID of the user federation is automatically used if left blank.
+ - Unique ID for the parent of this mapper. ID of the user federation will automatically be used if left blank.
type: str
providerId:
@@ -841,8 +841,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
required_one_of=([['id', 'name'],
- ['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ ['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_user_rolemapping.py b/plugins/modules/keycloak_user_rolemapping.py
index 49d71e2ca9..c15bf09410 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 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 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.
- 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 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.
+ - 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.
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 reduces the number of API
- calls required.
+ - This parameter is not required for updating or deleting the rolemapping but providing it will reduce 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 reduces the number of API
- calls required.
+ - This parameter is not required for updating or deleting the rolemapping but providing it will reduce 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 reduces the number of API
- calls required.
+ - This parameter is not required for updating or deleting the rolemapping but providing it will reduce 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 reduces the number
- of API calls required.
+ - This parameter is not required for updating or deleting a role_representation but providing it will reduce 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,13 +198,7 @@ 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:
@@ -212,13 +206,7 @@ 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, \
@@ -254,9 +242,9 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret'],
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password'],
['uid', 'target_username', 'service_account_user_client_id']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keycloak_userprofile.py b/plugins/modules/keycloak_userprofile.py
index 9760a17ecf..f637271497 100644
--- a/plugins/modules/keycloak_userprofile.py
+++ b/plugins/modules/keycloak_userprofile.py
@@ -33,8 +33,9 @@ options:
state:
description:
- State of the User Profile provider.
- - 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.
+ - 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.
default: 'present'
type: str
choices:
@@ -170,7 +171,7 @@ options:
group:
description:
- - Specifies the User Profile group where this attribute is added.
+ - Specifies the User Profile group where this attribute will be added.
type: str
permissions:
@@ -405,6 +406,7 @@ 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, \
@@ -454,6 +456,7 @@ def main():
),
config=dict(
type='dict',
+ required=False,
options={
'kc_user_profile_config': dict(
type='list',
@@ -463,6 +466,7 @@ 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),
@@ -472,17 +476,17 @@ def main():
'length': dict(
type='dict',
options={
- 'min': dict(type='int'),
+ 'min': dict(type='int', required=False),
'max': dict(type='int', required=True)
}
),
- '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')
+ '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)
}
),
'annotations': dict(type='dict'),
@@ -509,15 +513,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']),
- 'annotations': dict(type='dict')
+ 'display_description': dict(type='str', aliases=['displayDescription'], required=False),
+ 'annotations': dict(type='dict', required=False)
}
),
'unmanaged_attribute_policy': dict(
type='str',
aliases=['unmanagedAttributePolicy'],
choices=['ENABLED', 'ADMIN_EDIT', 'ADMIN_VIEW'],
-
+ required=False
)
}
)
@@ -529,8 +533,8 @@ def main():
module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
- required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password', 'auth_client_id', 'auth_client_secret']]),
- required_together=([['auth_username', 'auth_password']]),
+ required_one_of=([['token', 'auth_realm', 'auth_username', 'auth_password']]),
+ required_together=([['auth_realm', 'auth_username', 'auth_password']]),
required_by={'refresh_token': 'auth_realm'},
)
diff --git a/plugins/modules/keyring.py b/plugins/modules/keyring.py
index eef59dd10a..3a8cbcae02 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", no_log=True, aliases=["password"]
+ type="str", required=False, no_log=True, aliases=["password"]
),
state=dict(
- type="str", default="present", choices=["absent", "present"]
+ type="str", required=False, default="present", choices=["absent", "present"]
),
)
diff --git a/plugins/modules/kibana_plugin.py b/plugins/modules/kibana_plugin.py
index b975e2dcea..09703b504c 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 the plugin is installed with in a previous version, it is B(not) updated unless O(force=true).
+ - If plugin exists with previous version, plugin will B(not) be updated unless O(force) is set to V(true).
type: str
force:
description:
- - Delete and re-install the plugin. It can be useful for plugins update.
+ - Delete and re-install the plugin. Can be useful for plugins update.
type: bool
default: false
allow_root:
@@ -109,6 +109,14 @@ 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
@@ -228,11 +236,11 @@ def main():
argument_spec=dict(
name=dict(required=True),
state=dict(default="present", choices=list(PACKAGE_STATE_MAP.keys())),
- url=dict(),
+ url=dict(default=None),
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(),
+ version=dict(default=None),
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 3a01944535..e021050c22 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 is used.
+ - If not set, the user running this module will be 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 is used instead, its value is used to name the default
- ticket cache.
+ - 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.
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) does not override the
+ - Specifying a ticket lifetime longer than the maximum ticket lifetime (configured by each site) will 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) results in an error.
+ - You cannot mix units; a value of V(3h30m) will result 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) results in an error.
+ - You cannot mix units; a value of V(3h30m) will result 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 it tries to use default client keytab path (C(-i) option).
+ - If O(keytab_path) is not specified will try 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 310e1af9b1..0f770f47a5 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 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(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(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 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.
+ - 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.
- 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 b19428d9f9..b0fab39233 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 is fetched and saved under
+ - An URL of the alternative overlays list that defines the overlay to install. This list will be 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 are not validated. This should only be set to V(false) when no other option exists.
+ - If V(false), SSL certificates will not be 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(default=True, type='bool'),
+ validate_certs=dict(required=False, default=True, type='bool'),
),
supports_check_mode=True
)
diff --git a/plugins/modules/ldap_attrs.py b/plugins/modules/ldap_attrs.py
index 592da93a63..c7ccd42154 100644
--- a/plugins/modules/ldap_attrs.py
+++ b/plugins/modules/ldap_attrs.py
@@ -43,9 +43,10 @@ options:
choices: [present, absent, exact]
default: present
description:
- - 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.
+ - 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.
attributes:
required: true
type: dict
@@ -296,7 +297,7 @@ def main():
module = AnsibleModule(
argument_spec=gen_specs(
attributes=dict(type='dict', required=True),
- ordered=dict(type='bool', default=False),
+ ordered=dict(type='bool', default=False, required=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 224027f666..ea6788de66 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 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.
+ 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.
- 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),
+ increment=dict(type='int', default=1, required=False),
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 47c4d8d64d..155e9859d5 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 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.
+ - 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.
type: list
elements: str
version_added: 7.0.0
@@ -91,16 +91,15 @@ 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 is returned.
+ - For every entry found, one dictionary will be 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) are 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) will be 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 1087cb426c..35fc810c65 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 O(name). If the annotation stream does not exist, it creates
- one automatically.
+ - Create an annotation event on the given annotation stream :name. If the annotation stream does not exist, it will be created
+ 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 creates one automatically.
+ - If the annotation stream does not exist, it will be created 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(),
+ name=dict(required=False),
title=dict(required=True),
- source=dict(),
- description=dict(),
- start_time=dict(type='int'),
- end_time=dict(type='int'),
+ 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'),
links=dict(type='list', elements='dict')
)
)
diff --git a/plugins/modules/linode.py b/plugins/modules/linode.py
index d2c5714d47..fcfcce4d0a 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 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.
+ 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.
aliases: [lid]
type: int
additional_disks:
@@ -103,7 +103,7 @@ options:
type: int
backupwindow:
description:
- - The time window in which backups are taken.
+ - The time window in which backups will be taken.
type: int
plan:
description:
diff --git a/plugins/modules/linode_v4.py b/plugins/modules/linode_v4.py
index 0095cb9002..b650f7f104 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 aims to replace the current Linode module which uses deprecated
+ - No Linode resizing is currently implemented. This module will, in time, 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 idempotency for the module and is therefore mandatory.
+ - The instance label. This label is used as the main determiner for idempotence 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 instance has private networking enabled and assigned a private IPv4 address.
+ - If V(true), the created Linode will have 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, it generates a new one. This generated password is available in
- the task success JSON.
+ - The password for the root user. If not specified, one will be generated. This generated password will be available
+ in the task success JSON.
type: str
authorized_keys:
description:
@@ -128,46 +128,45 @@ 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 a33c78be3c..9f9eb66481 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 returns each of them, so multiple entries for the same listen address and port are likely in results.
+ - This plugin will return 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 uses first found supported command on the system (in alphanumerical order).
+ - By default module will use 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('Unable to find any of the supported commands in PATH: {0}'.format(", ".join(sorted(commands_map))))
+ raise EnvironmentError(msg='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 018d9fc307..7f4a820257 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', default=False)
+ multivalues=dict(type='bool', required=False, default=False)
)
module = AnsibleModule(module_args)
diff --git a/plugins/modules/locale_gen.py b/plugins/modules/locale_gen.py
index 2e1932c204..23e9d33485 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 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
+ - 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
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 69e83f5e49..420f054fac 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(type='str'),
- logtype=dict(type='str', aliases=['type'])
+ name=dict(required=False, default=None, type='str'),
+ logtype=dict(required=False, default=None, type='str', aliases=['type'])
),
supports_check_mode=True
)
diff --git a/plugins/modules/logstash_plugin.py b/plugins/modules/logstash_plugin.py
index e6758165f3..ba7bdc2cc5 100644
--- a/plugins/modules/logstash_plugin.py
+++ b/plugins/modules/logstash_plugin.py
@@ -49,7 +49,7 @@ options:
version:
type: str
description:
- - Specify version of the plugin to install. If the plugin exists with a previous version, it is B(not) updated.
+ - Specify plugin Version of the plugin to install. If plugin exists with previous version, it will NOT be updated.
"""
EXAMPLES = r"""
@@ -104,17 +104,17 @@ def install_plugin(module, plugin_bin, plugin_name, version, proxy_host, proxy_p
cmd_args = [plugin_bin, PACKAGE_STATE_MAP["present"], plugin_name]
if version:
- cmd_args.extend(["--version", version])
+ cmd_args.append("--version %s" % version)
if proxy_host and proxy_port:
- cmd_args.extend(["-DproxyHost=%s" % proxy_host, "-DproxyPort=%s" % proxy_port])
+ cmd_args.append("-DproxyHost=%s -DproxyPort=%s" % (proxy_host, proxy_port))
cmd = " ".join(cmd_args)
if module.check_mode:
rc, out, err = 0, "check mode", ""
else:
- rc, out, err = module.run_command(cmd_args)
+ rc, out, err = module.run_command(cmd)
if rc != 0:
reason = parse_error(out)
@@ -131,7 +131,7 @@ def remove_plugin(module, plugin_bin, plugin_name):
if module.check_mode:
rc, out, err = 0, "check mode", ""
else:
- rc, out, err = module.run_command(cmd_args)
+ rc, out, err = module.run_command(cmd)
if rc != 0:
reason = parse_error(out)
diff --git a/plugins/modules/lvg.py b/plugins/modules/lvg.py
index 42d4c9182e..b16cdd87a2 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 runs C(pvcreate) if needed.
+ - The module will take care of running pvcreate if needed.
- O(remove_extra_pvs) controls whether or not unspecified physical devices are removed from the volume group.
type: list
elements: str
@@ -123,9 +123,7 @@ EXAMPLES = r"""
- name: Create or resize a volume group on top of /dev/sdb1 and /dev/sdc5.
community.general.lvg:
vg: vg.services
- pvs:
- - /dev/sdb1
- - /dev/sdc5
+ pvs: /dev/sdb1,/dev/sdc5
- name: Remove a volume group with name vg.services
community.general.lvg:
@@ -148,13 +146,6 @@ EXAMPLES = r"""
state: active
vg: vg.services
-- name: Add new PVs to volume group without removing existing ones
- community.general.lvg:
- vg: vg.services
- pvs: /dev/sdb1,/dev/sdc1
- remove_extra_pvs: false
- state: present
-
- name: Reset a volume group UUID
community.general.lvg:
state: inactive
@@ -165,9 +156,7 @@ EXAMPLES = r"""
community.general.lvg:
state: inactive
vg: vg.services
- pvs:
- - /dev/sdb1
- - /dev/sdc5
+ pvs: /dev/sdb1,/dev/sdc5
reset_vg_uuid: true
reset_pv_uuid: true
"""
diff --git a/plugins/modules/lvm_pv_move_data.py b/plugins/modules/lvm_pv_move_data.py
deleted file mode 100644
index 7ebdfad02b..0000000000
--- a/plugins/modules/lvm_pv_move_data.py
+++ /dev/null
@@ -1,220 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2025, Klention Mali
-# 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
-from __future__ import absolute_import, division, print_function
-__metaclass__ = type
-
-
-DOCUMENTATION = r"""
-module: lvm_pv_move_data
-short_description: Move data between LVM Physical Volumes (PVs)
-version_added: "11.2.0"
-description:
- - Moves data from one LVM Physical Volume (PV) to another.
-author:
- - Klention Mali (@klention)
-options:
- source:
- description:
- - Path to the source block device to move data from.
- - Must be an existing PV.
- type: path
- required: true
- destination:
- description:
- - Path to the destination block device to move data to.
- - Must be an existing PV with enough free space.
- type: path
- required: true
- auto_answer:
- description:
- - Answer yes to all prompts automatically.
- type: bool
- default: false
- atomic:
- description:
- - Makes the C(pvmove) operation atomic, ensuring that all affected LVs are moved to the destination PV,
- or none are if the operation is aborted.
- type: bool
- default: true
- autobackup:
- description:
- - Automatically backup metadata before changes (strongly advised!).
- type: bool
- default: true
-requirements:
- - LVM2 utilities
- - Both O(source) and O(destination) devices must exist, and the PVs must be in the same volume group.
- - The O(destination) PV must have enough free space to accommodate the O(source) PV's allocated extents.
- - Verbosity is automatically controlled by Ansible's verbosity level (using multiple C(-v) flags).
-"""
-
-EXAMPLES = r"""
-- name: Moving data from /dev/sdb to /dev/sdc
- community.general.lvm_pv_move_data:
- source: /dev/sdb
- destination: /dev/sdc
-"""
-
-RETURN = r"""
-actions:
- description: List of actions performed during module execution.
- returned: success
- type: list
- elements: str
- sample: [
- "moved data from /dev/sdb to /dev/sdc",
- "no allocated extents to move",
- "would move data from /dev/sdb to /dev/sdc"
- ]
-"""
-
-
-import os
-from ansible.module_utils.basic import AnsibleModule
-from ansible_collections.community.general.plugins.module_utils.cmd_runner import CmdRunner, cmd_runner_fmt
-
-
-def main():
- module = AnsibleModule(
- argument_spec=dict(
- source=dict(type='path', required=True),
- destination=dict(type='path', required=True),
- auto_answer=dict(type='bool', default=False),
- atomic=dict(type='bool', default=True),
- autobackup=dict(type='bool', default=True),
- ),
- supports_check_mode=True,
- )
-
- pvs_runner = CmdRunner(
- module,
- command="pvs",
- arg_formats=dict(
- noheadings=cmd_runner_fmt.as_fixed("--noheadings"),
- readonly=cmd_runner_fmt.as_fixed("--readonly"),
- vg_name=cmd_runner_fmt.as_fixed("-o", "vg_name"),
- pv_pe_alloc_count=cmd_runner_fmt.as_fixed("-o", "pv_pe_alloc_count"),
- pv_pe_count=cmd_runner_fmt.as_fixed("-o", "pv_pe_count"),
- device=cmd_runner_fmt.as_list(),
- )
- )
-
- source = module.params['source']
- destination = module.params['destination']
- changed = False
- actions = []
- result = {'changed': False}
-
- # Validate device existence
- if not os.path.exists(source):
- module.fail_json(msg="Source device %s not found" % source)
- if not os.path.exists(destination):
- module.fail_json(msg="Destination device %s not found" % destination)
- if source == destination:
- module.fail_json(msg="Source and destination devices must be different")
-
- def run_pvs_command(arguments, device):
- with pvs_runner(arguments) as ctx:
- rc, out, err = ctx.run(device=device)
- if rc != 0:
- module.fail_json(
- msg="Command failed: %s" % err,
- stdout=out,
- stderr=err,
- rc=rc,
- cmd=ctx.cmd,
- arguments=arguments,
- device=device,
- )
- return out.strip()
-
- def is_pv(device):
- with pvs_runner("noheadings readonly device", check_rc=False) as ctx:
- rc, out, err = ctx.run(device=device)
- return rc == 0
-
- if not is_pv(source):
- module.fail_json(msg="Source device %s is not a PV" % source)
- if not is_pv(destination):
- module.fail_json(msg="Destination device %s is not a PV" % destination)
-
- vg_src = run_pvs_command("noheadings vg_name device", source)
- vg_dest = run_pvs_command("noheadings vg_name device", destination)
- if vg_src != vg_dest:
- module.fail_json(
- msg="Source and destination must be in the same VG. Source VG: '%s', Destination VG: '%s'." % (vg_src, vg_dest)
- )
-
- def get_allocated_pe(device):
- try:
- return int(run_pvs_command("noheadings pv_pe_alloc_count device", device))
- except ValueError:
- module.fail_json(msg="Invalid allocated PE count for device %s" % device)
-
- allocated = get_allocated_pe(source)
- if allocated == 0:
- actions.append('no allocated extents to move')
- else:
- # Check destination has enough free space
- def get_total_pe(device):
- try:
- return int(run_pvs_command("noheadings pv_pe_count device", device))
- except ValueError:
- module.fail_json(msg="Invalid total PE count for device %s" % device)
-
- def get_free_pe(device):
- return get_total_pe(device) - get_allocated_pe(device)
-
- free_pe_dest = get_free_pe(destination)
- if free_pe_dest < allocated:
- module.fail_json(
- msg="Destination device %s has only %d free physical extents, but source device %s has %d allocated extents. Not enough space." %
- (destination, free_pe_dest, source, allocated)
- )
-
- if module.check_mode:
- changed = True
- actions.append('would move data from %s to %s' % (source, destination))
- else:
- pvmove_runner = CmdRunner(
- module,
- command="pvmove",
- arg_formats=dict(
- auto_answer=cmd_runner_fmt.as_bool("-y"),
- atomic=cmd_runner_fmt.as_bool("--atomic"),
- autobackup=cmd_runner_fmt.as_fixed("--autobackup", "y" if module.params['autobackup'] else "n"),
- verbosity=cmd_runner_fmt.as_func(lambda v: ['-' + 'v' * v] if v > 0 else []),
- source=cmd_runner_fmt.as_list(),
- destination=cmd_runner_fmt.as_list(),
- )
- )
-
- verbosity = module._verbosity
- with pvmove_runner("auto_answer atomic autobackup verbosity source destination") as ctx:
- rc, out, err = ctx.run(
- verbosity=verbosity,
- source=source,
- destination=destination
- )
- result['stdout'] = out
- result['stderr'] = err
-
- changed = True
- actions.append('moved data from %s to %s' % (source, destination))
-
- result['changed'] = changed
- result['actions'] = actions
- if actions:
- result['msg'] = "PV data move: %s" % ", ".join(actions)
- else:
- result['msg'] = "No data to move from %s" % source
-
- module.exit_json(**result)
-
-
-if __name__ == '__main__':
- main()
diff --git a/plugins/modules/lxc_container.py b/plugins/modules/lxc_container.py
index cbd643efdb..8d5face301 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 creates a tarball of the running container.
+ - This will create 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 attempts to create it.
+ - If the path does not exist the archive method will attempt 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 is stopped while the clone operation is happening and upon completion of the clone the original
- container state is restored.
+ - 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.
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 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.
+ 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.
- 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 87b0e2e125..8ece67470b 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(),
- chassis=dict()
+ uuid=dict(default=None),
+ chassis=dict(default=None)
)
diff --git a/plugins/modules/lxca_nodes.py b/plugins/modules/lxca_nodes.py
index 91d3337b27..f133671114 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(), chassis=dict()
+ uuid=dict(default=None), chassis=dict(default=None)
)
diff --git a/plugins/modules/lxd_container.py b/plugins/modules/lxd_container.py
index 4abec5acaa..f347df7492 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. 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).
+ - 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).
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 wait until the task reports a success status when performing container operations.
+ - If set to V(true), the tasks will wait till 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 simply returns as "unchanged".
+ with a name that already existed in the users namespace the module will simply return 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,12 +393,7 @@ 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 2525889968..efdf50ea90 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 is renamed to this name.
+ - If this parameter is specified a profile will be 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 simply returns as "unchanged".
+ the module will simply return as "unchanged".
"""
EXAMPLES = r"""
diff --git a/plugins/modules/lxd_project.py b/plugins/modules/lxd_project.py
index 20804f8b38..98068175aa 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 is renamed to this name.
+ - If this parameter is specified a project will be 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 is made.
+ is the same after merged, no change will be 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 simply returns as "unchanged".
+ the module will simply return as "unchanged".
"""
EXAMPLES = r"""
diff --git a/plugins/modules/macports.py b/plugins/modules/macports.py
index c328e45904..3f02eeb411 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"], type='str')
+ variant=dict(aliases=["variants"], default=None, type='str')
)
)
diff --git a/plugins/modules/mail.py b/plugins/modules/mail.py
index 7c8bdb69b3..03192e5bf8 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 have their content-type set to C(application/octet-stream).
+ - Attached files will 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 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.
+ - 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.
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 is ignored.
+ - Note that this is only available on Python 3+. On Python 2, this value will be 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'),
+ ehlohost=dict(type='str', default=None),
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 57ee525db5..a574560f7f 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 is used. For example, V(FOO:) produces V(FOO), not V(FOO=).
+ - If the value is empty, only the key will be used. For example, V(FOO:) will produce V(FOO), not V(FOO=).
type: dict
target:
description:
diff --git a/plugins/modules/manageiq_alerts.py b/plugins/modules/manageiq_alerts.py
index d1b3fdba69..87fafcf10b 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(default='present',
+ state=dict(required=False, 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 68170ea733..9781ebfc98 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 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).
+ - 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).
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(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'),
+ 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'),
)
# 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 247e2dc94c..4256f89d07 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(type='str',
+ state=dict(required=False, 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 2db694f11c..c7c20418b2 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(type='int'),
- resource_name=dict(type='str'),
+ resource_id=dict(required=False, type='int'),
+ resource_name=dict(required=False, 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 334555c29a..98677c7beb 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 is refreshed.
+ - V(refresh) - provider will be 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 manages the provider.
+ description: The ManageIQ zone name that will manage the provider.
default: 'default'
provider_region:
type: str
@@ -63,7 +63,7 @@ options:
description: Google Compute Engine Project ID.
azure_tenant_id:
type: str
- description: Tenant ID. Defaults to V(null).
+ description: Tenant ID. defaults to None.
aliases: [keystone_v3_domain_id]
tenant_mapping_enabled:
type: bool
@@ -190,25 +190,25 @@ options:
description: The provider's API port.
userid:
type: str
- description: Provider's API endpoint authentication userid. Defaults to V(null).
+ description: Provider's API endpoint authentication userid. defaults to None.
password:
type: str
- description: Provider's API endpoint authentication password. Defaults to V(null).
+ description: Provider's API endpoint authentication password. defaults to None.
auth_key:
type: str
- description: Provider's API endpoint authentication bearer token. Defaults to V(null).
+ description: Provider's API endpoint authentication bearer token. defaults to None.
validate_certs:
type: bool
- description: Whether SSL certificates should be verified for HTTPS requests (deprecated). Defaults to V(true).
+ description: Whether SSL certificates should be verified for HTTPS requests (deprecated). defaults to True.
default: true
aliases: [verify_ssl]
security_protocol:
type: str
choices: ['ssl-with-validation', 'ssl-with-validation-custom-ca', 'ssl-without-validation', 'non-ssl']
- description: How SSL certificates should be used for HTTPS requests. Defaults to V(null).
+ description: How SSL certificates should be used for HTTPS requests. defaults to None.
certificate_authority:
type: str
- description: The CA bundle string with custom certificates. Defaults to V(null).
+ description: The CA bundle string with custom certificates. defaults to None.
path:
type: str
description:
diff --git a/plugins/modules/manageiq_tags.py b/plugins/modules/manageiq_tags.py
index efd135393d..6833b70355 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 are be controlled.
+ - The name of the resource at which tags will 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 are controlled.
+ - The ID of the resource at which tags will be 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(type='str',
+ state=dict(required=False, 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 2a742f69c5..c5b6fcd451 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 are controlled.
+ - The name of the resource at which tags will 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 are controlled.
+ - The ID of the resource at which tags will be 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 fda97509ce..deb2fc452d 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(type='int'),
- parent=dict(type='str'),
+ parent_id=dict(required=False, type='int'),
+ parent=dict(required=False, 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 475086c823..a4d5c21dfc 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) updates passwords unconditionally.
- - V(on_create) only sets the password for a newly created user.
+ - V(always) will update passwords unconditionally.
+ - V(on_create) will only set the password for a newly created user.
"""
EXAMPLES = r"""
diff --git a/plugins/modules/matrix.py b/plugins/modules/matrix.py
index fb6c797bff..186c57dd31 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', no_log=True),
- user_id=dict(type='str'),
- password=dict(type='str', no_log=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),
)
result = dict(
diff --git a/plugins/modules/mattermost.py b/plugins/modules/mattermost.py
index 4cb32c1f3b..ed046e6481 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 gives you a full URL. O(api_key) is the last part. U(http://mattermost.example.com/hooks/API_KEY).
+ Webhook. This will give you 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 are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be 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'),
+ channel=dict(type='str', default=None),
username=dict(type='str', default='Ansible'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
- priority=dict(type='str', choices=['important', 'urgent']),
+ priority=dict(type='str', default=None, 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 af3be70f39..fb294797f0 100644
--- a/plugins/modules/maven_artifact.py
+++ b/plugins/modules/maven_artifact.py
@@ -16,7 +16,8 @@ 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 resolve the latest available version if one is not available.
+ - Can retrieve snapshots or release versions of the artifact and will resolve the latest available version if one is not
+ available.
author: "Chris Schmidt (@chrisisbeef)"
requirements:
- lxml
@@ -84,8 +85,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 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 will fail. This
option forces the sending of the Basic authentication header upon initial request.
default: false
type: bool
@@ -109,7 +110,7 @@ options:
default: 10
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be set to V(false) when no other option exists.
+ - If V(false), SSL certificates will not be validated. This should only be set to V(false) when no other option exists.
type: bool
default: true
client_cert:
@@ -134,13 +135,13 @@ options:
verify_checksum:
type: str
description:
- - 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.
+ - 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.
- V(always) combines V(download) and V(change).
required: false
default: 'download'
@@ -148,9 +149,9 @@ options:
checksum_alg:
type: str
description:
- - 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.
+ - 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.
default: 'md5'
choices: ['md5', 'sha1']
version_added: 3.2.0
@@ -621,25 +622,25 @@ def main():
argument_spec=dict(
group_id=dict(required=True),
artifact_id=dict(required=True),
- version=dict(),
- version_by_spec=dict(),
+ version=dict(default=None),
+ version_by_spec=dict(default=None),
classifier=dict(default=''),
extension=dict(default='jar'),
repository_url=dict(default='https://repo1.maven.org/maven2'),
- username=dict(aliases=['aws_secret_key']),
- password=dict(no_log=True, aliases=['aws_secret_access_key']),
+ username=dict(default=None, aliases=['aws_secret_key']),
+ password=dict(default=None, 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(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'),
+ 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),
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 cb8ebe9191..7781abbf76 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:
- - 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.
+ - 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.
"""
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(default=False, type='bool')
+ poll=dict(required=False, 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 59d395a161..df7ecb712f 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 553328909d..2c80503bec 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(default=0, choices=[0, 300, 600, 900, 1800, 3600, 7200, 10800, 21600, 43200, 86400], type='int'),
- force=dict(default=False, type='bool')
+ 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')
),
supports_check_mode=True
)
diff --git a/plugins/modules/memset_zone_record.py b/plugins/modules/memset_zone_record.py
index fd87c35fa0..7c16ee31eb 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(default='present', choices=['present', 'absent'], type='str'),
+ state=dict(required=False, 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(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')
+ 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')
),
supports_check_mode=True
)
diff --git a/plugins/modules/mksysb.py b/plugins/modules/mksysb.py
index 7e188ec844..3b6d322f23 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 backup is stored.
+ - Storage path where the mksysb will stored.
required: true
use_snapshot:
description:
@@ -96,6 +96,10 @@ 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 d5bb6fddbb..cff77e9558 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 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.
+ - 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.
- 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 a10967264c..65b6c606e9 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 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.
+ - 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.
default: 300
type: int
author:
diff --git a/plugins/modules/mqtt.py b/plugins/modules/mqtt.py
index b35a257da7..9c610d02c7 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, it uses a value C(hostname + pid).
+ - If not specified, a value C(hostname + pid) will be used.
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 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
+ 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
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 set it is 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 not None it will be 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 set it is 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 not None it will be 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(),
+ client_id=dict(default=None),
qos=dict(default="0", choices=["0", "1", "2"]),
retain=dict(default=False, type='bool'),
- 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'])
+ 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'])
),
supports_check_mode=True
)
diff --git a/plugins/modules/mssql_db.py b/plugins/modules/mssql_db.py
index 8a15bfe699..e1fc222e71 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(),
+ target=dict(default=None),
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 37bd0853d0..872b2ee13d 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 is not be executed in check mode.
+ - The script will 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 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).
+ - 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).
- V(dict) requires named columns to be returned by each query otherwise an error is thrown.
choices: ["dict", "default"]
default: 'default'
@@ -170,33 +170,12 @@ 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 are not included in the output.
+ - If a query returns no results, the results of this and all the following queries will not be included in the output.
- Use the V(GO) keyword in O(script) to separate queries.
type: list
elements: list
@@ -218,33 +197,12 @@ 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 are not included in the output.
+ - If a query returns no results, the results of this and all the following queries will not be included in the output.
Use V(GO) keyword to separate queries.
type: list
elements: list
@@ -282,7 +240,7 @@ def clean_output(o):
def run_module():
module_args = dict(
- name=dict(aliases=['db'], default=''),
+ name=dict(required=False, 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 6426975546..b3fb65bc63 100644
--- a/plugins/modules/nagios.py
+++ b/plugins/modules/nagios.py
@@ -22,6 +22,11 @@ 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:
@@ -83,17 +88,8 @@ 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).'
- - 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).
- - Before community.general 11.2.0, one could specify multiple services at once by separating them with commas, for example
- O(services=httpd,nfs,puppet). Since community.general 11.2.0, there can be spaces around the commas, and an actual
- list can be provided.
aliases: ["service"]
- type: list
- elements: str
+ type: str
servicegroup:
description:
- The Servicegroup we want to set downtimes/alerts for.
@@ -101,8 +97,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 O(action=command).
+ - 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).
type: str
author: "Tim Bielawa (@tbielawa)"
@@ -226,9 +222,7 @@ EXAMPLES = r"""
- name: Disable httpd and nfs alerts
community.general.nagios:
action: disable_alerts
- service:
- - httpd
- - nfs
+ service: httpd,nfs
host: '{{ inventory_hostname }}'
- name: Disable HOST alerts
@@ -329,7 +323,7 @@ def main():
start=dict(type='str'),
minutes=dict(type='int', default=30),
cmdfile=dict(type='str', default=which_cmdfile()),
- services=dict(type='list', elements='str', aliases=['service']),
+ services=dict(type='str', aliases=['service']),
command=dict(type='str'),
),
required_if=[
@@ -387,12 +381,10 @@ class Nagios(object):
self.cmdfile = kwargs['cmdfile']
self.command = kwargs['command']
- if kwargs['services'] is None :
+ if (kwargs['services'] is None) or (kwargs['services'] == 'host') or (kwargs['services'] == 'all'):
self.services = kwargs['services']
- elif len(kwargs['services']) == 1 and kwargs['services'][0] in ['host', 'all']:
- self.services = kwargs['services'][0]
else:
- self.services = kwargs['services']
+ self.services = kwargs['services'].split(',')
self.command_results = []
@@ -1250,9 +1242,14 @@ class Nagios(object):
elif self.action == 'unsilence_nagios':
self.unsilence_nagios()
- else: # self.action == 'command'
+ elif self.action == 'command':
self.nagios_cmd(self.command)
+ # wtf?
+ else:
+ self.module.fail_json(msg="unknown action specified: '%s'" %
+ self.action)
+
self.module.exit_json(nagios_commands=self.command_results,
changed=True)
diff --git a/plugins/modules/netcup_dns.py b/plugins/modules/netcup_dns.py
index c48e0a2fb2..900eb01e0d 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 deletes all other records with the same record name and type.
+ - This will delete 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(default='@', aliases=['name']),
+ record=dict(required=False, 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(type='int'),
- solo=dict(type='bool', default=False),
- state=dict(choices=['present', 'absent'], default='present'),
- timeout=dict(type='int', default=5),
+ 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),
),
supports_check_mode=True
diff --git a/plugins/modules/newrelic_deployment.py b/plugins/modules/newrelic_deployment.py
index af58402a44..b9ce8af586 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 are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be 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(),
- application_id=dict(),
- changelog=dict(),
- description=dict(),
+ app_name=dict(required=False),
+ application_id=dict(required=False),
+ changelog=dict(required=False),
+ description=dict(required=False),
revision=dict(required=True),
- user=dict(),
+ user=dict(required=False),
validate_certs=dict(default=True, type='bool'),
- app_name_exact_match=dict(type='bool', default=False),
+ app_name_exact_match=dict(required=False, 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 2d3a62b053..ef6502532d 100644
--- a/plugins/modules/nexmo.py
+++ b/plugins/modules/nexmo.py
@@ -45,12 +45,12 @@ options:
msg:
type: str
description:
- - Message text to send. Messages longer than 160 characters are split into multiple messages.
+ - Message to text to send. Messages longer than 160 characters will be split into multiple messages.
required: true
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be 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 07b17bcf9e..a02a8fcffd 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 is attached to a created O(etherstub).
+ - Specifies that the nic tag will be 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 uses the C(-f) parameter and delete the nic tag regardless of existing VMs.
+ - When O(state=absent) this switch will use 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 was created and attached to an etherstub.
+ description: Specifies if the nic tag will create and attach to an etherstub.
returned: always
type: bool
sample: false
@@ -93,7 +93,7 @@ mtu:
type: int
sample: 1500
force:
- description: Shows if C(-f) was used during the deletion of a nic tag.
+ description: Shows if -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 0d35e5aacc..0af9f64ee9 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: 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).'
+ - '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.'
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) 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
+ - 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
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 are preferred.
+ - The priority of the connection profile for autoconnect. If set, connection profiles with higher priority will be 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 is only applicable to this interface name.
+ - The connection will only be applicable to this interface name.
- A special value of V(*) can be used for interface-independent connections.
- - The O(ifname) argument is mandatory for all connection types except bond, team, bridge, vlan and vpn.
+ - The 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
- are sent once per second. Otherwise they are sent every 30 seconds.
+ will be sent once per second. Otherwise they will be 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 is optionally enabled.
+ - When set to V(0) and no global default is set, FILS will be 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 is optionally enabled.
+ - When set to V(0) and no global default is set, PMF will be 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 it is 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 will be 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 automatically determines whether it is
- feasible to start WPS enrollment from the Access Point capabilities.
+ - 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.
- 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 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 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 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 only joins (or creates for Ad-Hoc networks) a Wi-Fi network on the specified channel.
+ - The device will only join (or create 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 is always unset to create a unicast MAC address.
+ - Note that the least significant bit of the first MAC address will always be 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) 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.
+ - 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.
- 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) creates a fully scrambled MAC address, randomly locally or globally administered.
+ 00:00:00:00:00:00 02:00:00:00:00:00) will create 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 only applies to the Wi-Fi device whose permanent MAC address matches.
+ - If specified, this connection will only apply 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 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 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 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) default to values
- that match the network the modem registers 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) will default to values
+ that match the network the modem will register 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 only applies to the specified device.
+ - If given, the connection will only apply to the specified device.
type: str
home-only:
description:
- - When V(true), only connections to the home network are allowed.
- - Connections to roaming networks are not made.
+ - When V(true), only connections to the home network will be allowed.
+ - Connections to roaming networks will not be 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 attempts to force the device to register only on the specified
+ - If the Network ID is specified, NetworkManager will attempt 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 are asked to retrieve it V(2) B(NOT_SAVED): This secret should not be saved, but should
+ it is required agents will be 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 applies to any device also allowed by O(gsm.device-id) which contains a SIM card matching
+ - If given, the connection will apply 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 applies to any device also allowed by O(gsm.device-id) and O(gsm.sim-id) which contains
+ - If given, the connection will apply 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) is placed to a dedicated routing-table and two
- policy routing rules are added.
+ - 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.
- 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 is chosen randomly when the interface
+ description: The WireGuard connection listen-port. If not specified, the port will be 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 automatically adds routes in the routing tables according to C(ipv4.route-table)
+ - If V(true) (the default), NetworkManager will automatically add 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 is not added automatically.
+ setting is enabled, the peer route for this peer will not be 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 has permission to use the connection.
+ description: User that will have 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 are asked to retrieve it; V(2) B(NOT_SAVED): This secret should not be saved, but should
+ it is required agents will be 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,8 +1115,7 @@ 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:
@@ -1840,7 +1839,10 @@ class Nmcli(object):
self.module.fail_json(msg="'master' option is required when 'slave_type' is specified.")
def execute_command(self, cmd, use_unsafe_shell=False, data=None):
- cmd = [to_text(item) for item in cmd]
+ if isinstance(cmd, list):
+ cmd = [to_text(item) for item in cmd]
+ else:
+ cmd = to_text(cmd)
return self.module.run_command(cmd, use_unsafe_shell=use_unsafe_shell, data=data)
def execute_edit_commands(self, commands, arguments):
@@ -2267,7 +2269,7 @@ class Nmcli(object):
@staticmethod
def settings_type(setting):
- if setting in {'bridge.stp',
+ if setting in ('bridge.stp',
'bridge-port.hairpin-mode',
'connection.autoconnect',
'ipv4.never-default',
@@ -2277,9 +2279,9 @@ class Nmcli(object):
'ipv6.ignore-auto-dns',
'ipv6.ignore-auto-routes',
'802-11-wireless.hidden',
- 'team.runner-fast-rate'}:
+ 'team.runner-fast-rate'):
return bool
- elif setting in {'ipv4.addresses',
+ elif setting in ('ipv4.addresses',
'ipv6.addresses',
'ipv4.dns',
'ipv4.dns-search',
@@ -2296,10 +2298,10 @@ class Nmcli(object):
'802-11-wireless-security.proto',
'802-11-wireless-security.psk-flags',
'802-11-wireless-security.wep-key-flags',
- '802-11-wireless.mac-address-blacklist'}:
+ '802-11-wireless.mac-address-blacklist'):
return list
- elif setting in {'connection.autoconnect-priority',
- 'connection.autoconnect-retries'}:
+ elif setting in ('connection.autoconnect-priority',
+ 'connection.autoconnect-retries'):
return int
return str
@@ -2482,7 +2484,7 @@ class Nmcli(object):
for line in out.splitlines():
prefix = '%s.' % setting
- if line.startswith(prefix):
+ if (line.startswith(prefix)):
pair = line.split(':', 1)
property = pair[0].strip().replace(prefix, '')
properties.append(property)
@@ -2766,11 +2768,7 @@ def main():
mutually_exclusive=[['never_default4', 'gw4'],
['routes4_extended', 'routes4'],
['routes6_extended', 'routes6']],
- required_if=[
- ("type", "wifi", ["ssid"]),
- ("type", "team-slave", ["master", "ifname"]),
- ("slave_type", "team", ["master", "ifname"]),
- ],
+ required_if=[("type", "wifi", [("ssid")])],
supports_check_mode=True,
)
module.run_command_environ_update = dict(LANG='C', LC_ALL='C', LC_MESSAGES='C', LC_CTYPE='C')
@@ -2780,12 +2778,21 @@ def main():
(rc, out, err) = (None, '', '')
result = {'conn_name': nmcli.conn_name, 'state': nmcli.state}
+ # check for issues
+ if nmcli.conn_name is None:
+ nmcli.module.fail_json(msg="Please specify a name for the connection")
# team checks
if nmcli.type == "team":
if nmcli.runner_hwaddr_policy and not nmcli.runner == "activebackup":
nmcli.module.fail_json(msg="Runner-hwaddr-policy is only allowed for runner activebackup")
if nmcli.runner_fast_rate is not None and nmcli.runner != "lacp":
nmcli.module.fail_json(msg="runner-fast-rate is only allowed for runner lacp")
+ # team-slave checks
+ if nmcli.type == 'team-slave' or nmcli.slave_type == 'team':
+ if nmcli.master is None:
+ nmcli.module.fail_json(msg="Please specify a name for the master when type is %s" % nmcli.type)
+ if nmcli.ifname is None:
+ nmcli.module.fail_json(msg="Please specify an interface name for the connection when type is %s" % nmcli.type)
if nmcli.type == 'wifi':
unsupported_properties = {}
if nmcli.wifi:
@@ -2808,7 +2815,7 @@ def main():
(rc, out, err) = nmcli.down_connection()
(rc, out, err) = nmcli.remove_connection()
if rc != 0:
- module.fail_json(name=('Error removing connection named %s' % nmcli.conn_name), msg=err, rc=rc)
+ module.fail_json(name=('No Connection named %s exists' % nmcli.conn_name), msg=err, rc=rc)
elif nmcli.state == 'present':
if nmcli.connection_exists():
@@ -2845,7 +2852,7 @@ def main():
(rc, out, err) = nmcli.reload_connection()
(rc, out, err) = nmcli.up_connection()
if rc != 0:
- module.fail_json(name=('Error bringing up connection named %s' % nmcli.conn_name), msg=err, rc=rc)
+ module.fail_json(name=('No Connection named %s exists' % nmcli.conn_name), msg=err, rc=rc)
elif nmcli.state == 'down':
if nmcli.connection_exists():
@@ -2855,7 +2862,7 @@ def main():
(rc, out, err) = nmcli.reload_connection()
(rc, out, err) = nmcli.down_connection()
if rc != 0:
- module.fail_json(name=('Error bringing down connection named %s' % nmcli.conn_name), msg=err, rc=rc)
+ module.fail_json(name=('No Connection named %s exists' % nmcli.conn_name), msg=err, rc=rc)
except NmcliModuleError as e:
module.fail_json(name=nmcli.conn_name, msg=str(e))
diff --git a/plugins/modules/nosh.py b/plugins/modules/nosh.py
index 7cd4f4ad66..da9db091bc 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 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.
+ - 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.
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). It takes effect prior to O(state=reset).
+ O(preset). Will take 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. It takes effect prior to O(state=reset).
+ Only has an effect if set to true. Will take effect prior to O(state=reset).
user:
required: false
default: false
diff --git a/plugins/modules/nsupdate.py b/plugins/modules/nsupdate.py
index 4049996ca3..9f665626b2 100644
--- a/plugins/modules/nsupdate.py
+++ b/plugins/modules/nsupdate.py
@@ -63,8 +63,8 @@ options:
type: str
zone:
description:
- - DNS record is modified on this O(zone).
- - When omitted, DNS is queried to attempt finding the correct zone.
+ - DNS record will be modified on this O(zone).
+ - When omitted DNS will be queried to attempt finding the correct zone.
type: str
record:
description:
@@ -144,6 +144,10 @@ EXAMPLES = r"""
"""
RETURN = r"""
+changed:
+ description: If module has modified record.
+ returned: success
+ type: str
record:
description: DNS record.
returned: success
@@ -472,18 +476,18 @@ def main():
module = AnsibleModule(
argument_spec=dict(
- state=dict(default='present', choices=['present', 'absent'], type='str'),
+ state=dict(required=False, default='present', choices=['present', 'absent'], type='str'),
server=dict(required=True, 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'),
+ 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'),
record=dict(required=True, 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')
+ 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')
),
supports_check_mode=True
)
diff --git a/plugins/modules/oci_vcn.py b/plugins/modules/oci_vcn.py
index 56a637ac2c..e44d2b0f20 100644
--- a/plugins/modules/oci_vcn.py
+++ b/plugins/modules/oci_vcn.py
@@ -162,12 +162,17 @@ def main():
)
module_args.update(
dict(
- 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"]),
+ 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"]),
)
)
diff --git a/plugins/modules/odbc.py b/plugins/modules/odbc.py
index 41b5df4f08..54c923cf1e 100644
--- a/plugins/modules/odbc.py
+++ b/plugins/modules/odbc.py
@@ -66,7 +66,6 @@ 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 6b8384a7ca..8ff82fecc1 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 you run the same task twice then you create two Connector Cards.
+ - This module is not idempotent, therefore if the same task is run twice there will be two Connector Cards created.
extends_documentation_fragment:
- community.general.attributes
attributes:
@@ -35,7 +35,7 @@ options:
type: str
description:
- A string used for summarizing card content.
- - This is the message subject.
+ - This will be shown as 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 is rendered below the sender information and optional title,
+ - This will be 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 is used to power the action links found at the bottom of the card.
+ - This array of objects will 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 7c43da3058..8246172c90 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 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(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(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 d9a21f86b7..e5ffb68b4f 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 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'.
+ - 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'.
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 f940444cad..7e5def76fb 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 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.
+ - 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.
- 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'),
- name=dict(type='str'),
+ ids=dict(type='list', aliases=['id'], elements='str', required=False),
+ name=dict(type='str', required=False),
)
mutually_exclusive = [
['ids', 'name'],
diff --git a/plugins/modules/one_service.py b/plugins/modules/one_service.py
index 88ccd29d74..8244e0ca5a 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) ensures that there is only one service instance running with a name set with O(service_name)
+ - Setting O(unique=true) will make sure 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 is set as the owner of the service.
+ - ID of the user which will be set as the owner of the service.
type: int
group_id:
description:
- - ID of the group which is set as the group of the service.
+ - ID of the group which will be 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 is used when instantiating a new service.
+ - Dictionary of key/value custom attributes which will be 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 091c4c55a7..71db2c1d2c 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 is created with the given O(name).
+ - 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).
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 is created,
- otherwise it is 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 will be created,
+ otherwise it will be 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'),
- name=dict(type='str'),
+ id=dict(type='int', required=False),
+ name=dict(type='str', required=False),
state=dict(type='str', choices=['present', 'absent'], default='present'),
- template=dict(type='str'),
- filter=dict(type='str', choices=['user_primary_group', 'user', 'all', 'user_groups'], default='user'),
+ template=dict(type='str', required=False),
+ filter=dict(type='str', required=False, 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 3d23efa036..2139da5d4c 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 tries to authenticate with ONE auth
+ variable is used. if both O(api_username) or O(api_password) are not set, then it will try 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 are able to SSH on that machine only that boot process have started
+ be in running state it does not mean that you will be 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 automatically adds indexes to the names of VMs.
+ - C(#) character(s) can be appended to the C(NAME) and the module will automatically add 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 matches the base name without the index part.
+ - When used with O(count_attributes) and O(exact_count) the module will match 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 are terminated first.
+ - B(NOTE:) Instances with the least IDs will be terminated first.
type: int
mode:
description:
@@ -135,11 +135,11 @@ options:
type: str
owner_id:
description:
- - ID of the user which is set as the owner of the instance.
+ - ID of the user which will be set as the owner of the instance.
type: int
group_id:
description:
- - ID of the group which is set as the group of the instance.
+ - ID of the group which will be set as the group of the instance.
type: int
memory:
description:
@@ -157,7 +157,7 @@ options:
type: float
vcpu:
description:
- - Number of CPUs (cores) the new VM uses.
+ - Number of CPUs (cores) new VM will have.
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 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.
+ - 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.
type: dict
persistent:
description:
@@ -195,16 +195,14 @@ 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 substitutions are made);
+ - B(CONTEXT:) (Any value, except V(ETH*). Variable substitution will be 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
@@ -455,35 +453,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
@@ -514,21 +512,20 @@ 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
@@ -540,27 +537,23 @@ 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
@@ -569,35 +562,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
@@ -628,21 +621,20 @@ 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
@@ -654,27 +646,12 @@ 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 b77530e756..b8cb0c6559 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 is created with the given O(name).
+ - If not set then a new network will be 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, then is created,
- otherwise it is 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 will be created,
+ otherwise it will be 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'),
- name=dict(type='str'),
+ id=dict(type='int', required=False),
+ name=dict(type='str', required=False),
state=dict(type='str', choices=['present', 'absent'], default='present'),
- template=dict(type='str'),
+ template=dict(type='str', required=False),
)
mutually_exclusive = [
diff --git a/plugins/modules/oneandone_firewall_policy.py b/plugins/modules/oneandone_firewall_policy.py
index eca9a8ed70..d0b5319aad 100644
--- a/plugins/modules/oneandone_firewall_policy.py
+++ b/plugins/modules/oneandone_firewall_policy.py
@@ -46,14 +46,14 @@ options:
type: str
rules:
description:
- - 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).
+ - 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).
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:
- - 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.
+ - 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.
type: list
elements: dict
required: false
default: []
remove_rules:
description:
- - List of rule IDs that are removed from an existing firewall policy. Used in combination with update state.
+ - A list of rule IDs that will be 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
"""
@@ -288,7 +288,7 @@ def _add_firewall_rules(module, oneandone_conn, firewall_id, rules):
if module.check_mode:
firewall_policy_id = get_firewall_policy(oneandone_conn, firewall_id)
- if firewall_rules and firewall_policy_id:
+ if (firewall_rules and firewall_policy_id):
return True
return False
diff --git a/plugins/modules/oneandone_load_balancer.py b/plugins/modules/oneandone_load_balancer.py
index 5a8ce7b8f0..2d19a98adf 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 is created.
+ - ID or country code of the datacenter where the load balancer will be 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 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.
+ - 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.
type: list
elements: dict
default: []
@@ -111,15 +111,15 @@ options:
default: []
add_rules:
description:
- - 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).
+ - 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).
type: list
elements: dict
required: false
default: []
remove_rules:
description:
- - A list of rule IDs that are removed from an existing load balancer. Used in combination with O(state=update).
+ - A list of rule IDs that will be 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
"""
@@ -344,7 +344,7 @@ def _add_load_balancer_rules(module, oneandone_conn, load_balancer_id, rules):
if module.check_mode:
lb_id = get_load_balancer(oneandone_conn, load_balancer_id)
- if load_balancer_rules and lb_id:
+ if (load_balancer_rules and lb_id):
return True
return False
diff --git a/plugins/modules/oneandone_monitoring_policy.py b/plugins/modules/oneandone_monitoring_policy.py
index 2d8693156c..a0aa17611e 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 are to be monitored.
+ - Array of ports that will be monitoring.
type: list
elements: dict
default: []
@@ -114,7 +114,7 @@ options:
required: true
processes:
description:
- - Array of processes that are to be monitored.
+ - Array of processes that will be monitoring.
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
"""
@@ -537,7 +537,7 @@ def _add_processes(module, oneandone_conn, monitoring_policy_id, processes):
if module.check_mode:
mp_id = get_monitoring_policy(oneandone_conn, monitoring_policy_id)
- if monitoring_policy_processes and mp_id:
+ if (monitoring_policy_processes and mp_id):
return True
return False
diff --git a/plugins/modules/oneandone_private_network.py b/plugins/modules/oneandone_private_network.py
index f39c464f96..1a56fe345c 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 is created.
+ - The identifier of the datacenter where the private network will be 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 b6b49c5b4a..c30c0bbdc7 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 is created (only for unassigned IPs).
+ - ID of the datacenter where the IP will be 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 7683ea1480..ae9198c7d0 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 5689d28fe6..00fa847c07 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, it searches all sections if not
+ - The name of a section within this item containing the specified field (optional, will search all sections if not
specified).
vault:
type: str
@@ -62,7 +62,8 @@ options:
auto_login:
type: dict
description:
- - A dictionary containing authentication details. If this is set, the module attempts to sign in to 1Password automatically.
+ - A dictionary containing authentication details. If this is set, M(community.general.onepassword_info) will attempt
+ 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.
@@ -71,7 +72,7 @@ options:
type: str
description:
- 1Password subdomain name (V(subdomain).1password.com).
- - If this is not specified, the most recent subdomain is used.
+ - If this is not specified, the most recent subdomain will be used.
username:
type: str
description:
@@ -208,7 +209,7 @@ class OnePasswordInfo(object):
def _parse_field(self, data_json, item_id, field_name, section_title=None):
data = json.loads(data_json)
- if 'documentAttributes' in data['details']:
+ if ('documentAttributes' in data['details']):
# This is actually a document, let's fetch the document data instead!
document = self._run(["get", "document", data['overview']['title']])
return {'document': document[1].strip()}
@@ -218,7 +219,7 @@ class OnePasswordInfo(object):
# Some types of 1Password items have a 'password' field directly alongside the 'fields' attribute,
# not inside it, so we need to check there first.
- if field_name in data['details']:
+ if (field_name in data['details']):
return {field_name: data['details'][field_name]}
# Otherwise we continue looking inside the 'fields' attribute for the specified field.
@@ -374,7 +375,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 7ba3abb6e4..823fea3b2c 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) 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.
+ - 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.
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 3063e80757..312a5dc893 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) ensures data properties are compliant with OneView.
- - V(absent) removes the resource from OneView, if it exists.
+ - V(present) will ensure data properties are compliant with OneView.
+ - V(absent) will remove 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 9de22ef55c..af20869dc3 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(type='str'),
- params=dict(type='dict')
+ name=dict(required=False, type='str'),
+ params=dict(required=False, type='dict')
)
super(FcNetworkInfoModule, self).__init__(
diff --git a/plugins/modules/oneview_fcoe_network.py b/plugins/modules/oneview_fcoe_network.py
index 37fbff9ef4..15128bd372 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) ensures data properties are compliant with OneView.
- - V(absent) removes the resource from OneView, if it exists.
+ - V(present) will ensure data properties are compliant with OneView.
+ - V(absent) will remove 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 2683fc5468..a45224cb31 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) removes the resource from OneView, if it exists.
- - V(present) ensures data properties are compliant with OneView.
+ - V(absent) will remove the resource from OneView, if it exists.
+ - V(present) will ensure 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 ee5d3560a7..a7fae51f21 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) ensures data properties are compliant with OneView.
- - V(absent) removes the resource from OneView, if it exists.
+ - V(present) will ensure data properties are compliant with OneView.
+ - V(absent) will remove 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 a06dae1926..d676d1a0e7 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 5b1628adad..c76c71f2e5 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 80360833a2..defb0a072b 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, it logins to all available.
+ - When O(target) is omitted, will login 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) always returns a changed state.
+ O(auto_node_startup=true) will always return 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, it rescans all sessions.
+ - When O(target) is omitted, will rescan 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 e81fce3018..b9a541cc44 100644
--- a/plugins/modules/openbsd_pkg.py
+++ b/plugins/modules/openbsd_pkg.py
@@ -36,9 +36,9 @@ options:
elements: str
state:
description:
- - 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.
+ - 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.
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 is processed individually, it is much more efficient to pass the list directly
+ - When used with a C(loop:) each package will be 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 be4edac125..cd55a39d51 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: Update the backend configuration of OpenDJ using the dsconfig set-backend-prop command
+short_description: Will update the backend configuration of OpenDJ using the dsconfig set-backend-prop command
description:
- - 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.
+ - 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.
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"),
- password=dict(no_log=True),
- passwordfile=dict(type="path"),
+ username=dict(default="cn=Directory Manager", required=False),
+ password=dict(required=False, no_log=True),
+ passwordfile=dict(required=False, 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 c8c98f2d39..bf5ce2b76a 100644
--- a/plugins/modules/openwrt_init.py
+++ b/plugins/modules/openwrt_init.py
@@ -32,19 +32,20 @@ options:
state:
type: str
description:
- - V(started)/V(stopped) are idempotent actions that do not run commands unless necessary.
- - V(restarted) always bounces the service.
- - V(reloaded) always reloads.
+ - 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.
choices: ['started', 'stopped', 'restarted', 'reloaded']
enabled:
description:
- - Whether the service should start on boot. B(At least one) of O(state) and O(enabled) are required.
+ - Whether the service should start on boot. B(At least one of state and enabled are required).
type: bool
pattern:
type: str
description:
- - 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.
+ - 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.
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 56ff6e1ac1..75bd03b4ad 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) it queries the given parameter specified by O(key). Returns V(null) is nothing found or misspelled.
+ - If set to V(list) will query the given parameter specified by O(key). Returns V(null) is nothing found or mis-spelled.
type: str
choices: [absent, list, present]
default: present
@@ -191,7 +191,7 @@ class OSXDefaults(object):
@staticmethod
def is_int(value):
as_str = str(value)
- if as_str.startswith("-"):
+ if (as_str.startswith("-")):
return as_str[1:].isdigit()
else:
return as_str.isdigit()
diff --git a/plugins/modules/ovh_ip_failover.py b/plugins/modules/ovh_ip_failover.py
index 425ee614f5..0734e985f7 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 V(true), the module waits for the IP address to be moved. If false, exit without waiting. The C(taskId) is returned
+ - If true, the module will wait for the IP address to be moved. If false, exit without waiting. The taskId will be returned
in module output.
wait_task_completion:
required: false
default: 0
description:
- - 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
+ - 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
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_ip_loadbalancing_backend.py b/plugins/modules/ovh_ip_loadbalancing_backend.py
index 8bf294a1d5..cefb9231bd 100644
--- a/plugins/modules/ovh_ip_loadbalancing_backend.py
+++ b/plugins/modules/ovh_ip_loadbalancing_backend.py
@@ -244,7 +244,7 @@ def main():
'parameters. Error returned by OVH api was : {0}'
.format(apiError))
- if backendProperties['weight'] != weight:
+ if (backendProperties['weight'] != weight):
# Change weight
try:
client.post(
@@ -263,7 +263,7 @@ def main():
.format(apiError))
moduleChanged = True
- if backendProperties['probe'] != probe:
+ if (backendProperties['probe'] != probe):
# Change probe
backendProperties['probe'] = probe
try:
diff --git a/plugins/modules/ovh_monthly_billing.py b/plugins/modules/ovh_monthly_billing.py
index 912b697517..438bf7db7f 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(),
- application_key=dict(no_log=True),
- application_secret=dict(no_log=True),
- consumer_key=dict(no_log=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),
),
supports_check_mode=True
)
diff --git a/plugins/modules/pacemaker_cluster.py b/plugins/modules/pacemaker_cluster.py
index ffed13f9c5..caf18abb27 100644
--- a/plugins/modules/pacemaker_cluster.py
+++ b/plugins/modules/pacemaker_cluster.py
@@ -13,7 +13,6 @@ module: pacemaker_cluster
short_description: Manage pacemaker clusters
author:
- Mathieu Bultel (@matbu)
- - Dexter Le (@munchtoast)
description:
- This module can manage a pacemaker cluster and nodes from Ansible using the pacemaker CLI.
extends_documentation_fragment:
@@ -27,20 +26,18 @@ options:
state:
description:
- Indicate desired state of the cluster.
- - The value V(maintenance) has been added in community.general 11.1.0.
- choices: [cleanup, offline, online, restart, maintenance]
+ choices: [cleanup, offline, online, restart]
type: str
- name:
+ node:
description:
- Specify which node of the cluster you want to manage. V(null) == the cluster status itself, V(all) == check the status
of all nodes.
type: str
- aliases: ['node']
timeout:
description:
- - Timeout period (in seconds) for polling the cluster operation.
- type: int
+ - Timeout when the module should considered that the action has failed.
default: 300
+ type: int
force:
description:
- Force the change of the cluster state.
@@ -66,104 +63,132 @@ out:
returned: always
"""
-from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper
-from ansible_collections.community.general.plugins.module_utils.pacemaker import pacemaker_runner, get_pacemaker_maintenance_mode
+import time
+
+from ansible.module_utils.basic import AnsibleModule
-class PacemakerCluster(StateModuleHelper):
- module = dict(
- argument_spec=dict(
- state=dict(type='str', choices=[
- 'cleanup', 'offline', 'online', 'restart', 'maintenance']),
- name=dict(type='str', aliases=['node']),
- timeout=dict(type='int', default=300),
- force=dict(type='bool', default=True)
- ),
- supports_check_mode=True,
- )
- default_state = ""
+_PCS_CLUSTER_DOWN = "Error: cluster is not currently running on this node"
- def __init_module__(self):
- self.runner = pacemaker_runner(self.module)
- self.vars.set('apply_all', True if not self.module.params['name'] else False)
- get_args = dict([('cli_action', 'cluster'), ('state', 'status'), ('name', None), ('apply_all', self.vars.apply_all)])
- if self.module.params['state'] == "maintenance":
- get_args['cli_action'] = "property"
- get_args['state'] = "config"
- get_args['name'] = "maintenance-mode"
- elif self.module.params['state'] == "cleanup":
- get_args['cli_action'] = "resource"
- get_args['name'] = self.module.params['name']
- self.vars.set('get_args', get_args)
- self.vars.set('previous_value', self._get()['out'])
- self.vars.set('value', self.vars.previous_value, change=True, diff=True)
+def get_cluster_status(module):
+ cmd = ["pcs", "cluster", "status"]
+ rc, out, err = module.run_command(cmd)
+ if out in _PCS_CLUSTER_DOWN:
+ return 'offline'
+ else:
+ return 'online'
- if not self.module.params['state']:
- self.module.deprecate(
- 'Parameter "state" values not set is being deprecated. Make sure to provide a value for "state"',
- version='12.0.0',
- collection_name='community.general'
- )
- def __quit_module__(self):
- self.vars.set('value', self._get()['out'])
+def get_node_status(module, node='all'):
+ node_l = ["all"] if node == "all" else []
+ cmd = ["pcs", "cluster", "pcsd-status"] + node_l
+ rc, out, err = module.run_command(cmd)
+ if rc == 1:
+ module.fail_json(msg="Command execution failed.\nCommand: `%s`\nError: %s" % (cmd, err))
+ status = []
+ for o in out.splitlines():
+ status.append(o.split(':'))
+ return status
- def _process_command_output(self, fail_on_err, ignore_err_msg=""):
- def process(rc, out, err):
- if fail_on_err and rc != 0 and err and ignore_err_msg not in err:
- self.do_raise('pcs failed with error (rc={0}): {1}'.format(rc, err))
- out = out.rstrip()
- return None if out == "" else out
- return process
- def _get(self):
- with self.runner('cli_action state name') as ctx:
- result = ctx.run(cli_action=self.vars.get_args['cli_action'], state=self.vars.get_args['state'], name=self.vars.get_args['name'])
- return dict([('rc', result[0]),
- ('out', result[1] if result[1] != "" else None),
- ('err', result[2])])
+def clean_cluster(module, timeout):
+ cmd = ["pcs", "resource", "cleanup"]
+ rc, out, err = module.run_command(cmd)
+ if rc == 1:
+ module.fail_json(msg="Command execution failed.\nCommand: `%s`\nError: %s" % (cmd, err))
- def state_cleanup(self):
- with self.runner('cli_action state name', output_process=self._process_command_output(True, "Fail"), check_mode_skip=True) as ctx:
- ctx.run(cli_action='resource')
- def state_offline(self):
- with self.runner('cli_action state name apply_all wait',
- output_process=self._process_command_output(True, "not currently running"),
- check_mode_skip=True) as ctx:
- ctx.run(cli_action='cluster', apply_all=self.vars.apply_all, wait=self.module.params['timeout'])
+def set_cluster(module, state, timeout, force):
+ if state == 'online':
+ cmd = ["pcs", "cluster", "start"]
+ if state == 'offline':
+ cmd = ["pcs", "cluster", "stop"]
+ if force:
+ cmd = cmd + ["--force"]
+ rc, out, err = module.run_command(cmd)
+ if rc == 1:
+ module.fail_json(msg="Command execution failed.\nCommand: `%s`\nError: %s" % (cmd, err))
- def state_online(self):
- with self.runner('cli_action state name apply_all wait',
- output_process=self._process_command_output(True, "currently running"),
- check_mode_skip=True) as ctx:
- ctx.run(cli_action='cluster', apply_all=self.vars.apply_all, wait=self.module.params['timeout'])
-
- if get_pacemaker_maintenance_mode(self.runner):
- with self.runner('cli_action state name', output_process=self._process_command_output(True, "Fail"), check_mode_skip=True) as ctx:
- ctx.run(cli_action='property', state='maintenance', name='maintenance-mode=false')
-
- def state_maintenance(self):
- with self.runner('cli_action state name',
- output_process=self._process_command_output(True, "Fail"),
- check_mode_skip=True) as ctx:
- ctx.run(cli_action='property', name='maintenance-mode=true')
-
- def state_restart(self):
- with self.runner('cli_action state name apply_all wait',
- output_process=self._process_command_output(True, "not currently running"),
- check_mode_skip=True) as ctx:
- ctx.run(cli_action='cluster', state='offline', apply_all=self.vars.apply_all, wait=self.module.params['timeout'])
- ctx.run(cli_action='cluster', state='online', apply_all=self.vars.apply_all, wait=self.module.params['timeout'])
-
- if get_pacemaker_maintenance_mode(self.runner):
- with self.runner('cli_action state name', output_process=self._process_command_output(True, "Fail"), check_mode_skip=True) as ctx:
- ctx.run(cli_action='property', state='maintenance', name='maintenance-mode=false')
+ t = time.time()
+ ready = False
+ while time.time() < t + timeout:
+ cluster_state = get_cluster_status(module)
+ if cluster_state == state:
+ ready = True
+ break
+ if not ready:
+ module.fail_json(msg="Failed to set the state `%s` on the cluster\n" % (state))
def main():
- PacemakerCluster.execute()
+ argument_spec = dict(
+ state=dict(type='str', choices=['online', 'offline', 'restart', 'cleanup']),
+ node=dict(type='str'),
+ timeout=dict(type='int', default=300),
+ force=dict(type='bool', default=True),
+ )
+
+ module = AnsibleModule(
+ argument_spec,
+ supports_check_mode=True,
+ )
+ changed = False
+ state = module.params['state']
+ node = module.params['node']
+ force = module.params['force']
+ timeout = module.params['timeout']
+
+ if state in ['online', 'offline']:
+ # Get cluster status
+ if node is None:
+ cluster_state = get_cluster_status(module)
+ if cluster_state == state:
+ module.exit_json(changed=changed, out=cluster_state)
+ else:
+ if module.check_mode:
+ module.exit_json(changed=True)
+ set_cluster(module, state, timeout, force)
+ cluster_state = get_cluster_status(module)
+ if cluster_state == state:
+ module.exit_json(changed=True, out=cluster_state)
+ else:
+ module.fail_json(msg="Fail to bring the cluster %s" % state)
+ else:
+ cluster_state = get_node_status(module, node)
+ # Check cluster state
+ for node_state in cluster_state:
+ if node_state[1].strip().lower() == state:
+ module.exit_json(changed=changed, out=cluster_state)
+ else:
+ if module.check_mode:
+ module.exit_json(changed=True)
+ # Set cluster status if needed
+ set_cluster(module, state, timeout, force)
+ cluster_state = get_node_status(module, node)
+ module.exit_json(changed=True, out=cluster_state)
+
+ elif state == 'restart':
+ if module.check_mode:
+ module.exit_json(changed=True)
+ set_cluster(module, 'offline', timeout, force)
+ cluster_state = get_cluster_status(module)
+ if cluster_state == 'offline':
+ set_cluster(module, 'online', timeout, force)
+ cluster_state = get_cluster_status(module)
+ if cluster_state == 'online':
+ module.exit_json(changed=True, out=cluster_state)
+ else:
+ module.fail_json(msg="Failed during the restart of the cluster, the cluster cannot be started")
+ else:
+ module.fail_json(msg="Failed during the restart of the cluster, the cluster cannot be stopped")
+
+ elif state == 'cleanup':
+ if module.check_mode:
+ module.exit_json(changed=True)
+ clean_cluster(module, timeout)
+ cluster_state = get_cluster_status(module)
+ module.exit_json(changed=True, out=cluster_state)
if __name__ == '__main__':
diff --git a/plugins/modules/pacemaker_info.py b/plugins/modules/pacemaker_info.py
deleted file mode 100644
index ff5781be45..0000000000
--- a/plugins/modules/pacemaker_info.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2025, Dexter Le
-# 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
-
-from __future__ import absolute_import, division, print_function
-__metaclass__ = type
-
-DOCUMENTATION = r"""
-module: pacemaker_info
-short_description: Gather information about Pacemaker cluster
-author:
- - Dexter Le (@munchtoast)
-version_added: 11.2.0
-description:
- - Gather information about a Pacemaker cluster.
-extends_documentation_fragment:
- - community.general.attributes
- - community.general.attributes.info_module
-"""
-
-EXAMPLES = r"""
-- name: Gather Pacemaker cluster info
- community.general.pacemaker_info:
- register: result
-
-- name: Debug cluster info
- ansible.builtin.debug:
- msg: "{{ result }}"
-"""
-
-RETURN = r"""
-version:
- description: Pacemaker CLI version
- returned: always
- type: str
-cluster_info:
- description: Cluster information such as the name, UUID, and nodes.
- returned: always
- type: dict
-resource_info:
- description: All resources available on the cluster and their status.
- returned: success
- type: dict
-stonith_info:
- description: All STONITH information on the cluster.
- returned: success
- type: dict
-constraint_info:
- description: All cluster resource constraints on the cluster.
- returned: success
- type: dict
-property_info:
- description: All properties present on the cluster.
- returned: success
- type: dict
-"""
-
-import json
-
-from ansible_collections.community.general.plugins.module_utils.module_helper import ModuleHelper
-from ansible_collections.community.general.plugins.module_utils.pacemaker import pacemaker_runner
-
-
-class PacemakerInfo(ModuleHelper):
- module = dict(
- argument_spec=dict(),
- supports_check_mode=True,
- )
- info_vars = {
- "cluster_info": "cluster",
- "resource_info": "resource",
- "stonith_info": "stonith",
- "constraint_info": "constraint",
- "property_info": "property"
- }
- output_params = info_vars.keys()
-
- def __init_module__(self):
- self.runner = pacemaker_runner(self.module)
- with self.runner("version") as ctx:
- rc, out, err = ctx.run()
- self.vars.version = out.strip()
-
- def _process_command_output(self, cli_action=""):
- def process(rc, out, err):
- if rc != 0:
- self.do_raise('pcs {0} config failed with error (rc={1}): {2}'.format(cli_action, rc, err))
- out = json.loads(out)
- return None if out == "" else out
- return process
-
- def _get_info(self, cli_action):
- with self.runner("cli_action config output_format", output_process=self._process_command_output(cli_action)) as ctx:
- return ctx.run(cli_action=cli_action, output_format="json")
-
- def __run__(self):
- for key, cli_action in sorted(self.info_vars.items()):
- self.vars.set(key, self._get_info(cli_action))
-
-
-def main():
- PacemakerInfo.execute()
-
-
-if __name__ == '__main__':
- main()
diff --git a/plugins/modules/pacemaker_resource.py b/plugins/modules/pacemaker_resource.py
index 2fdf785487..38f1c45cef 100644
--- a/plugins/modules/pacemaker_resource.py
+++ b/plugins/modules/pacemaker_resource.py
@@ -163,15 +163,13 @@ class PacemakerResource(StateModuleHelper):
required_if=[('state', 'present', ['resource_type', 'resource_option'])],
supports_check_mode=True,
)
+ default_state = "present"
def __init_module__(self):
- self.runner = pacemaker_runner(self.module)
- self.vars.set('previous_value', self._get()['out'])
+ self.runner = pacemaker_runner(self.module, cli_action='resource')
+ self._maintenance_mode_runner = pacemaker_runner(self.module, cli_action='property')
+ self.vars.set('previous_value', self._get())
self.vars.set('value', self.vars.previous_value, change=True, diff=True)
- self.module.params['name'] = self.module.params['name'] or None
-
- def __quit_module__(self):
- self.vars.set('value', self._get()['out'])
def _process_command_output(self, fail_on_err, ignore_err_msg=""):
def process(rc, out, err):
@@ -182,31 +180,45 @@ class PacemakerResource(StateModuleHelper):
return process
def _get(self):
- with self.runner('cli_action state name') as ctx:
- result = ctx.run(cli_action="resource", state='status')
- return dict([('rc', result[0]),
- ('out', result[1] if result[1] != "" else None),
- ('err', result[2])])
+ with self.runner('state name', output_process=self._process_command_output(False)) as ctx:
+ return ctx.run(state='status')
def state_absent(self):
- force = get_pacemaker_maintenance_mode(self.runner)
- with self.runner('cli_action state name force', output_process=self._process_command_output(True, "does not exist"), check_mode_skip=True) as ctx:
- ctx.run(cli_action='resource', force=force)
+ runner_args = ['state', 'name', 'force']
+ force = get_pacemaker_maintenance_mode(self._maintenance_mode_runner)
+ with self.runner(runner_args, output_process=self._process_command_output(True, "does not exist"), check_mode_skip=True) as ctx:
+ ctx.run(force=force)
+ self.vars.set('value', self._get())
+ self.vars.stdout = ctx.results_out
+ self.vars.stderr = ctx.results_err
+ self.vars.cmd = ctx.cmd
def state_present(self):
with self.runner(
- 'cli_action state name resource_type resource_option resource_operation resource_meta resource_argument wait',
- output_process=self._process_command_output(not get_pacemaker_maintenance_mode(self.runner), "already exists"),
+ 'state name resource_type resource_option resource_operation resource_meta resource_argument wait',
+ output_process=self._process_command_output(not get_pacemaker_maintenance_mode(self._maintenance_mode_runner), "already exists"),
check_mode_skip=True) as ctx:
- ctx.run(cli_action='resource')
+ ctx.run()
+ self.vars.set('value', self._get())
+ self.vars.stdout = ctx.results_out
+ self.vars.stderr = ctx.results_err
+ self.vars.cmd = ctx.cmd
def state_enabled(self):
- with self.runner('cli_action state name', output_process=self._process_command_output(True, "Starting"), check_mode_skip=True) as ctx:
- ctx.run(cli_action='resource')
+ with self.runner('state name', output_process=self._process_command_output(True, "Starting"), check_mode_skip=True) as ctx:
+ ctx.run()
+ self.vars.set('value', self._get())
+ self.vars.stdout = ctx.results_out
+ self.vars.stderr = ctx.results_err
+ self.vars.cmd = ctx.cmd
def state_disabled(self):
- with self.runner('cli_action state name', output_process=self._process_command_output(True, "Stopped"), check_mode_skip=True) as ctx:
- ctx.run(cli_action='resource')
+ with self.runner('state name', output_process=self._process_command_output(True, "Stopped"), check_mode_skip=True) as ctx:
+ ctx.run()
+ self.vars.set('value', self._get())
+ self.vars.stdout = ctx.results_out
+ self.vars.stderr = ctx.results_err
+ self.vars.cmd = ctx.cmd
def main():
diff --git a/plugins/modules/packet_device.py b/plugins/modules/packet_device.py
index f17db56c8c..39f3e71e83 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 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
+ - 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
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 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.
+ - 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.
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 waits for both events consequently, applying the
- timeout twice.
+ - If O(wait_for_public_IPv) is set and O(state=active), the module will wait for both events consequently, applying
+ the timeout twice.
default: 900
type: int
@@ -258,6 +258,12 @@ 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
@@ -414,12 +420,12 @@ def get_hostname_list(module):
# at this point, hostnames is a list
hostnames = [h.strip() for h in hostnames]
- if len(hostnames) > 1 and count > 1:
+ if (len(hostnames) > 1) and (count > 1):
_msg = ("If you set count>1, you should only specify one hostname "
"with the %d formatter, not a list of hostnames.")
raise Exception(_msg)
- if len(hostnames) == 1 and count > 0:
+ if (len(hostnames) == 1) and (count > 0):
hostname_spec = hostnames[0]
count_range = range(count_offset, count_offset + count)
if re.search(r"%\d{0,2}d", hostname_spec):
diff --git a/plugins/modules/packet_ip_subnet.py b/plugins/modules/packet_ip_subnet.py
index 0029623a10..ab74dac840 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 is then assigned
+ - With O(state=present), you must specify either O(hostname) or O(device_id). Subnet with given CIDR will then be assigned
to the specified device.
- - With O(state=absent), you can specify either O(hostname) or O(device_id). The subnet is then removed from specified
+ - With O(state=absent), you can specify either O(hostname) or O(device_id). The subnet will be removed from specified
devices.
- - If you leave both O(hostname) and O(device_id) empty, the subnet is then removed from any device it is assigned to.
+ - If you leave both O(hostname) and O(device_id) empty, the subnet will be removed from any device it is assigned to.
choices: ['present', 'absent']
default: 'present'
type: str
@@ -123,6 +123,12 @@ 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 afadec36be..d61c9e598b 100644
--- a/plugins/modules/packet_project.py
+++ b/plugins/modules/packet_project.py
@@ -110,6 +110,12 @@ 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 ec76a17b4c..3073791b2a 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 is read from key string.
+ - Label for the key. If you keep it empty, it will be read from key string.
type: str
aliases: [name]
id:
@@ -85,6 +85,11 @@ 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 359cbc51d1..38a98bba60 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) 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.
+ - 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.
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 are updated to a newer version are not counted as V(new).
+ - In case of O(state=latest) already installed packages which will be 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 is processed individually, it is much more efficient to pass the list directly
+ - When used with a C(loop:) each package will be 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,6 +152,22 @@ 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 851655f9fc..37d17e7516 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 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.
+ - 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.
- 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 uses pacman's default (V(/etc/pacman.d/gnupg)).
+ - If not specified, module will use 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 78443e8410..0c14688dbd 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 lets you create PagerDuty maintenance windows.
+ - This module will let 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 are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
+ self-signed certificates.
type: bool
default: true
"""
@@ -203,7 +203,7 @@ class PagerDutyRequest(object):
return False, json_out, True
def _create_services_payload(self, service):
- if isinstance(service, list):
+ if (isinstance(service, list)):
return [{'id': s, 'type': 'service_reference'} for s in service]
else:
return [{'id': service, 'type': 'service_reference'}]
@@ -242,15 +242,15 @@ def main():
module = AnsibleModule(
argument_spec=dict(
state=dict(required=True, choices=['running', 'started', 'ongoing', 'absent']),
- name=dict(),
- user=dict(),
+ name=dict(required=False),
+ user=dict(required=False),
token=dict(required=True, no_log=True),
- 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'),
+ 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),
validate_certs=dict(default=True, type='bool'),
)
)
diff --git a/plugins/modules/pagerduty_alert.py b/plugins/modules/pagerduty_alert.py
index e3d93e8718..347e849822 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 lets you trigger, acknowledge or resolve a PagerDuty incident by sending events.
+ - This module will let 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 are triggered, acknowledged or resolved.
+ - ID of PagerDuty service when incidents will be triggered, acknowledged or resolved.
- Required if O(api_version=v1).
service_key:
type: str
@@ -92,9 +92,10 @@ 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) 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.
+ 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.
default: Created via Ansible
incident_class:
type: str
@@ -105,11 +106,12 @@ 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 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=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=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 is discarded.
+ was first opened by a trigger event. Acknowledge events referencing resolved or nonexistent incidents will be discarded.
link_url:
type: str
description:
diff --git a/plugins/modules/pagerduty_change.py b/plugins/modules/pagerduty_change.py
index de77016969..2b63859f1d 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 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.
+ - 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.
author:
- Adam Vaughan (@adamvaughan)
requirements:
@@ -82,7 +82,7 @@ options:
type: str
validate_certs:
description:
- - If V(false), SSL certificates for the target URL are not validated. This should only be used on personally controlled
+ - If V(false), SSL certificates for the target URL will not be validated. This should only be used on personally controlled
sites using self-signed certificates.
required: false
default: true
@@ -121,14 +121,15 @@ def main():
argument_spec=dict(
integration_key=dict(required=True, type='str', no_log=True),
summary=dict(required=True, 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'),
+ 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'),
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 0830af97f3..e03342c792 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')),
+ pd_teams=dict(type='list', elements='str', required=False)),
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 536ba59662..d21781ac6c 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 is used or conserved.
+ - If set to V(true), the minimal value will be 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 is used or conserved.
+ - If set to V(true), the maximal value will be 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(default='', type='str')
+ comment=dict(required=False, default='', type='str')
),
supports_check_mode=True,
)
diff --git a/plugins/modules/pamd.py b/plugins/modules/pamd.py
index 327316aa37..ec2127483e 100644
--- a/plugins/modules/pamd.py
+++ b/plugins/modules/pamd.py
@@ -68,20 +68,21 @@ options:
type: str
module_arguments:
description:
- - 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=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=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 changes to that specified in module_arguments.
+ - Furthermore, if the module argument takes a value denoted by C(=), the value will be changed to that specified in
+ module_arguments.
type: list
elements: str
state:
description:
- - 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.
+ - 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.
- 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) are ignored.
- - State V(absent) removes the rule.
+ - 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.
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 4bf0897afc..7fc9f320d2 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 uses to display locations and capacities on the disk and to interpret
+ - Selects the current default unit that Parted will use 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,7 +59,8 @@ options:
label:
description:
- Disk label type or partition table to use.
- - If O(device) already contains a different label, it is changed to O(label) and any previous partitions are lost.
+ - If O(device) already contains a different label, it will be changed to O(label) and any previous partitions will be
+ 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]
@@ -73,8 +74,8 @@ options:
default: primary
part_start:
description:
- - 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.
+ - 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.
- 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).
@@ -82,8 +83,8 @@ options:
default: 0%
part_end:
description:
- - 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.
+ - 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.
- 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
@@ -99,13 +100,13 @@ options:
state:
description:
- Whether to create or delete a partition.
- - If set to V(info) the module only returns the device information.
+ - If set to V(info) the module will only return the device information.
type: str
choices: [absent, present, info]
default: info
fs_type:
description:
- - If specified and the partition does not exist, sets filesystem type to given partition.
+ - If specified and the partition does not exist, will set 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 5eb84b509d..05135925bc 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 are processed in the same order as the packages list.
+ - Prompts will be 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 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:
+ - 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:
'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 it issues a warning.
- - If you want to specify that a package does not need prompts in the middle of a list, V(null).
+ - 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).
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(type='path'),
- prompts=dict(type='list', elements='raw'),
+ executable=dict(default=None, required=False, type='path'),
+ prompts=dict(default=None, required=False, type='list', elements='raw'),
),
supports_check_mode=True)
diff --git a/plugins/modules/pingdom.py b/plugins/modules/pingdom.py
index 7c82063ab9..192dd244f2 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 lets you pause/unpause Pingdom alerts.
+ - This module will let you pause/unpause Pingdom alerts.
author:
- "Dylan Silva (@thaumos)"
- "Justin Johns (!UNKNOWN)"
@@ -132,10 +132,10 @@ def main():
passwd = module.params['passwd']
key = module.params['key']
- if state == "paused" or state == "stopped":
+ if (state == "paused" or state == "stopped"):
(rc, name, result) = pause(checkid, uid, passwd, key)
- if state == "running" or state == "started":
+ if (state == "running" or state == "started"):
(rc, name, result) = unpause(checkid, uid, passwd, key)
if rc != 0:
diff --git a/plugins/modules/pip_package_info.py b/plugins/modules/pip_package_info.py
index 80bdedf7fe..ffe2e9f401 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 are 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 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).
default: ['pip']
required: false
type: list
@@ -59,39 +59,37 @@ 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 778810be0c..5633640ea4 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 fails silently when processing invalid specifiers,
+ - If the package C(packaging) is at a version lesser than C(22.0.0), it will fail 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 fc74df496a..a381421aba 100644
--- a/plugins/modules/pipx_info.py
+++ b/plugins/modules/pipx_info.py
@@ -115,15 +115,7 @@ 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 26abded4e2..01c9d48cce 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 module configures which publishers a client downloads IPS packages from.
+ - This modules will configure which publishers a client will download IPS packages from.
extends_documentation_fragment:
- community.general.attributes
attributes:
diff --git a/plugins/modules/pkgin.py b/plugins/modules/pkgin.py
index 8695f1b5af..21a3b10016 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 is silently
+ - 'Known bug with pkgin < 0.8.0: if a package is removed and another package depends on it, the other package will be silently
removed as well.'
extends_documentation_fragment:
- community.general.attributes
diff --git a/plugins/modules/pkgng.py b/plugins/modules/pkgng.py
index 58eafb9e0c..582abd3649 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) operates, but O(state=present) and O(state=absent) are noops.
+ - With O(name=*), O(state=latest) will operate, but O(state=present) and O(state=absent) will be 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 installs all packages within the specified root directory.
+ - For C(pkgng) versions 1.5 and later, pkg will install 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 chroots in the specified environment.
+ - Pkg will chroot in the specified environment.
- Can not be used together with O(rootdir) or O(jail) options.
required: false
type: path
jail:
description:
- - Pkg executes in the given jail name or ID.
+ - Pkg will execute 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 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
+ - 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
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"]),
+ state=dict(default="present", choices=["present", "latest", "absent"], required=False),
name=dict(aliases=["pkg"], required=True, type='list', elements='str'),
cached=dict(default=False, type='bool'),
- 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'),
+ 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'),
autoremove=dict(default=False, type='bool'),
- use_globs=dict(default=True, type='bool'),
+ use_globs=dict(default=True, required=False, type='bool'),
),
supports_check_mode=True,
mutually_exclusive=[["rootdir", "chroot", "jail"]])
diff --git a/plugins/modules/pkgutil.py b/plugins/modules/pkgutil.py
index a40bff06ec..7eb18cdb20 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 resolves and downloads dependencies.
+ - Unlike the M(community.general.svr4pkg) module, it will resolve and download 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 updates/installs the packages to the latest version available.
+ - The upgrade (V(latest)) operation will update/install 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 1555ec842e..66c1d27033 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) 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.
+ - 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.
type: int
required: false
socket:
@@ -147,21 +147,20 @@ 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 2dad63a608..c4dbf55dff 100644
--- a/plugins/modules/pnpm.py
+++ b/plugins/modules/pnpm.py
@@ -77,14 +77,14 @@ options:
production:
description:
- Install dependencies in production mode.
- - Pnpm ignores any dependencies under C(devDependencies) in package.json.
+ - Pnpm will ignore any dependencies under C(devDependencies) in package.json.
required: false
type: bool
default: false
dev:
description:
- Install dependencies in development mode.
- - Pnpm ignores any regular dependencies in C(package.json).
+ - Pnpm will ignore 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(),
- alias=dict(),
- path=dict(type="path"),
- version=dict(),
- executable=dict(type="path"),
+ name=dict(default=None),
+ alias=dict(default=None),
+ path=dict(default=None, type="path"),
+ version=dict(default=None),
+ executable=dict(default=None, 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 8a00b934dd..4a1cb1b990 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 are displayed on stdout.
+ - Only the die message and the path of the build log will be 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', aliases=['name']),
+ package=dict(type='list', elements='str', default=None, aliases=['name']),
state=dict(
default=portage_present_states[0],
choices=portage_present_states + portage_absent_states,
),
update=dict(default=False, type='bool'),
- backtrack=dict(type='int'),
+ backtrack=dict(default=None, 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(type='bool'),
+ select=dict(default=None, type='bool'),
quiet=dict(default=False, type='bool'),
verbose=dict(default=False, type='bool'),
- sync=dict(choices=['yes', 'web', 'no']),
+ sync=dict(default=None, 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(type='int'),
- loadavg=dict(type='float'),
- withbdeps=dict(type='bool'),
+ jobs=dict(default=None, type='int'),
+ loadavg=dict(default=None, type='float'),
+ withbdeps=dict(default=None, 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 f87813031b..f264fae875 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 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.
+ - 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.
state:
type: str
default: 'present'
@@ -176,8 +176,10 @@ def main():
argument_spec.update(
dict(
name=dict(required=True, type="str", aliases=["org"]),
- force=dict(type="bool", default=False),
- state=dict(choices=["present", "absent"], default="present"),
+ force=dict(required=False, type="bool", default=False),
+ state=dict(
+ required=False, choices=["present", "absent"], default="present"
+ ),
)
)
diff --git a/plugins/modules/pritunl_org_info.py b/plugins/modules/pritunl_org_info.py
index 952acd8963..c8e75190f1 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 returns all Pritunl organizations.
+ - Name of the Pritunl organization to search for. If none provided, the module will return all Pritunl organizations.
"""
EXAMPLES = r"""
@@ -113,7 +113,7 @@ def main():
argument_spec.update(
dict(
- organization=dict(type="str", aliases=["org"])
+ organization=dict(required=False, type="str", default=None, aliases=["org"])
)
)
diff --git a/plugins/modules/pritunl_user.py b/plugins/modules/pritunl_user.py
index 45de07eba6..c8cc9ea9c6 100644
--- a/plugins/modules/pritunl_user.py
+++ b/plugins/modules/pritunl_user.py
@@ -320,14 +320,18 @@ def main():
argument_spec.update(
dict(
organization=dict(required=True, type="str", aliases=["org"]),
- state=dict(choices=["present", "absent"], default="present"),
+ state=dict(
+ required=False, choices=["present", "absent"], default="present"
+ ),
user_name=dict(required=True, type="str"),
- 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"),
+ 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),
)
)
diff --git a/plugins/modules/pritunl_user_info.py b/plugins/modules/pritunl_user_info.py
index 2e8180675a..93786b166d 100644
--- a/plugins/modules/pritunl_user_info.py
+++ b/plugins/modules/pritunl_user_info.py
@@ -151,8 +151,12 @@ def main():
argument_spec.update(
dict(
organization=dict(required=True, type="str", aliases=["org"]),
- user_name=dict(type="str"),
- user_type=dict(choices=["client", "server"], default="client"),
+ user_name=dict(required=False, type="str", default=None),
+ user_type=dict(
+ required=False,
+ choices=["client", "server"],
+ default="client",
+ ),
)
)
diff --git a/plugins/modules/pubnub_blocks.py b/plugins/modules/pubnub_blocks.py
index 316fced4be..c8992b2aa7 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) is used to manage blocks.
- - User's account is used if value not set or empty.
+ - 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.
type: str
default: ''
application:
description:
- - Name of target PubNub application for which blocks configuration on specific O(keyset) is done.
+ - Name of target PubNub application for which blocks configuration on specific O(keyset) will be done.
type: str
required: true
keyset:
@@ -72,19 +72,19 @@ options:
required: true
state:
description:
- - Intended block state after event handlers creation / update process is completed.
+ - Intended block state after event handlers creation / update process will be completed.
required: false
default: 'present'
choices: ['started', 'stopped', 'present', 'absent']
type: str
name:
description:
- - Name of managed block which is later visible on admin.pubnub.com.
+ - Name of managed block which will be later visible on admin.pubnub.com.
required: true
type: str
description:
description:
- - Short block description which is later visible on U(https://admin.pubnub.com).
+ - Short block description which will be 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
- 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.
+ 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.
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 causes problems to call PubNub REST API.
+ certificates on it and this will cause 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='', type='str'),
- password=dict(default='', type='str', no_log=True),
- account=dict(default='', type='str'),
+ email=dict(default='', required=False, type='str'),
+ password=dict(default='', required=False, type='str', no_log=True),
+ account=dict(default='', required=False, 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 cc7f001837..0af129d26a 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
- fail. This option forces the sending of the Basic authentication header upon initial request.
+ will 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) 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.
+ - 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.
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 is not used.
+ the O(url_password) parameter will not be used.
url_username:
description:
- The username for use in HTTP basic authentication to the pulp API.
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be 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 a1ab66efc6..a631a8ec55 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) goes to both C(console) and C(syslog).
- - V(stdout) is deprecated and replaced by C(console).
+ - V(all) will go to both C(console) and C(syslog).
+ - V(stdout) will be 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 tries to determine the best parseable
- locale to use.
+ - 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.
type: str
default: C
version_added: 8.6.0
diff --git a/plugins/modules/pushbullet.py b/plugins/modules/pushbullet.py
index 990ac36525..2f13f1dee2 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'),
- device=dict(type='str'),
+ channel=dict(type='str', default=None),
+ device=dict(type='str', default=None),
push_type=dict(type='str', default="note", choices=['note', 'link']),
title=dict(type='str', required=True),
- body=dict(type='str'),
- url=dict(type='str'),
+ body=dict(type='str', default=None),
+ url=dict(type='str', default=None),
),
mutually_exclusive=(
['channel', 'device'],
diff --git a/plugins/modules/pushover.py b/plugins/modules/pushover.py
index dcfce34a06..ae57411531 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 need a pushover.net account to use this module. But no account is required to receive messages.
+ - You will require 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(default='0', choices=['-2', '-1', '0', '1', '2']),
+ pri=dict(required=False, 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 cbe93dd944..a8ef5a952f 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)
- is V(null).
+ will be V(null).
returned: always
type: dict
sample:
diff --git a/plugins/modules/redfish_command.py b/plugins/modules/redfish_command.py
index f8578488e9..25f92bd1f7 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 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
+ - 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
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,16 +830,15 @@ 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 6eba0b0048..8700d4b8de 100644
--- a/plugins/modules/redfish_config.py
+++ b/plugins/modules/redfish_config.py
@@ -166,9 +166,9 @@ options:
volume_details:
required: false
description:
- - 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.
+ - 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.
type: dict
default: {}
version_added: '7.5.0'
diff --git a/plugins/modules/redhat_subscription.py b/plugins/modules/redhat_subscription.py
index 165bfb2891..6818253c9d 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 does I(not)
+ by checking the process listing on the system. Due to limitations of the D-Bus interface of C(rhsm), the module will 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,9 +132,10 @@ 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
@@ -166,8 +167,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 is removed from C(syspurpose.json) file. Unknown attributes
- are ignored.
+ listed in the new list of attributes, the existing attribute will be removed from C(syspurpose.json) file. Unknown
+ attributes are ignored.
type: dict
suboptions:
usage:
@@ -186,7 +187,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 are synchronized with RHSM server by rhsmcertd daemon.
+ option is V(false), then syspurpose attributes will be 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 4efe409b72..03ae78dce3 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 option always results in a change in the database.
+ - Expiration time in milliseconds. Setting this flag will always result 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'),
- expiration=dict(type='int'),
- non_existing=dict(type='bool'),
- existing=dict(type='bool'),
- keep_ttl=dict(type='bool'),
+ 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),
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 d5f2fe05c2..7630d621dc 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 fails.
- - When using C(check_mode) the module tries to calculate the value that Redis would return. If the key is not present,
+ 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,
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'),
- increment_float=dict(type='float'),
+ increment_int=dict(type='int', required=False),
+ increment_float=dict(type='float', required=False),
)
module_args.update(redis_auth_args)
diff --git a/plugins/modules/rhevm.py b/plugins/modules/rhevm.py
index 7536b7843a..a23448cc7a 100644
--- a/plugins/modules/rhevm.py
+++ b/plugins/modules/rhevm.py
@@ -812,7 +812,7 @@ class RHEVConn(object):
setChanged()
HOST = self.get_Host(host_name)
state = HOST.status.state
- while state != 'non_operational' and state != 'up':
+ while (state != 'non_operational' and state != 'up'):
HOST = self.get_Host(host_name)
state = HOST.status.state
time.sleep(1)
diff --git a/plugins/modules/rhsm_release.py b/plugins/modules/rhsm_release.py
index 665c734849..6408d3c171 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 fails on an unregistered system. Use the M(community.general.redhat_subscription) module to register a system
- prior to setting the RHSM release.
+ - 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.
- 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 e59fcd27b4..c80caa0d6c 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) is likely not to have the desired result.
+ in a list of repositories to the O(name) field. Using this with C(loop) will most likely not have the desired result.
type: bool
default: false
"""
diff --git a/plugins/modules/riak.py b/plugins/modules/riak.py
index 2009ca0a22..d7b45af5cd 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 are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
+ self-signed certificates.
type: bool
default: true
"""
@@ -103,13 +103,15 @@ def main():
module = AnsibleModule(
argument_spec=dict(
- command=dict(choices=['ping', 'kv_test', 'join', 'plan', 'commit']),
+ command=dict(required=False, default=None, choices=[
+ 'ping', 'kv_test', 'join', 'plan', 'commit']),
config_dir=dict(default='/etc/riak', type='path'),
- http_conn=dict(default='127.0.0.1:8098'),
- target_node=dict(default='riak@127.0.0.1'),
+ http_conn=dict(required=False, default='127.0.0.1:8098'),
+ target_node=dict(default='riak@127.0.0.1', required=False),
wait_for_handoffs=dict(default=0, type='int'),
wait_for_ring=dict(default=0, type='int'),
- wait_for_service=dict(choices=['kv']),
+ wait_for_service=dict(
+ required=False, default=None, choices=['kv']),
validate_certs=dict(default=True, type='bool'))
)
diff --git a/plugins/modules/rocketchat.py b/plugins/modules/rocketchat.py
index 79dbaa77f2..b134916040 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) is not used.
+ - If O(icon_emoji) is set, O(icon_url) will not be used.
link_names:
type: int
description:
@@ -80,8 +80,8 @@ options:
- 0
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
+ self-signed certificates.
type: bool
default: true
color:
@@ -102,11 +102,12 @@ 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, V(true), is B(deprecated) since community.general 11.2.0 and will change to V(false) in community.general 13.0.0.
- - This parameter is going to 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 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.
type: bool
+ default: true
version_added: 10.5.0
"""
@@ -158,6 +159,13 @@ 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
@@ -173,7 +181,7 @@ def build_payload_for_rocketchat(module, text, channel, username, icon_url, icon
elif text is not None:
payload = dict(attachments=[dict(text=text, color=color)])
if channel is not None:
- if channel[0] == '#' or channel[0] == '@':
+ if (channel[0] == '#') or (channel[0] == '@'):
payload['channel'] = channel
else:
payload['channel'] = '#' + channel
@@ -220,7 +228,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'),
+ msg=dict(type='str', required=False),
channel=dict(type='str'),
username=dict(type='str', default='Ansible'),
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
@@ -228,8 +236,8 @@ 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'),
- is_pre740=dict(type='bool')
+ attachments=dict(type='list', elements='dict', required=False),
+ is_pre740=dict(default=True, type='bool')
)
)
@@ -246,15 +254,6 @@ def main():
attachments = module.params['attachments']
is_pre740 = module.params['is_pre740']
- if is_pre740 is None:
- module.deprecate(
- "The default value 'true' for 'is_pre740' is deprecated and will change to 'false' in community.general 13.0.0."
- " You can explicitly set 'is_pre740' in your task to avoid this deprecation warning",
- version="13.0.0",
- collection_name="community.general",
- )
- is_pre740 = True
-
payload = build_payload_for_rocketchat(module, text, channel, username, icon_url, icon_emoji, link_names, color, attachments, is_pre740)
do_notify_rocketchat(module, domain, token, protocol, payload)
diff --git a/plugins/modules/rollbar_deployment.py b/plugins/modules/rollbar_deployment.py
index e0cf4e31aa..a9658dbadf 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 are not validated. This should only be used on personally controlled
+ - If V(false), SSL certificates for the target URL will not be validated. This should only be used on personally controlled
sites using self-signed certificates.
required: false
default: true
@@ -100,10 +100,13 @@ def main():
token=dict(required=True, no_log=True),
environment=dict(required=True),
revision=dict(required=True),
- user=dict(),
- rollbar_user=dict(),
- comment=dict(),
- url=dict(default='https://api.rollbar.com/api/1/deploy/'),
+ 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/'
+ ),
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 01462b25f1..652801ca67 100644
--- a/plugins/modules/rpm_ostree_pkg.py
+++ b/plugins/modules/rpm_ostree_pkg.py
@@ -82,6 +82,16 @@ 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
@@ -91,7 +101,17 @@ packages:
description: A list of packages specified.
returned: always
type: list
- sample: ["nfs-utils"]
+ 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: ''
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 1c5841b3c5..cb1941ab6a 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 is aborted.
+ - If the timeout is reached, the job will be 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 5a575fa2ba..f26f241537 100644
--- a/plugins/modules/runit.py
+++ b/plugins/modules/runit.py
@@ -30,10 +30,9 @@ options:
required: true
state:
description:
- - 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.
+ - 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.
type: str
choices: [killed, once, reloaded, restarted, started, stopped]
enabled:
diff --git a/plugins/modules/say.py b/plugins/modules/say.py
index eff582f125..2dc359083d 100644
--- a/plugins/modules/say.py
+++ b/plugins/modules/say.py
@@ -17,8 +17,7 @@ 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:
@@ -67,7 +66,7 @@ def main():
module = AnsibleModule(
argument_spec=dict(
msg=dict(required=True),
- voice=dict(),
+ voice=dict(required=False),
),
supports_check_mode=True
)
diff --git a/plugins/modules/scaleway_compute.py b/plugins/modules/scaleway_compute.py
index 77aaf72956..c61030bede 100644
--- a/plugins/modules/scaleway_compute.py
+++ b/plugins/modules/scaleway_compute.py
@@ -96,17 +96,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
commercial_type:
type: str
@@ -138,7 +133,7 @@ options:
type: str
description:
- Security group unique identifier.
- - If no value provided, the default security group or current security group is used.
+ - If no value provided, the default security group or current security group will be used.
required: false
"""
diff --git a/plugins/modules/scaleway_compute_private_network.py b/plugins/modules/scaleway_compute_private_network.py
index 0781c872fc..a3b6c031f7 100644
--- a/plugins/modules/scaleway_compute_private_network.py
+++ b/plugins/modules/scaleway_compute_private_network.py
@@ -52,17 +52,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
compute_id:
type: str
diff --git a/plugins/modules/scaleway_container.py b/plugins/modules/scaleway_container.py
index 8351660fd6..dc4df1c1d5 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 does not output a C(changed) state in Ansible.
+ - Updating those values will 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 is used to trigger autoscaling.
+ - This parameter will be used to trigger autoscaling.
type: int
protocol:
diff --git a/plugins/modules/scaleway_container_namespace.py b/plugins/modules/scaleway_container_namespace.py
index 781c9ffc25..802a491321 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 does not output a C(changed) state in Ansible.
+ - Updating those values will 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 4e352c5b9e..132dfe8bb6 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 can pull images from a V(public) registry.
+ - Everyone will be able to 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 48add5dfc6..d952452daf 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(),
- instance_id=dict(),
+ database_name=dict(required=False),
+ instance_id=dict(required=False),
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 4bc7c42688..e2142dd1f2 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 does not output a C(changed) state in Ansible.
+ - Updating those values will 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 e5e00bf681..d43b42bc7f 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 does not output a C(changed) state in Ansible.
+ - Updating those values will 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 58bad2f2fc..44474218db 100644
--- a/plugins/modules/scaleway_image_info.py
+++ b/plugins/modules/scaleway_image_info.py
@@ -30,17 +30,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
"""
EXAMPLES = r"""
@@ -62,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.py b/plugins/modules/scaleway_ip.py
index 021bb955cc..ce9977bbf0 100644
--- a/plugins/modules/scaleway_ip.py
+++ b/plugins/modules/scaleway_ip.py
@@ -51,17 +51,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
id:
type: str
diff --git a/plugins/modules/scaleway_ip_info.py b/plugins/modules/scaleway_ip_info.py
index cd367c52bb..8b2a78449e 100644
--- a/plugins/modules/scaleway_ip_info.py
+++ b/plugins/modules/scaleway_ip_info.py
@@ -30,17 +30,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
"""
EXAMPLES = r"""
@@ -57,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 a28b290bbc..0aeabb94fd 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_private_network.py b/plugins/modules/scaleway_private_network.py
index 10ba9f2f81..edd5d435cb 100644
--- a/plugins/modules/scaleway_private_network.py
+++ b/plugins/modules/scaleway_private_network.py
@@ -52,17 +52,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
name:
type: str
diff --git a/plugins/modules/scaleway_security_group.py b/plugins/modules/scaleway_security_group.py
index 39ee5a1068..cb4e44c844 100644
--- a/plugins/modules/scaleway_security_group.py
+++ b/plugins/modules/scaleway_security_group.py
@@ -50,17 +50,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
name:
description:
diff --git a/plugins/modules/scaleway_security_group_info.py b/plugins/modules/scaleway_security_group_info.py
index b729bcf052..04eb2da0d1 100644
--- a/plugins/modules/scaleway_security_group_info.py
+++ b/plugins/modules/scaleway_security_group_info.py
@@ -25,17 +25,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
extends_documentation_fragment:
- community.general.scaleway
- community.general.attributes
@@ -61,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_security_group_rule.py b/plugins/modules/scaleway_security_group_rule.py
index ed314e1e19..f7f6304a26 100644
--- a/plugins/modules/scaleway_security_group_rule.py
+++ b/plugins/modules/scaleway_security_group_rule.py
@@ -46,17 +46,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
protocol:
type: str
diff --git a/plugins/modules/scaleway_server_info.py b/plugins/modules/scaleway_server_info.py
index bb258af7e5..8f4cbc6a2c 100644
--- a/plugins/modules/scaleway_server_info.py
+++ b/plugins/modules/scaleway_server_info.py
@@ -30,17 +30,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
"""
EXAMPLES = r"""
@@ -62,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 c7946f1f7c..ae6c3b532f 100644
--- a/plugins/modules/scaleway_snapshot_info.py
+++ b/plugins/modules/scaleway_snapshot_info.py
@@ -30,17 +30,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
"""
EXAMPLES = r"""
@@ -62,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_user_data.py b/plugins/modules/scaleway_user_data.py
index b21ab6b332..f4f2c18624 100644
--- a/plugins/modules/scaleway_user_data.py
+++ b/plugins/modules/scaleway_user_data.py
@@ -53,17 +53,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
"""
EXAMPLES = r"""
diff --git a/plugins/modules/scaleway_volume.py b/plugins/modules/scaleway_volume.py
index 405d257230..c7c6346075 100644
--- a/plugins/modules/scaleway_volume.py
+++ b/plugins/modules/scaleway_volume.py
@@ -45,17 +45,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
name:
type: str
description:
diff --git a/plugins/modules/scaleway_volume_info.py b/plugins/modules/scaleway_volume_info.py
index 09b0ef56ef..c8e2cd1302 100644
--- a/plugins/modules/scaleway_volume_info.py
+++ b/plugins/modules/scaleway_volume_info.py
@@ -30,17 +30,12 @@ options:
choices:
- ams1
- EMEA-NL-EVS
- - ams2
- - ams3
- par1
- EMEA-FR-PAR1
- par2
- EMEA-FR-PAR2
- - par3
- waw1
- EMEA-PL-WAW1
- - waw2
- - waw3
"""
EXAMPLES = r"""
@@ -62,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 c6107309ac..b5c0ee4a61 100644
--- a/plugins/modules/selinux_permissive.py
+++ b/plugins/modules/selinux_permissive.py
@@ -24,7 +24,7 @@ attributes:
options:
domain:
description:
- - The domain that is added or removed from the list of permissive domains.
+ - The domain that will be 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 408d9221da..8f1b20c230 100644
--- a/plugins/modules/selogin.py
+++ b/plugins/modules/selogin.py
@@ -34,8 +34,7 @@ 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 c0e4b239bc..1099f579e1 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 need an active
- SendGrid account.
+ - Like the other notification modules, this one requires an external dependency to work. In this case, you will 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(),
- 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'),
+ 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'),
from_address=dict(required=True),
- from_name=dict(),
+ from_name=dict(required=False),
to_addresses=dict(required=True, type='list', elements='str'),
subject=dict(required=True),
body=dict(required=True),
- html_body=dict(default=False, type='bool'),
- attachments=dict(type='list', elements='path')
+ html_body=dict(required=False, default=False, type='bool'),
+ attachments=dict(required=False, 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 a4b5771528..2cac434923 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 are not added to the check definition unless specified.
+ - Most options do not have a default and will not be 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.
- - 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.
+ - 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.
default: /etc/sensu/conf.d/checks.json
backup:
description:
@@ -99,8 +99,7 @@ options:
type: list
elements: str
description:
- - Other checks this one depends on.
- - If dependencies fail handling of this check is disabled.
+ - Other checks this check depends on, if dependencies fail handling of this check will be disabled.
metric:
description:
- Whether the check is a metric.
diff --git a/plugins/modules/sensu_client.py b/plugins/modules/sensu_client.py
index f87621bd6d..955a25f44f 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,13 +158,7 @@ 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 5b5494bf1c..ff4a77a6ff 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 handles.
+ - An array of check result severities the handler will handle.
- 'NOTE: event resolution bypasses this filtering.'
- "Example: [ 'warning', 'critical', 'unknown' ]."
mutator:
@@ -155,12 +155,7 @@ 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 91e6f63496..a6d699f4c1 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 is automatically cleared after this number of seconds.
+ - If specified, the silence entry will be automatically cleared after this number of seconds.
expire_on_resolve:
description:
- - If specified as true, the silence entry is automatically cleared once the condition it is silencing is resolved.
+ - If specified as true, the silence entry will be automatically cleared once the condition it is silencing is resolved.
type: bool
reason:
type: str
@@ -202,7 +202,7 @@ def create(
expire_on_resolve, reason, subscription):
(rc, out, changed) = query(module, url, check, subscription)
for i in out:
- if i['subscription'] == subscription:
+ if (i['subscription'] == subscription):
if (
(check is None or check == i['check']) and
(
@@ -265,14 +265,14 @@ def create(
def main():
module = AnsibleModule(
argument_spec=dict(
- check=dict(),
- creator=dict(),
- expire=dict(type='int'),
- expire_on_resolve=dict(type='bool'),
- reason=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),
state=dict(default='present', choices=['present', 'absent']),
subscription=dict(required=True),
- url=dict(default='http://127.0.01:4567'),
+ url=dict(required=False, default='http://127.0.01:4567'),
),
supports_check_mode=True
)
diff --git a/plugins/modules/sensu_subscription.py b/plugins/modules/sensu_subscription.py
index 90e13004bb..da5c50d42f 100644
--- a/plugins/modules/sensu_subscription.py
+++ b/plugins/modules/sensu_subscription.py
@@ -60,7 +60,7 @@ reasons:
description: The reasons why the module changed or did not change something.
returned: success
type: list
- sample: ["channel subscription was absent and state is 'present'"]
+ sample: ["channel subscription was absent and state is `present'"]
"""
EXAMPLES = r"""
@@ -89,7 +89,7 @@ def sensu_subscription(module, path, name, state='present', backup=False):
except IOError as e:
if e.errno == 2: # File not found, non-fatal
if state == 'absent':
- reasons.append("file did not exist and state is 'absent'")
+ reasons.append('file did not exist and state is `absent\'')
return changed, reasons
config = {}
else:
@@ -100,32 +100,32 @@ def sensu_subscription(module, path, name, state='present', backup=False):
if 'client' not in config:
if state == 'absent':
- reasons.append("'client' did not exist and state is 'absent'")
+ reasons.append('`client\' did not exist and state is `absent\'')
return changed, reasons
config['client'] = {}
changed = True
- reasons.append("'client' did not exist")
+ reasons.append('`client\' did not exist')
if 'subscriptions' not in config['client']:
if state == 'absent':
- reasons.append("'client.subscriptions' did not exist and state is 'absent'")
+ reasons.append('`client.subscriptions\' did not exist and state is `absent\'')
return changed, reasons
config['client']['subscriptions'] = []
changed = True
- reasons.append("'client.subscriptions' did not exist")
+ reasons.append('`client.subscriptions\' did not exist')
if name not in config['client']['subscriptions']:
if state == 'absent':
- reasons.append("channel subscription was absent")
+ reasons.append('channel subscription was absent')
return changed, reasons
config['client']['subscriptions'].append(name)
changed = True
- reasons.append("channel subscription was absent and state is 'present'")
+ reasons.append('channel subscription was absent and state is `present\'')
else:
if state == 'absent':
config['client']['subscriptions'].remove(name)
changed = True
- reasons.append("channel subscription was present and state is 'absent'")
+ reasons.append('channel subscription was present and state is `absent\'')
if changed and not module.check_mode:
if backup:
diff --git a/plugins/modules/serverless.py b/plugins/modules/serverless.py
index 8bba307440..937f7dcdea 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 are built, but no stack update is run to send them out.
+ - When this option is V(false) all the functions will be built, but no stack update will be 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/sl_vm.py b/plugins/modules/sl_vm.py
index 8b199f5698..31ec12db02 100644
--- a/plugins/modules/sl_vm.py
+++ b/plugins/modules/sl_vm.py
@@ -173,16 +173,8 @@ options:
type: int
requirements:
- softlayer >= 4.1.1
-notes:
- - If using Python 2.7, you must install C(softlayer-python<=5.7.2).
- - If using Python 3.6, you must install C(softlayer-python<=6.0.0).
- - The C(softlayer-python) library, at version 6.2.6 (from Jan 2025), only supports Python version 3.8, 3.9 and 3.10.
author:
- Matt Colton (@mcltn)
-seealso:
- - name: SoftLayer API Python Client
- description: The SoftLayer API Python Client is required for this module.
- link: https://github.com/SoftLayer/softlayer-python
"""
EXAMPLES = r"""
@@ -319,9 +311,9 @@ def create_virtual_instance(module):
return False, None
# Check if OS or Image Template is provided (Can't be both, defaults to OS)
- if module.params.get('os_code') is not None and module.params.get('os_code') != '':
+ if (module.params.get('os_code') is not None and module.params.get('os_code') != ''):
module.params['image_id'] = ''
- elif module.params.get('image_id') is not None and module.params.get('image_id') != '':
+ elif (module.params.get('image_id') is not None and module.params.get('image_id') != ''):
module.params['os_code'] = ''
module.params['disks'] = [] # Blank out disks since it will use the template
else:
diff --git a/plugins/modules/slack.py b/plugins/modules/slack.py
index e009320d85..61ccfbfc9e 100644
--- a/plugins/modules/slack.py
+++ b/plugins/modules/slack.py
@@ -32,24 +32,21 @@ 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 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."
+ - 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.
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 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.'
+ 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. 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.'
- "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."
@@ -59,8 +56,7 @@ 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:
@@ -92,7 +88,7 @@ options:
type: str
description:
- Emoji for the message sender. See Slack documentation for options.
- - If O(icon_emoji) is set, O(icon_url) is not used.
+ - If O(icon_emoji) is set, O(icon_url) will not be used.
link_names:
type: int
description:
@@ -110,8 +106,8 @@ options:
- 'none'
validate_certs:
description:
- - If V(false), SSL certificates are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be validated. This should only be used on personally controlled sites using
+ self-signed certificates.
type: bool
default: true
color:
@@ -141,12 +137,11 @@ 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 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
+ 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.
choices:
- 'always'
- 'never'
@@ -272,10 +267,10 @@ from ansible.module_utils.six.moves.urllib.parse import urlencode
from ansible.module_utils.urls import fetch_url
OLD_SLACK_INCOMING_WEBHOOK = 'https://%s/services/hooks/incoming-webhook?token=%s'
-SLACK_INCOMING_WEBHOOK = 'https://hooks.%s/services/%s'
-SLACK_POSTMESSAGE_WEBAPI = 'https://%s/api/chat.postMessage'
-SLACK_UPDATEMESSAGE_WEBAPI = 'https://%s/api/chat.update'
-SLACK_CONVERSATIONS_HISTORY_WEBAPI = 'https://%s/api/conversations.history'
+SLACK_INCOMING_WEBHOOK = 'https://hooks.slack.com/services/%s'
+SLACK_POSTMESSAGE_WEBAPI = 'https://slack.com/api/chat.postMessage'
+SLACK_UPDATEMESSAGE_WEBAPI = 'https://slack.com/api/chat.update'
+SLACK_CONVERSATIONS_HISTORY_WEBAPI = 'https://slack.com/api/conversations.history'
# Escaping quotes and apostrophes to avoid ending string prematurely in ansible call.
# We do not escape other characters used as Slack metacharacters (e.g. &, <, >).
@@ -377,11 +372,7 @@ def build_payload_for_slack(text, channel, thread_id, username, icon_url, icon_e
return payload
-def validate_slack_domain(domain):
- return (domain if domain in ('slack.com', 'slack-gov.com') else 'slack.com')
-
-
-def get_slack_message(module, domain, token, channel, ts):
+def get_slack_message(module, token, channel, ts):
headers = {
'Content-Type': 'application/json; charset=UTF-8',
'Accept': 'application/json',
@@ -393,8 +384,7 @@ def get_slack_message(module, domain, token, channel, ts):
'limit': 1,
'inclusive': 'true',
})
- domain = validate_slack_domain(domain)
- url = (SLACK_CONVERSATIONS_HISTORY_WEBAPI % domain) + '?' + qs
+ url = SLACK_CONVERSATIONS_HISTORY_WEBAPI + '?' + qs
response, info = fetch_url(module=module, url=url, headers=headers, method='GET')
if info['status'] != 200:
module.fail_json(msg="failed to get slack message")
@@ -412,11 +402,9 @@ def do_notify_slack(module, domain, token, payload):
use_webapi = False
if token.count('/') >= 2:
# New style webhook token
- domain = validate_slack_domain(domain)
- slack_uri = SLACK_INCOMING_WEBHOOK % (domain, token)
+ slack_uri = SLACK_INCOMING_WEBHOOK % token
elif re.match(r'^xox[abp]-\S+$', token):
- domain = validate_slack_domain(domain)
- slack_uri = (SLACK_UPDATEMESSAGE_WEBAPI if 'ts' in payload else SLACK_POSTMESSAGE_WEBAPI) % domain
+ slack_uri = SLACK_UPDATEMESSAGE_WEBAPI if 'ts' in payload else SLACK_POSTMESSAGE_WEBAPI
use_webapi = True
else:
if not domain:
@@ -438,7 +426,7 @@ def do_notify_slack(module, domain, token, payload):
if use_webapi:
obscured_incoming_webhook = slack_uri
else:
- obscured_incoming_webhook = SLACK_INCOMING_WEBHOOK % (domain, '[obscured]')
+ obscured_incoming_webhook = SLACK_INCOMING_WEBHOOK % '[obscured]'
module.fail_json(msg=" failed to send %s to %s: %s" % (data, obscured_incoming_webhook, info['msg']))
# each API requires different handling
@@ -506,7 +494,7 @@ def main():
# if updating an existing message, we can check if there's anything to update
if message_id is not None:
changed = False
- msg = get_slack_message(module, domain, token, channel, message_id)
+ msg = get_slack_message(module, token, channel, message_id)
for key in ('icon_url', 'icon_emoji', 'link_names', 'color', 'attachments', 'blocks'):
if msg.get(key) != module.params.get(key):
changed = True
diff --git a/plugins/modules/smartos_image_info.py b/plugins/modules/smartos_image_info.py
index 89c00f5c26..19ad740b72 100644
--- a/plugins/modules/smartos_image_info.py
+++ b/plugins/modules/smartos_image_info.py
@@ -47,20 +47,12 @@ 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 fd424e0dd9..3ffe9642fa 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 uses 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 will use 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 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).
+ - 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).
- 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 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).
+ - 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).
- 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 17c7bbd032..a87e1d33a1 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 are inserted to the C(ansible_facts) key.
+ - Retrieve facts for a device using SNMP, the facts will be 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 431e0cb31d..31e7919c08 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 is created. This is required when the zone is created, but not used otherwise.
+ - The path where the zone will be 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 does not have a password.
+ - The password hash for the root account. If not specified, the zone's root account will not have a password.
type: str
config:
description:
diff --git a/plugins/modules/sorcery.py b/plugins/modules/sorcery.py
index de50741185..fff3f55e07 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) updates or rebuilds the whole system respectively.
+ - Special value V(*) in conjunction with states V(latest) or V(rebuild) will update or rebuild 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(*) pulls grimoire from the official location.
+ - Special value V(*) will pull 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(aliases=['spell', 'grimoire'], type='list', elements='str'),
- repository=dict(type='str'),
+ name=dict(default=None, aliases=['spell', 'grimoire'], type='list', elements='str'),
+ repository=dict(default=None, type='str'),
state=dict(default='present', choices=['present', 'latest',
'absent', 'cast', 'dispelled', 'rebuild']),
- depends=dict(),
+ depends=dict(default=None),
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 54cddbffb0..8bf4aa41b5 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 is resolved to the IP address.
+ - If a hostname is given, it will be resolved to the IP address.
community:
type: str
description:
@@ -69,13 +69,13 @@ options:
- Oneclick user password.
use_proxy:
description:
- - If V(false), it does not use a proxy, even if one is defined in an environment variable on the target hosts.
+ - If V(false), it will 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 are not validated. This should only be used on personally controlled sites using self-signed
- certificates.
+ - If V(false), SSL certificates will not be 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 are created inside the I(Universe) container of the specified landscape.
- - All the operations are performed only on the specified landscape.
+ - 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.
"""
EXAMPLES = r"""
@@ -119,12 +119,7 @@ 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 53cae10b74..9c9fba4deb 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 does not use a proxy, even if one is defined in an environment variable on the target hosts.
+ - If V(false), it will 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 always work.
+ - Hex IDs are the direct identifiers in Spectrum and will always work.
- 'To lookup hex IDs go to the UI: Locator -> Devices -> By Model Name -> -> Attributes tab.'
type: str
required: true
@@ -123,9 +123,7 @@ 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 759a094626..9aa14afd8d 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 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 = ).
+ 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
+ = ).
- 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 tries to obtain it, in that order, from environment variable E(SPOTINST_TOKEN), or
- from the credentials path.
+ - 'When not specified, the module will try to obtain it, in that order, from: environment variable E(SPOTINST_TOKEN),
+ or from the credentials path.'
type: str
availability_vs_cost:
@@ -82,7 +82,8 @@ options:
ebs_optimized:
description:
- - Enable EBS optimization for supported instances which are not enabled by default. Note - additional charges are applied.
+ - Enable EBS optimization for supported instances which are not enabled by default.; Note - additional charges will
+ be applied.
type: bool
ebs_volume_pool:
@@ -105,7 +106,7 @@ options:
fallback_to_od:
description:
- - In case of no spots available, Elastigroup launches an On-demand instance instead.
+ - In case of no spots available, Elastigroup will launch an On-demand instance instead.
type: bool
health_check_grace_period:
@@ -139,15 +140,15 @@ options:
id:
description:
- - 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,
+ - 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,
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 is be
- returned.
+ - The image ID used to launch the instance.; In case of conflict between Instance type and image type, an error will
+ be returned.
required: true
type: str
@@ -213,13 +214,13 @@ options:
on_demand_count:
description:
- Required if risk is not set.
- - Number of on demand instances to launch. All other instances are spot instances.; Either set this parameter or the
- O(risk) parameter.
+ - Number of on demand instances to launch. All other instances will be spot instances.; Either set this parameter or
+ the risk parameter.
type: int
on_demand_instance_type:
description:
- - On-demand instance type that is provisioned.
+ - On-demand instance type that will be provisioned.
type: str
opsworks:
@@ -277,7 +278,7 @@ options:
security_group_ids:
description:
- One or more security group IDs.
- - In case of update it overrides the existing Security Group with the new given array.
+ - In case of update it will override the existing Security Group with the new given array.
required: true
type: list
elements: str
@@ -301,7 +302,7 @@ options:
spot_instance_types:
description:
- - Spot instance type that is provisioned.
+ - Spot instance type that will be provisioned.
required: true
type: list
elements: str
@@ -387,7 +388,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 is created.
+ is set, you must set a group_id in order to update or delete a group, otherwise a group will be created.
default: name
type: str
@@ -398,7 +399,7 @@ options:
utilize_reserved_instances:
description:
- - In case of any available Reserved Instances, Elastigroup utilizes your reservations before purchasing Spot instances.
+ - In case of any available Reserved Instances, Elastigroup will utilize 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 0869d67d84..c9c9b4bd90 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 resides.
+ - Specifies the name of the domain in which the object will reside.
type: str
growth_increment:
description:
@@ -46,12 +46,11 @@ 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 6a83095f37..07637e8003 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.
- - It can be an actual address on the internet or an alias that connects to the value of O(hostname).
+ - Can be an actual address on the internet or an alias that will connect 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 is used when connecting to this host.
+ - The path to an identity file (SSH private key) that will be 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:
- - Allows specifying arbitrary SSH config entry options using a dictionary.
+ - Provides the option to specify arbitrary SSH config entry options via 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
@@ -162,15 +162,6 @@ EXAMPLES = r"""
other_options:
serveraliveinterval: '30'
-- name: Add SSH config with key auto-added to agent
- community.general.ssh_config:
- user: devops
- host: "example.com"
- hostname: "staging.example.com"
- identity_file: "/home/devops/.ssh/id_rsa"
- add_keys_to_agent: true
- state: present
-
- name: Delete a host from the configuration
community.general.ssh_config:
ssh_config_file: "{{ ssh_config_test }}"
@@ -198,27 +189,22 @@ 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
@@ -390,7 +376,7 @@ class SSHConfig(object):
def main():
module = AnsibleModule(
argument_spec=dict(
- group=dict(type='str'),
+ group=dict(default=None, type='str'),
host=dict(type='str', required=True),
hostname=dict(type='str'),
host_key_algorithms=dict(type='str', no_log=False),
@@ -398,20 +384,24 @@ def main():
identities_only=dict(type='bool'),
other_options=dict(type='dict'),
port=dict(type='str'),
- proxycommand=dict(type='str'),
- proxyjump=dict(type='str'),
+ proxycommand=dict(type='str', default=None),
+ proxyjump=dict(type='str', default=None),
forward_agent=dict(type='bool'),
add_keys_to_agent=dict(type='bool'),
remote_user=dict(type='str'),
- ssh_config_file=dict(type='path'),
+ ssh_config_file=dict(default=None, type='path'),
state=dict(type='str', default='present', choices=['present', 'absent']),
- 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'),
+ 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),
dynamicforward=dict(type='str'),
- user=dict(type='str'),
- user_known_hosts_file=dict(type='str'),
+ user=dict(default=None, type='str'),
+ user_known_hosts_file=dict(type='str', default=None),
),
supports_check_mode=True,
mutually_exclusive=[
diff --git a/plugins/modules/stacki_host.py b/plugins/modules/stacki_host.py
index 095e0b7256..bfa4cccff5 100644
--- a/plugins/modules/stacki_host.py
+++ b/plugins/modules/stacki_host.py
@@ -119,6 +119,25 @@ 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 c823a286c5..9928267bde 100644
--- a/plugins/modules/statusio_maintenance.py
+++ b/plugins/modules/statusio_maintenance.py
@@ -111,7 +111,7 @@ options:
minutes:
type: int
description:
- - The duration of the maintenance window (starting from playbook runtime).
+ - The length of time in UTC that the maintenance will run (starting from playbook runtime).
default: 10
start_date:
type: str
@@ -344,22 +344,30 @@ def main():
api_id=dict(required=True),
api_key=dict(required=True, no_log=True),
statuspage=dict(required=True),
- 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()
+ 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)
),
supports_check_mode=True,
)
diff --git a/plugins/modules/sudoers.py b/plugins/modules/sudoers.py
index f353859a98..ac1ff91ff5 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 is used for the filename for the sudoers file managed by this rule.
+ - This will be 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 not required when command is run with sudo.
+ - Whether a password is 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) runs as.
+ - Specify the target user the command(s) will run as.
type: str
version_added: 4.7.0
sudoers_path:
description:
- - The path which sudoers config files are managed in.
+ - The path which sudoers config files will be managed in.
default: /etc/sudoers.d
type: str
state:
@@ -92,9 +92,9 @@ options:
type: str
validation:
description:
- - 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.
+ - 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.
type: str
default: detect
choices: [absent, detect, required]
diff --git a/plugins/modules/supervisorctl.py b/plugins/modules/supervisorctl.py
index c2ceb1a52b..7df1674fea 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 is taken as group name when it ends with a colon V(:).
- - If O(name=all), all programs and program groups are managed.
+ - 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.
required: true
config:
type: path
@@ -67,11 +67,12 @@ options:
description:
- Path to C(supervisorctl) executable.
notes:
- - 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).
+ - 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).
requirements: ["supervisorctl"]
author:
- "Matt Wright (@mattupstate)"
diff --git a/plugins/modules/svc.py b/plugins/modules/svc.py
index 4a6e21ef5f..42b6bcbeb9 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 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.
+ - 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.
type: str
choices: [killed, once, reloaded, restarted, started, stopped]
downed:
diff --git a/plugins/modules/svr4pkg.py b/plugins/modules/svr4pkg.py
index 76d65c8f43..34aa599e01 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 does not enforce dependencies on install or remove.
+ - Note that this is a very basic packaging system. It will 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(),
- proxy=dict(),
- response_file=dict(),
- zone=dict(default='all', choices=['current', 'all']),
+ src=dict(default=None),
+ proxy=dict(default=None),
+ response_file=dict(default=None),
+ zone=dict(required=False, 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 69ed726aa0..628c63f810 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:
- - Installs, upgrades, and removes packages with C(swdepot) package manager (HP-UX).
+ - Will install, upgrade and remove packages with 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()
+ depot=dict(default=None, required=False)
),
supports_check_mode=True
)
diff --git a/plugins/modules/swupd.py b/plugins/modules/swupd.py
index c01904821c..5b5dbbc48a 100644
--- a/plugins/modules/swupd.py
+++ b/plugins/modules/swupd.py
@@ -96,6 +96,16 @@ 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 7f7dfabd38..dbe4513d34 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',
+ priority=dict(type='str', required=False,
choices=["emerg", "alert", "crit", "err", "warning",
"notice", "info", "debug"],
default='info'),
- facility=dict(type='str',
+ facility=dict(type='str', required=False,
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', default=False)
+ log_pid=dict(type='bool', required=False, default=False)
)
module = AnsibleModule(
diff --git a/plugins/modules/syspatch.py b/plugins/modules/syspatch.py
index f46671fa74..3cedc220f7 100644
--- a/plugins/modules/syspatch.py
+++ b/plugins/modules/syspatch.py
@@ -59,6 +59,20 @@ 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
@@ -89,6 +103,7 @@ 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']
@@ -130,11 +145,11 @@ def syspatch_run(module):
# Kernel update applied
reboot_needed = True
elif out.lower().find('syspatch updated itself') >= 0:
- module.warn('Syspatch was updated. Please run syspatch again.')
+ warnings.append('Syspatch was updated. Please run syspatch again.')
# If no stdout, then warn user
if len(out) == 0:
- module.warn('syspatch had suggested changes, but stdout was empty.')
+ warnings.append('syspatch had suggested changes, but stdout was empty.')
changed = True
else:
@@ -146,6 +161,7 @@ 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 a3e24830a0..dad379d1c0 100644
--- a/plugins/modules/sysrc.py
+++ b/plugins/modules/sysrc.py
@@ -7,7 +7,6 @@
# SPDX-License-Identifier: GPL-3.0-or-later
from __future__ import absolute_import, division, print_function
-
__metaclass__ = type
DOCUMENTATION = r"""
@@ -95,122 +94,165 @@ EXAMPLES = r"""
jail: testjail
"""
+RETURN = r"""
+changed:
+ description: Return changed for sysrc actions.
+ returned: always
+ type: bool
+ sample: true
+"""
-from ansible_collections.community.general.plugins.module_utils.module_helper import StateModuleHelper
-
-import os
+from ansible.module_utils.basic import AnsibleModule
import re
-class Sysrc(StateModuleHelper):
- module = dict(
- argument_spec=dict(
- name=dict(type='str', required=True),
- 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')
- ),
- supports_check_mode=True
- )
- output_params = ('value',)
- use_old_vardict = False
+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 __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")
+ 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
- self.sysrc = self.module.get_bin_path('sysrc', True)
+ 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):
- value = self._get()
- if value is None:
- return False, None
+ def contains(self):
+ (rc, out, err) = self.run_sysrc('-n', self.name)
+ if self.has_unknown_variable(out, err):
+ return False
- value = value.split(self.vars.delim)
+ return self.value in out.strip().split(self.delim)
- return self.vars.value in value, value
+ def present(self):
+ if self.exists():
+ return
- def _get(self):
- if not os.path.exists(self.vars.path):
- return None
+ if not self.module.check_mode:
+ (rc, out, err) = self.run_sysrc("%s=%s" % (self.name, self.value))
- (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
+ self.changed = True
- if out.startswith(self.vars.path):
- return out.split(':', 1)[1].strip()
+ def absent(self):
+ if not self.exists():
+ return
- return None
+ # 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
- 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))
+ self.changed = True
- return False
+ def value_present(self):
+ if self.contains():
+ return
- def _sysrc(self, *args):
- cmd = [self.sysrc, '-f', self.vars.path]
- if self.vars.jail:
- cmd += ['-j', self.vars.jail]
+ 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)
- 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)
+ return (rc, out, err)
def main():
- Sysrc.execute()
+ module = AnsibleModule(
+ argument_spec=dict(
+ name=dict(type='str', required=True),
+ value=dict(type='str', default=None),
+ 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),
+ ),
+ supports_check_mode=True,
+ )
+
+ 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"
+ )
+
+ 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
+ )
+
+ rc_value = Sysrc(module, name, value, path, delim, jail)
+
+ 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()
+
+ result['changed'] = rc_value.changed
+
+ module.exit_json(**result)
if __name__ == '__main__':
diff --git a/plugins/modules/systemd_creds_decrypt.py b/plugins/modules/systemd_creds_decrypt.py
index c896737a93..fbe80f2f16 100644
--- a/plugins/modules/systemd_creds_decrypt.py
+++ b/plugins/modules/systemd_creds_decrypt.py
@@ -100,12 +100,16 @@ def main():
"""Decrypt secret using systemd-creds."""
module = AnsibleModule(
argument_spec=dict(
- name=dict(type="str"),
- newline=dict(type="bool", default=False),
+ name=dict(type="str", required=False),
+ newline=dict(type="bool", required=False, default=False),
secret=dict(type="str", required=True, no_log=True),
- timestamp=dict(type="str"),
- transcode=dict(type="str", choices=["base64", "unbase64", "hex", "unhex"]),
- user=dict(type="str"),
+ timestamp=dict(type="str", required=False),
+ transcode=dict(
+ type="str",
+ choices=["base64", "unbase64", "hex", "unhex"],
+ required=False,
+ ),
+ user=dict(type="str", required=False),
),
supports_check_mode=True,
)
diff --git a/plugins/modules/systemd_creds_encrypt.py b/plugins/modules/systemd_creds_encrypt.py
index 2c4912427e..6f6e635416 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"),
- not_after=dict(type="str"),
+ name=dict(type="str", required=False),
+ not_after=dict(type="str", required=False),
pretty=dict(type="bool", default=False),
secret=dict(type="str", required=True, no_log=True),
- timestamp=dict(type="str"),
- user=dict(type="str"),
+ timestamp=dict(type="str", required=False),
+ user=dict(type="str", required=False),
),
supports_check_mode=True,
)
diff --git a/plugins/modules/systemd_info.py b/plugins/modules/systemd_info.py
index 12f308849c..139365856d 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 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.
+ - 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.
- 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 are returned depending on the value of O(extra_properties).
+ - Additional fields will be returned depending on the value of O(extra_properties).
returned: success
type: dict
elements: dict
@@ -116,8 +116,7 @@ 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 d247e9d74c..cb9eb08226 100644
--- a/plugins/modules/sysupgrade.py
+++ b/plugins/modules/sysupgrade.py
@@ -25,7 +25,7 @@ options:
snapshot:
description:
- Apply the latest snapshot.
- - Otherwise release is applied.
+ - Otherwise release will be applied.
default: false
type: bool
force:
@@ -36,13 +36,14 @@ options:
keep_files:
description:
- Keep the files under C(/home/_sysupgrade).
- - By default, the files are deleted after the upgrade.
+ - By default, the files will be 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 causes the module to fail. See the examples.
+ - 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.
default: true
type: bool
installurl:
@@ -78,6 +79,21 @@ 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
@@ -86,6 +102,7 @@ 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']:
@@ -121,6 +138,7 @@ 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 d7f8824c95..e614b235ec 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', default="https://api.taiga.io"),
+ taiga_host=dict(type='str', required=False, 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', 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'),
+ 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'),
),
supports_check_mode=True
)
diff --git a/plugins/modules/telegram.py b/plugins/modules/telegram.py
index abaa72c83e..6773f48bf5 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 need a telegram account and create telegram bot to use this module.
+ - You will require 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 a5adbcbe7e..dd34ba9a0e 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 V(true), the O(workspace) is deleted after the C(terraform destroy) action.
- - If O(workspace=default) then it is not deleted.
+ - If true, the workspace will be deleted after the "terraform destroy" action.
+ - The 'default' workspace will not be deleted.
default: false
type: bool
plan_file:
description:
- - 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).
+ - 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.
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)
- is used.
+ will be 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 are visible in the log output. Make sure to use C(no_log=true) in production!.
+ - B(Note) passwords passed as variables will be 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 are also auto-include
+ - A list of specific resources to target in this plan/application. The resources selected here will 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 forces a C(terraform init). Generally, this should
+ - To avoid duplicating infra, if a state file cannot be found this will force 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,6 +272,11 @@ 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 6e105c0bad..37eb2f94a6 100644
--- a/plugins/modules/timezone.py
+++ b/plugins/modules/timezone.py
@@ -57,6 +57,20 @@ 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 4d9dd6ac19..09169075a1 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(),
+ media_url=dict(default=None, required=False),
),
supports_check_mode=True
)
diff --git a/plugins/modules/typetalk.py b/plugins/modules/typetalk.py
index 8728bfb21a..505c1a4abd 100644
--- a/plugins/modules/typetalk.py
+++ b/plugins/modules/typetalk.py
@@ -14,10 +14,6 @@ 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/urpmi.py b/plugins/modules/urpmi.py
index 454921eaf3..5760a4829f 100644
--- a/plugins/modules/urpmi.py
+++ b/plugins/modules/urpmi.py
@@ -184,7 +184,7 @@ def install_packages(module, pkgspec, root, force=True, no_recommends=True):
def root_option(root):
- if root:
+ if (root):
return "--root=%s" % (root)
else:
return ""
diff --git a/plugins/modules/utm_aaa_group.py b/plugins/modules/utm_aaa_group.py
index d1444b5bd7..b29f3d50af 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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', default=[]),
- adirectory_groups_sids=dict(type='dict', default={}),
- backend_match=dict(type='str', default="none",
+ 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",
choices=["none", "adirectory", "edirectory", "radius", "tacacs", "ldap"]),
- 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=[]),
+ 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=[]),
)
)
try:
diff --git a/plugins/modules/utm_aaa_group_info.py b/plugins/modules/utm_aaa_group_info.py
index ee0d1c1234..91fe8ce930 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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 1e6fa1c713..b67531c061 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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'),
- encrypted=dict(type='bool', default=False),
- key=dict(type='str', no_log=True),
+ comment=dict(type='str', required=False),
+ encrypted=dict(type='bool', required=False, default=False),
+ key=dict(type='str', required=False, 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 a0fcb97146..cab6657ab6 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 that identifies the entry.
+ - The name of the object. Will be used to identify the entry.
required: true
extends_documentation_fragment:
diff --git a/plugins/modules/utm_dns_host.py b/plugins/modules/utm_dns_host.py
index e1a63e1f73..2eb404b38c 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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 is attempted.
+ description: The timeout until a new resolving will be attempted.
type: int
"""
@@ -144,14 +144,14 @@ def main():
module = UTMModule(
argument_spec=dict(
name=dict(type='str', required=True),
- 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),
+ 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),
)
)
try:
diff --git a/plugins/modules/utm_network_interface_address.py b/plugins/modules/utm_network_interface_address.py
index 7212897655..1e3d2ee5c3 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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', default=""),
- address6=dict(type='str'),
- resolved=dict(type='bool'),
- resolved6=dict(type='bool'),
+ 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),
)
)
try:
diff --git a/plugins/modules/utm_network_interface_address_info.py b/plugins/modules/utm_network_interface_address_info.py
index a5b3ff7b3b..b9c394c848 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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 96ae3aa869..207c4ba156 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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', 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),
+ 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),
frontend_session_lifetime=dict(type='int', required=True),
- frontend_session_lifetime_limited=dict(type='bool', default=True),
- frontend_session_lifetime_scope=dict(type='str', default="hours", choices=['days', 'hours', 'minutes']),
+ 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_timeout=dict(type='int', required=True),
- 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)
+ 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)
)
)
try:
diff --git a/plugins/modules/utm_proxy_exception.py b/plugins/modules/utm_proxy_exception.py
index 174156394c..96cb592e59 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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', 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),
+ 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),
)
)
try:
diff --git a/plugins/modules/utm_proxy_frontend.py b/plugins/modules/utm_proxy_frontend.py
index 5330311516..09f0cdd4bc 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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', 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",
+ 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",
choices=['bybusyness', 'bytraffic', 'byrequests', '']),
- 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),
+ 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),
)
)
try:
diff --git a/plugins/modules/utm_proxy_frontend_info.py b/plugins/modules/utm_proxy_frontend_info.py
index 859ee67de1..722e2621a2 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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 15b89bb1a2..95ee210e97 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 that identifies the entry.
+ - The name of the object. Will be used to identify 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', 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),
+ 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),
)
)
try:
diff --git a/plugins/modules/utm_proxy_location_info.py b/plugins/modules/utm_proxy_location_info.py
index 7a8db919c2..0512d4be15 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 that identifies the entry.
+ - The name of the object. Will be used to identify the entry.
required: true
extends_documentation_fragment:
diff --git a/plugins/modules/vdo.py b/plugins/modules/vdo.py
index dbfa44f5b6..a176e038eb 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 does
- not start on system startup. However, on initial creation, a VDO volume with O(activated=false) is set to 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 will
+ not start on system startup. However, on initial creation, a VDO volume with "activated" set to "off" will 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 d97fbf5ed4..39ed27dc2d 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(),
- db=dict(),
+ value=dict(default=None),
+ db=dict(default=None),
cluster=dict(default='localhost'),
port=dict(default='5433'),
login_user=dict(default='dbadmin'),
- login_password=dict(no_log=True),
+ login_password=dict(default=None, 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 340e782f31..29f8669c27 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(),
+ db=dict(default=None),
login_user=dict(default='dbadmin'),
- login_password=dict(no_log=True),
+ login_password=dict(default=None, 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 550c612b8d..d814aca273 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(aliases=['assigned_role']),
+ assigned_roles=dict(default=None, 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 fc7504fba5..8808eeea11 100644
--- a/plugins/modules/vmadm.py
+++ b/plugins/modules/vmadm.py
@@ -107,8 +107,7 @@ 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/xattr.py b/plugins/modules/xattr.py
index cbd9dcc05c..fe48ce2eef 100644
--- a/plugins/modules/xattr.py
+++ b/plugins/modules/xattr.py
@@ -209,7 +209,7 @@ def main():
not (namespace == 'user' and key.startswith('user.'))):
key = '%s.%s' % (namespace, key)
- if state == 'present' or value is not None:
+ if (state == 'present' or value is not None):
current = get_xattr(module, path, key, follow)
if current is None or key not in current or value != current[key]:
if not module.check_mode:
diff --git a/plugins/modules/xbps.py b/plugins/modules/xbps.py
index dc9d131bd7..3087e4d79d 100644
--- a/plugins/modules/xbps.py
+++ b/plugins/modules/xbps.py
@@ -363,7 +363,7 @@ def main():
module = AnsibleModule(
argument_spec=dict(
- name=dict(aliases=['pkg', 'package'], type='list', elements='str'),
+ name=dict(default=None, 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 9dbbe8016f..8e5cbf7d3e 100644
--- a/plugins/modules/xcc_redfish_command.py
+++ b/plugins/modules/xcc_redfish_command.py
@@ -273,34 +273,33 @@ 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 cf297187a4..7974420a8d 100644
--- a/plugins/modules/xdg_mime.py
+++ b/plugins/modules/xdg_mime.py
@@ -31,15 +31,16 @@ attributes:
options:
mime_types:
description:
- - One or more MIME types for which a default handler is set.
+ - One or more MIME types for which a default handler will be 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 44f9192b7e..da1f5439d0 100644
--- a/plugins/modules/xenserver_guest.py
+++ b/plugins/modules/xenserver_guest.py
@@ -394,143 +394,141 @@ instance:
description: Metadata about the VM.
returned: always
type: dict
- sample:
- {
- "cdrom": {
- "type": "none"
+ 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"
},
- "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": ""
+ {
+ "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": ""
}
+ }
changes:
description: Detected or made changes to VM.
returned: always
type: list
- sample:
- [
- {
- "hardware": [
- "num_cpus"
+ sample: [
+ {
+ "hardware": [
+ "num_cpus"
+ ]
+ },
+ {
+ "disks_changed": [
+ [],
+ [
+ "size"
]
- },
- {
- "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"
- ]
+ ]
+ },
+ {
+ "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/xfconf.py b/plugins/modules/xfconf.py
index 1cae7fb12b..a63ada665f 100644
--- a/plugins/modules/xfconf.py
+++ b/plugins/modules/xfconf.py
@@ -178,7 +178,7 @@ class XFConfProperty(StateModuleHelper):
output_params = ('property', 'channel', 'value')
module = dict(
argument_spec=dict(
- state=dict(type='str', choices=('present', 'absent'), default='present'),
+ state=dict(type='str', choices=("present", "absent"), default="present"),
channel=dict(type='str', required=True),
property=dict(type='str', required=True),
value_type=dict(type='list', elements='str',
@@ -191,6 +191,8 @@ class XFConfProperty(StateModuleHelper):
supports_check_mode=True,
)
+ default_state = 'present'
+
def __init_module__(self):
self.runner = xfconf_runner(self.module)
self.vars.version = get_xfconf_version(self.runner)
@@ -206,8 +208,8 @@ class XFConfProperty(StateModuleHelper):
self.do_raise('xfconf-query failed with error (rc={0}): {1}'.format(rc, err))
result = out.rstrip()
- if 'Value is an array with' in result:
- result = result.split('\n')
+ if "Value is an array with" in result:
+ result = result.split("\n")
result.pop(0)
result.pop(0)
@@ -223,7 +225,7 @@ class XFConfProperty(StateModuleHelper):
self.vars.stdout = ctx.results_out
self.vars.stderr = ctx.results_err
self.vars.cmd = ctx.cmd
- self.vars.set('run_info', ctx.run_info, verbosity=4)
+ self.vars.set("run_info", ctx.run_info, verbosity=4)
self.vars.value = None
def state_present(self):
@@ -253,7 +255,7 @@ class XFConfProperty(StateModuleHelper):
self.vars.stdout = ctx.results_out
self.vars.stderr = ctx.results_err
self.vars.cmd = ctx.cmd
- self.vars.set('run_info', ctx.run_info, verbosity=4)
+ self.vars.set("run_info", ctx.run_info, verbosity=4)
if not self.vars.is_array:
self.vars.value = self.vars.value[0]
diff --git a/plugins/modules/xml.py b/plugins/modules/xml.py
index 3a41cd8514..ef79cdbfbc 100644
--- a/plugins/modules/xml.py
+++ b/plugins/modules/xml.py
@@ -333,15 +333,12 @@ actions:
description: A dictionary with the original xpath, namespaces and state.
type: dict
returned: success
- sample:
- {
- "xpath": "xpath",
- "namespaces": [
- "namespace1",
- "namespace2"
- ],
- "state": "present"
- }
+ 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~
count:
description: The count of xpath matches.
type: int
@@ -351,6 +348,10 @@ 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
@@ -634,7 +635,7 @@ def check_or_make_target(module, tree, xpath, namespaces):
# module.fail_json(msg="now tree=%s" % etree.tostring(tree, pretty_print=True))
elif eoa == "":
for node in tree.xpath(inner_xpath, namespaces=namespaces):
- if node.text != eoa_value:
+ if (node.text != eoa_value):
node.text = eoa_value
changed = True
diff --git a/plugins/modules/yarn.py b/plugins/modules/yarn.py
index 75b624e9d2..553e789e89 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(),
- path=dict(type='path'),
- version=dict(),
+ name=dict(default=None),
+ path=dict(default=None, type='path'),
+ version=dict(default=None),
production=dict(default=False, type='bool'),
- executable=dict(type='path'),
- registry=dict(),
+ executable=dict(default=None, type='path'),
+ registry=dict(default=None),
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 183ffdc6fe..9982700928 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 3cce255415..0de563078c 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 a9e3bf5257..8ed359d32e 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(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'),
+ 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'),
),
supports_check_mode=True
)
diff --git a/plugins/modules/zypper_repository.py b/plugins/modules/zypper_repository.py
index e6beeca9a4..17de63bb6d 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):
+def addmodify_repo(module, repodata, old_repos, zypper_version, warnings):
"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):
if zypper_version >= LooseVersion('1.12.25'):
cmd.extend(['--priority', str(repodata['priority'])])
else:
- module.warn("Setting priority only available for zypper >= 1.12.25. Ignoring priority argument.")
+ warnings.append("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):
else:
cmd.append('--no-gpgcheck')
else:
- module.warn("Enabling/disabling gpgcheck only available for zypper >= 1.6.2. Using zypper default value.")
+ warnings.append("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(),
- repo=dict(),
+ name=dict(required=False),
+ repo=dict(required=False),
state=dict(choices=['present', 'absent'], default='present'),
- 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'),
+ 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'),
),
supports_check_mode=False,
required_one_of=[['state', 'runrefresh']],
@@ -350,6 +350,7 @@ def main():
runrefresh = module.params['runrefresh']
zypper_version = get_zypper_version(module)
+ warnings = [] # collect warning messages for final output
repodata = {
'url': repo,
@@ -459,7 +460,7 @@ def main():
if runrefresh:
runrefreshrepo(module, auto_import_keys, shortname)
exit_unchanged()
- rc, stdout, stderr = addmodify_repo(module, repodata, old_repos, zypper_version)
+ rc, stdout, stderr = addmodify_repo(module, repodata, old_repos, zypper_version, warnings)
if rc == 0 and (runrefresh or auto_import_keys):
runrefreshrepo(module, auto_import_keys, shortname)
elif state == 'absent':
@@ -468,9 +469,9 @@ def main():
rc, stdout, stderr = remove_repo(module, shortname)
if rc == 0:
- module.exit_json(changed=True, repodata=repodata, state=state)
+ module.exit_json(changed=True, repodata=repodata, state=state, warnings=warnings)
else:
- module.fail_json(msg="Zypper failed with rc %s" % rc, rc=rc, stdout=stdout, stderr=stderr, repodata=repodata, state=state)
+ module.fail_json(msg="Zypper failed with rc %s" % rc, rc=rc, stdout=stdout, stderr=stderr, repodata=repodata, state=state, warnings=warnings)
if __name__ == '__main__':
diff --git a/tests/integration/targets/android_sdk/tasks/setup.yml b/tests/integration/targets/android_sdk/tasks/setup.yml
index 9965403367..8ded283533 100644
--- a/tests/integration/targets/android_sdk/tasks/setup.yml
+++ b/tests/integration/targets/android_sdk/tasks/setup.yml
@@ -15,7 +15,6 @@
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
deleted file mode 100644
index e48443f0b5..0000000000
--- a/tests/integration/targets/android_sdk/vars/Fedora.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
-
-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
deleted file mode 100644
index e48443f0b5..0000000000
--- a/tests/integration/targets/android_sdk/vars/RedHat-9.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
-
-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 88e063fe92..5bf66db9fb 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 is failed
+ - "{{ item.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 b8e0e2efbe..0e1b0ae429 100644
--- a/tests/integration/targets/apk/tasks/main.yml
+++ b/tests/integration/targets/apk/tasks/main.yml
@@ -158,64 +158,3 @@
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 f1d0c65a5d..9520ac5d55 100644
--- a/tests/integration/targets/callback_diy/tasks/main.yml
+++ b/tests/integration/targets/callback_diy/tasks/main.yml
@@ -443,63 +443,3 @@
- ""
- "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/callback_tasks_only/aliases b/tests/integration/targets/callback_tasks_only/aliases
deleted file mode 100644
index 3e2dd244c1..0000000000
--- a/tests/integration/targets/callback_tasks_only/aliases
+++ /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
-
-azp/posix/3
-needs/target/callback
diff --git a/tests/integration/targets/callback_tasks_only/tasks/main.yml b/tests/integration/targets/callback_tasks_only/tasks/main.yml
deleted file mode 100644
index b02ddc8efc..0000000000
--- a/tests/integration/targets/callback_tasks_only/tasks/main.yml
+++ /dev/null
@@ -1,79 +0,0 @@
----
-####################################################################
-# WARNING: These are designed specifically for Ansible tests #
-# and should not be used as examples of how to write Ansible roles #
-####################################################################
-
-# 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
-
-- block:
- - name: Create temporary file
- tempfile:
- register: tempfile
-
- - name: Run tests
- include_role:
- name: callback
- vars:
- tests:
- - name: Simple test
- environment:
- ANSIBLE_NOCOLOR: 'true'
- ANSIBLE_FORCE_COLOR: 'false'
- ANSIBLE_PYTHON_INTERPRETER: "{{ ansible_python_interpreter }}"
- ANSIBLE_STDOUT_CALLBACK: community.general.tasks_only
- playbook: |
- - hosts: testhost
- gather_facts: true
- tasks:
- - name: Create file
- copy:
- dest: "{{ tempfile.path }}"
- content: |
- Foo bar
-
- - name: Modify file
- copy:
- dest: "{{ tempfile.path }}"
- content: |
- Foo bar
- Bar baz bam!
- expected_output:
- - ""
- - "TASK [Gathering Facts] *********************************************************"
- - "ok: [testhost]"
- - ""
- - "TASK [Create file] *************************************************************"
- - "changed: [testhost]"
- - ""
- - "TASK [Modify file] *************************************************************"
- - "changed: [testhost]"
- - name: Different column width
- environment:
- ANSIBLE_NOCOLOR: 'true'
- ANSIBLE_FORCE_COLOR: 'false'
- ANSIBLE_PYTHON_INTERPRETER: "{{ ansible_python_interpreter }}"
- ANSIBLE_STDOUT_CALLBACK: community.general.tasks_only
- ANSIBLE_COLLECTIONS_TASKS_ONLY_NUMBER_OF_COLUMNS: 40
- playbook: |
- - hosts: testhost
- gather_facts: false
- tasks:
- - name: A task
- debug:
- msg: Test.
- expected_output:
- - ""
- - "TASK [A task] ***************************"
- - "ok: [testhost] => {"
- - ' "msg": "Test."'
- - "}"
-
-
- always:
- - name: Clean up temp file
- file:
- path: "{{ tempfile.path }}"
- state: absent
diff --git a/tests/integration/targets/cronvar/tasks/main.yml b/tests/integration/targets/cronvar/tasks/main.yml
index 0d3ae30daf..73ec41abca 100644
--- a/tests/integration/targets/cronvar/tasks/main.yml
+++ b/tests/integration/targets/cronvar/tasks/main.yml
@@ -122,36 +122,3 @@
- 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 4afd39e7b3..9a7bbe499f 100644
--- a/tests/integration/targets/decompress/tasks/dest.yml
+++ b/tests/integration/targets/decompress/tasks/dest.yml
@@ -34,8 +34,7 @@
- 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 c14251f85e..a742f24fea 100644
--- a/tests/integration/targets/django_command/aliases
+++ b/tests/integration/targets/django_command/aliases
@@ -20,5 +20,4 @@ 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 c14251f85e..a742f24fea 100644
--- a/tests/integration/targets/django_manage/aliases
+++ b/tests/integration/targets/django_manage/aliases
@@ -20,5 +20,4 @@ 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 978a58095d..62fbc2daba 100644
--- a/tests/integration/targets/filter_jc/aliases
+++ b/tests/integration/targets/filter_jc/aliases
@@ -8,4 +8,3 @@ 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 0195ddb5dd..92db6d876a 100644
--- a/tests/integration/targets/filter_json_query/tasks/main.yml
+++ b/tests/integration/targets/filter_json_query/tasks/main.yml
@@ -11,23 +11,4 @@
- name: Test json_query filter
assert:
that:
- - >-
- 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"
+ - "users | community.general.json_query('[*].hosts[].host') == ['host_a', 'host_b', 'host_c', 'host_d']"
diff --git a/tests/integration/targets/hg/tasks/install.yml b/tests/integration/targets/hg/tasks/install.yml
index efc0549e95..caa2e21512 100644
--- a/tests/integration/targets/hg/tasks/install.yml
+++ b/tests/integration/targets/hg/tasks/install.yml
@@ -26,11 +26,11 @@
shell: apt-get -y update && apt-get -y install mercurial
when: ansible_facts.pkg_mgr == 'apt'
-- name: install mercurial package
+- name: install packages (apk)
package:
name: mercurial
state: present
- when: ansible_facts.pkg_mgr in ['apk', 'community.general.apk', 'pacman', 'community.general.pacman', 'pkgng', 'community.general.pkgng', 'zypper', 'community.general.zypper']
+ when: ansible_facts.pkg_mgr in ['apk', 'community.general.apk']
- name: install mercurial (dnf)
dnf:
@@ -42,6 +42,21 @@
name: mercurial
when: ansible_facts.pkg_mgr == 'yum'
+- name: install mercurial (pacman)
+ package:
+ name: mercurial
+ when: ansible_facts.pkg_mgr in ['pacman', 'community.general.pacman']
+
+- name: install mercurial (pkgng)
+ package:
+ name: mercurial
+ when: ansible_facts.pkg_mgr in ['pkgng', 'community.general.pkgng']
+
+- name: install mercurial (zypper)
+ package:
+ name: mercurial
+ when: ansible_facts.pkg_mgr in ['zypper', 'community.general.zypper']
+
- name: preserve the updated python
command: cp -av "{{ which_python.stdout }}" "{{ which_python.stdout }}.updated"
diff --git a/tests/integration/targets/hg/tasks/main.yml b/tests/integration/targets/hg/tasks/main.yml
index 842f4c6570..8c79d20b86 100644
--- a/tests/integration/targets/hg/tasks/main.yml
+++ b/tests/integration/targets/hg/tasks/main.yml
@@ -14,6 +14,13 @@
register: has_hg
ignore_errors: true
+- name: warn if the underlying system is not capable of running these tests
+ debug:
+ msg: >-
+ The mercurial client is not able to check out Bitbucket repositories as per the changes mentioned here:
+ https://bitbucket.org/blog/deprecating-tlsv1-tlsv1-1-2018-12-01 . Therefore these tests are skipped.
+ when: (ansible_distribution == "Ubuntu" and ansible_distribution_version == "14.04") or ansible_python_version is version("2.7.9", "<")
+
- block:
- name: install mercurial
include_tasks: install.yml
@@ -25,3 +32,14 @@
- name: uninstall mercurial
include_tasks: uninstall.yml
when: has_hg is failed
+
+ # As per the bitbucket changes in https://bitbucket.org/blog/deprecating-tlsv1-tlsv1-1-2018-12-01 , this
+ # test will fail under certain circumstances, to avoid false positives, we skip these tests under the following
+ # circumstances:
+ #
+ # - The ubuntu 14.04 image used on shippable runs python 2.7.6, so we skip explicitly for this image.
+ # - When ansible_python_version is not 2.7.9 or higher, mercurial is likely to also run using this same (old)
+ # python version, which causes issues as per the link above.
+ when:
+ - not (ansible_distribution == "Ubuntu" and ansible_distribution_version == "14.04")
+ - ansible_python_version is version("2.7.9", ">=")
diff --git a/tests/integration/targets/hg/tasks/run-tests.yml b/tests/integration/targets/hg/tasks/run-tests.yml
index 07aa08d225..928b7cb68d 100644
--- a/tests/integration/targets/hg/tasks/run-tests.yml
+++ b/tests/integration/targets/hg/tasks/run-tests.yml
@@ -4,13 +4,17 @@
# 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
-- name: set variables for tests
+
+- name: set where to extract the repo
set_fact:
- repo: "http://hg.code.sf.net/p/cg-hg-test-repo/hgtest"
checkout_dir: "{{ remote_tmp_dir }}/hg_project_test"
+- name: set what repo to use
+ set_fact:
+ repo: "http://hg.pf.osdn.net/view/a/ak/akasurde/hg_project_test"
+
- name: clean out the remote_tmp_dir
- shell: rm -rf "{{ checkout_dir }}"
+ shell: rm -rf {{ remote_tmp_dir }}/*
- name: verify that mercurial is installed so this test can continue
shell: which hg
@@ -21,6 +25,8 @@
dest: "{{ checkout_dir }}"
register: hg_result
+- debug: var=hg_result
+
- shell: ls {{ checkout_dir }}
- name: verify information about the initial clone
@@ -39,20 +45,23 @@
- debug: var=hg_result2
-- name: check if tags exists
+- name: check for tags
stat:
path: "{{ checkout_dir }}/.hgtags"
- register: hg_tags
+ register: tags
- name: check for remotes
stat:
path: "{{ checkout_dir }}/.hg/branch"
register: branches
+- debug: var=tags
+- debug: var=branches
+
- name: assert presence of tags/trunk/branches
assert:
that:
- - "hg_tags.stat.isreg"
+ - "tags.stat.isreg"
- "branches.stat.isreg"
- name: verify on a re-clone things are marked unchanged
@@ -62,7 +71,7 @@
- name: Checkout non-existent repo clone
hg:
- repo: "http://hg.code.sf.net/p/cg-hg-test-repo1"
+ repo: "http://hg.pf.osdn.net/view/a/ak/akasurde/hg_project_test_1"
clone: false
update: false
register: hg_result3
@@ -71,5 +80,6 @@
- name: Verify result of non-existent repo clone
assert:
that:
- - "'abort: HTTP Error' in hg_result3.msg"
+ - hg_result3.msg
+ - "'abort: HTTP Error 404: Not Found' in hg_result3.msg"
- "not hg_result3.changed"
diff --git a/tests/integration/targets/hg/tasks/uninstall.yml b/tests/integration/targets/hg/tasks/uninstall.yml
index 73c50f4909..b2274caf1f 100644
--- a/tests/integration/targets/hg/tasks/uninstall.yml
+++ b/tests/integration/targets/hg/tasks/uninstall.yml
@@ -16,6 +16,12 @@
line: "#!{{ stat_hg_interpreter.stat.path }}"
when: stat_hg_interpreter.stat.islnk
+- name: uninstall packages which were not originally installed (apk)
+ package:
+ name: mercurial
+ state: absent
+ when: ansible_facts.pkg_mgr in ['apk', 'community.general.apk']
+
# using the apt module prevents autoremove from working, so call apt-get via shell instead
- name: uninstall packages which were not originally installed (apt)
shell: apt-get -y remove mercurial && apt-get -y autoremove
@@ -33,11 +39,11 @@
shell: yum -y autoremove mercurial
when: ansible_facts.pkg_mgr == 'yum'
-- name: uninstall packages which were not originally installed
+- name: uninstall packages which were not originally installed (pacman)
package:
name: mercurial
state: absent
- when: ansible_facts.pkg_mgr in ['pacman', 'community.general.pacman', 'zypper', 'community.general.zypper', 'apk', 'community.general.apk']
+ when: ansible_facts.pkg_mgr in ['pacman', 'community.general.pacman']
- name: uninstall packages which were not originally installed (pkgng)
package:
@@ -46,6 +52,12 @@
autoremove: true
when: ansible_facts.pkg_mgr in ['pkgng', 'community.general.pkgng']
+- name: uninstall packages which were not originally installed (zypper)
+ package:
+ name: mercurial
+ state: absent
+ when: ansible_facts.pkg_mgr in ['zypper', 'community.general.zypper']
+
- name: restore the default python
raw: mv "{{ which_python.stdout }}.default" "{{ which_python.stdout }}"
diff --git a/tests/integration/targets/homectl/aliases b/tests/integration/targets/homectl/aliases
index 3621858566..3e4ed8c114 100644
--- a/tests/integration/targets/homectl/aliases
+++ b/tests/integration/targets/homectl/aliases
@@ -13,5 +13,4 @@ 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 00569608e0..2c58f9253e 100644
--- a/tests/integration/targets/iso_extract/aliases
+++ b/tests/integration/targets/iso_extract/aliases
@@ -13,7 +13,6 @@ 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
@@ -23,4 +22,3 @@ 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/jenkins_credential/README.md b/tests/integration/targets/jenkins_credential/README.md
deleted file mode 100644
index 3b1dc74c15..0000000000
--- a/tests/integration/targets/jenkins_credential/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-The integration test can be performed as follows:
-
-```
-# 1. Start docker-compose:
-docker-compose -f tests/integration/targets/jenkins_credential/docker-compose.yml down
-docker-compose -f tests/integration/targets/jenkins_credential/docker-compose.yml up -d
-
-# 2. Run the integration tests:
-ansible-test integration jenkins_credential --allow-unsupported -v
-```
diff --git a/tests/integration/targets/jenkins_credential/aliases b/tests/integration/targets/jenkins_credential/aliases
deleted file mode 100644
index d2086eecf8..0000000000
--- a/tests/integration/targets/jenkins_credential/aliases
+++ /dev/null
@@ -1,5 +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
-
-unsupported
\ No newline at end of file
diff --git a/tests/integration/targets/jenkins_credential/docker-compose.yml b/tests/integration/targets/jenkins_credential/docker-compose.yml
deleted file mode 100644
index c99c9ed575..0000000000
--- a/tests/integration/targets/jenkins_credential/docker-compose.yml
+++ /dev/null
@@ -1,21 +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
-
-version: "3.8"
-
-services:
- jenkins:
- image: bitnami/jenkins
- container_name: jenkins-test
- ports:
- - "8080:8080"
- environment:
- JENKINS_USERNAME: "FishLegs"
- JENKINS_PASSWORD: "MeatLug"
- JENKINS_PLUGINS: "credentials,cloudbees-folder,plain-credentials,github-branch-source,github-api,scm-api,workflow-step-api"
- healthcheck:
- test: curl -s http://localhost:8080/login || exit 1
- interval: 10s
- timeout: 10s
- retries: 10
diff --git a/tests/integration/targets/jenkins_credential/tasks/add.yml b/tests/integration/targets/jenkins_credential/tasks/add.yml
deleted file mode 100644
index c956773454..0000000000
--- a/tests/integration/targets/jenkins_credential/tasks/add.yml
+++ /dev/null
@@ -1,169 +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
-
-- name: Add CUSTOM scope (run {{ run_number }})
- community.general.jenkins_credential:
- id: "CUSTOM"
- type: "scope"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "Custom scope credential"
- inc_path:
- - "include/path"
- - "include/path2"
- exc_path:
- - "exclude/path"
- - "exclude/path2"
- inc_hostname:
- - "included-hostname"
- - "included-hostname2"
- exc_hostname:
- - "excluded-hostname"
- - "excluded-hostname2"
- schemes:
- - "http"
- - "https"
- inc_hostname_port:
- - "included-hostname:7000"
- - "included-hostname2:7000"
- exc_hostname_port:
- - "excluded-hostname:7000"
- - "excluded-hostname2:7000"
- register: custom_scope
-
-- name: Assert CUSTOM scope changed value
- assert:
- that:
- - custom_scope.changed == (run_number == 1)
- fail_msg: "CUSTOM scope changed status incorrect on run {{ run_number }}"
- success_msg: "CUSTOM scope behaved correctly on run {{ run_number }}"
-
-- name: Add user_and_pass credential (run {{ run_number }})
- community.general.jenkins_credential:
- id: "userpass-id"
- type: "user_and_pass"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "User and password credential"
- username: "user1"
- password: "pass1"
- register: userpass_cred
-
-- name: Assert user_and_pass changed value
- assert:
- that:
- - userpass_cred.changed == (run_number == 1)
- fail_msg: "user_and_pass credential changed status incorrect on run {{ run_number }}"
- success_msg: "user_and_pass credential behaved correctly on run {{ run_number }}"
-
-- name: Add file credential to custom scope (run {{ run_number }})
- community.general.jenkins_credential:
- id: "file-id"
- type: "file"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- scope: "CUSTOM"
- description: "File credential"
- file_path: "{{ output_dir }}/my-secret.pem"
- register: file_cred
-
-- name: Assert file credential changed value
- assert:
- that:
- - file_cred.changed == (run_number == 1)
- fail_msg: "file credential changed status incorrect on run {{ run_number }}"
- success_msg: "file credential behaved correctly on run {{ run_number }}"
-
-- name: Add text credential to folder (run {{ run_number }})
- community.general.jenkins_credential:
- id: "text-id"
- type: "text"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "Text credential"
- secret: "mysecrettext"
- location: "folder"
- url: "http://localhost:8080/job/test"
- register: text_cred
-
-- name: Assert text credential changed value
- assert:
- that:
- - text_cred.changed == (run_number == 1)
- fail_msg: "text credential changed status incorrect on run {{ run_number }}"
- success_msg: "text credential behaved correctly on run {{ run_number }}"
-
-- name: Add githubApp credential (run {{ run_number }})
- community.general.jenkins_credential:
- id: "githubapp-id"
- type: "github_app"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "GitHub app credential"
- appID: "12345"
- private_key_path: "{{ output_dir }}/github.pem"
- owner: "github_owner"
- register: githubapp_cred
-
-- name: Assert githubApp credential changed value
- assert:
- that:
- - githubapp_cred.changed == (run_number == 1)
- fail_msg: "githubApp credential changed status incorrect on run {{ run_number }}"
- success_msg: "githubApp credential behaved correctly on run {{ run_number }}"
-
-- name: Add sshKey credential (run {{ run_number }})
- community.general.jenkins_credential:
- id: "sshkey-id"
- type: "ssh_key"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "SSH key credential"
- username: "sshuser"
- private_key_path: "{{ output_dir }}/ssh_key"
- passphrase: 1234
- register: sshkey_cred
-
-- name: Assert sshKey credential changed value
- assert:
- that:
- - sshkey_cred.changed == (run_number == 1)
- fail_msg: "sshKey credential changed status incorrect on run {{ run_number }}"
- success_msg: "sshKey credential behaved correctly on run {{ run_number }}"
-
-- name: Add certificate (p12) credential (run {{ run_number }})
- community.general.jenkins_credential:
- id: "certificate-id"
- type: "certificate"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "Certificate credential"
- password: "12345678901234"
- file_path: "{{ output_dir }}/certificate.p12"
- register: cert_p12_cred
-
-- name: Assert certificate (p12) credential changed value
- assert:
- that:
- - cert_p12_cred.changed == (run_number == 1)
- fail_msg: "certificate (p12) credential changed status incorrect on run {{ run_number }}"
- success_msg: "certificate (p12) credential behaved correctly on run {{ run_number }}"
-
-- name: Add certificate (pem) credential (run {{ run_number }})
- community.general.jenkins_credential:
- id: "certificate-id-pem"
- type: "certificate"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "Certificate credential (pem)"
- file_path: "{{ output_dir }}/cert.pem"
- private_key_path: "{{ output_dir }}/private.key"
- register: cert_pem_cred
-
-- name: Assert certificate (pem) credential changed value
- assert:
- that:
- - cert_pem_cred.changed == (run_number == 1)
- fail_msg: "certificate (pem) credential changed status incorrect on run {{ run_number }}"
- success_msg: "certificate (pem) credential behaved correctly on run {{ run_number }}"
diff --git a/tests/integration/targets/jenkins_credential/tasks/del.yml b/tests/integration/targets/jenkins_credential/tasks/del.yml
deleted file mode 100644
index 036b65d3a1..0000000000
--- a/tests/integration/targets/jenkins_credential/tasks/del.yml
+++ /dev/null
@@ -1,128 +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
-
-- name: Delete user_and_pass credential (run {{ run_number }})
- community.general.jenkins_credential:
- id: "userpass-id"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- state: "absent"
- register: userpass_cred
-
-- name: Assert user_and_pass changed value
- assert:
- that:
- - userpass_cred.changed == (run_number == 1)
- fail_msg: "user_and_pass credential changed status incorrect on run {{ run_number }}"
- success_msg: "user_and_pass credential behaved correctly on run {{ run_number }}"
-
-- name: Delete file credential to custom scope (run {{ run_number }})
- community.general.jenkins_credential:
- id: "file-id"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- scope: "CUSTOM"
- state: "absent"
- register: file_cred
-
-- name: Assert file credential changed value
- assert:
- that:
- - file_cred.changed == (run_number == 1)
- fail_msg: "file credential changed status incorrect on run {{ run_number }}"
- success_msg: "file credential behaved correctly on run {{ run_number }}"
-
-- name: Delete CUSTOM scope credential (run {{ run_number}})
- community.general.jenkins_credential:
- id: "CUSTOM"
- type: "scope"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- state: "absent"
- register: custom_scope
-
-- name: Assert CUSTOM scope changed value
- assert:
- that:
- - custom_scope.changed == (run_number == 1)
- fail_msg: "CUSTOM scope changed status incorrect on run {{ run_number }}"
- success_msg: "CUSTOM scope behaved correctly on run {{ run_number }}"
-
-- name: Delete text credential to folder (run {{ run_number }})
- community.general.jenkins_credential:
- id: "text-id"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- state: "absent"
- location: "folder"
- url: "http://localhost:8080/job/test"
- register: text_cred
-
-- name: Assert text credential changed value
- assert:
- that:
- - text_cred.changed == (run_number == 1)
- fail_msg: "text credential changed status incorrect on run {{ run_number }}"
- success_msg: "text credential behaved correctly on run {{ run_number }}"
-
-- name: Delete githubApp credential (run {{ run_number }})
- community.general.jenkins_credential:
- id: "githubapp-id"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- state: "absent"
- register: githubapp_cred
-
-- name: Assert githubApp credential changed value
- assert:
- that:
- - githubapp_cred.changed == (run_number == 1)
- fail_msg: "githubApp credential changed status incorrect on run {{ run_number }}"
- success_msg: "githubApp credential behaved correctly on run {{ run_number }}"
-
-- name: Delete sshKey credential (run {{ run_number }})
- community.general.jenkins_credential:
- id: "sshkey-id"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "SSH key credential"
- state: "absent"
- register: sshkey_cred
-
-- name: Assert sshKey credential changed value
- assert:
- that:
- - sshkey_cred.changed == (run_number == 1)
- fail_msg: "sshKey credential changed status incorrect on run {{ run_number }}"
- success_msg: "sshKey credential behaved correctly on run {{ run_number }}"
-
-- name: Delete certificate credential (p12) (run {{ run_number }})
- community.general.jenkins_credential:
- id: "certificate-id"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- state: "absent"
- register: cert_p12_cred
-
-- name: Assert certificate (p12) credential changed value
- assert:
- that:
- - cert_p12_cred.changed == (run_number == 1)
- fail_msg: "certificate (p12) credential changed status incorrect on run {{ run_number }}"
- success_msg: "certificate (p12) credential behaved correctly on run {{ run_number }}"
-
-- name: Delete certificate credential (pem) (run {{ run_number }})
- community.general.jenkins_credential:
- id: "certificate-id-pem"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- state: "absent"
- register: cert_pem_cred
-
-- name: Assert certificate (pem) credential changed value
- assert:
- that:
- - cert_pem_cred.changed == (run_number == 1)
- fail_msg: "certificate (pem) credential changed status incorrect on run {{ run_number }}"
- success_msg: "certificate (pem) credential behaved correctly on run {{ run_number }}"
diff --git a/tests/integration/targets/jenkins_credential/tasks/edit.yml b/tests/integration/targets/jenkins_credential/tasks/edit.yml
deleted file mode 100644
index bd8d1eff7b..0000000000
--- a/tests/integration/targets/jenkins_credential/tasks/edit.yml
+++ /dev/null
@@ -1,192 +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
-
-- name: Generate token
- community.general.jenkins_credential:
- id: "{{ tokenUuid}}"
- name: "test-token-2"
- jenkins_user: "{{ jenkins_username }}"
- jenkins_password: "{{ jenkins_password }}"
- type: "token"
- force: true
- register: token_result
-
-- name: Set token in vars
- set_fact:
- token: "{{ token_result.token }}"
- tokenUuid: "{{ token_result.token_uuid }}"
-
-- name: Edit CUSTOM scope credential
- community.general.jenkins_credential:
- id: "CUSTOM"
- type: "scope"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "New custom scope credential"
- inc_path:
- - "new_include/path"
- - "new_include/path2"
- exc_path:
- - "new_exclude/path"
- - "new_exclude/path2"
- inc_hostname:
- - "new_included-hostname"
- - "new_included-hostname2"
- exc_hostname:
- - "new_excluded-hostname"
- - "new_excluded-hostname2"
- schemes:
- - "new_http"
- - "new_https"
- inc_hostname_port:
- - "new_included-hostname:7000"
- - "new_included-hostname2:7000"
- exc_hostname_port:
- - "new_excluded-hostname:7000"
- - "new_excluded-hostname2:7000"
- force: true
- register: custom_scope
-
-- name: Assert CUSTOM scope changed value
- assert:
- that:
- - custom_scope.changed == true
- fail_msg: "CUSTOM scope changed status when it shouldn't"
- success_msg: "CUSTOM scope behaved correctly"
-
-- name: Edit user_and_pass credential
- community.general.jenkins_credential:
- id: "userpass-id"
- type: "user_and_pass"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "new user and password credential"
- username: "user2"
- password: "pass2"
- force: true
- register: userpass_cred
-
-- name: Assert user_and_pass changed value
- assert:
- that:
- - userpass_cred.changed == true
- fail_msg: "user_and_pass credential changed status incorrect"
- success_msg: "user_and_pass credential behaved correctly"
-
-- name: Edit file credential to custom scope
- community.general.jenkins_credential:
- id: "file-id"
- type: "file"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- scope: "CUSTOM"
- description: "New file credential"
- file_path: "{{ output_dir }}/my-secret.pem"
- force: true
- register: file_cred
-
-- name: Assert file credential changed value
- assert:
- that:
- - file_cred.changed == true
- fail_msg: "file credential changed status incorrect"
- success_msg: "file credential behaved correctly"
-
-- name: Edit text credential to folder
- community.general.jenkins_credential:
- id: "text-id"
- type: "text"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "New text credential"
- secret: "mynewsecrettext"
- location: "folder"
- url: "http://localhost:8080/job/test"
- force: true
- register: text_cred
-
-- name: Assert text credential changed value
- assert:
- that:
- - text_cred.changed == true
- fail_msg: "text credential changed status incorrect"
- success_msg: "text credential behaved correctly"
-
-- name: Edit githubApp credential
- community.general.jenkins_credential:
- id: "githubapp-id"
- type: "github_app"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "New GitHub app credential"
- appID: "12345678"
- private_key_path: "{{ output_dir }}/github.pem"
- owner: "new_github_owner"
- force: true
- register: githubapp_cred
-
-- name: Assert githubApp credential changed value
- assert:
- that:
- - githubapp_cred.changed == true
- fail_msg: "githubApp credential changed status incorrect"
- success_msg: "githubApp credential behaved correctly"
-
-- name: Edit sshKey credential
- community.general.jenkins_credential:
- id: "sshkey-id"
- type: "ssh_key"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "New SSH key credential"
- username: "new_sshuser"
- private_key_path: "{{ output_dir }}/ssh_key"
- passphrase: 1234
- force: true
- register: sshkey_cred
-
-- name: Assert sshKey credential changed value
- assert:
- that:
- - sshkey_cred.changed == true
- fail_msg: "sshKey credential changed status incorrect"
- success_msg: "sshKey credential behaved correctly"
-
-- name: Edit certificate credential (p12)
- community.general.jenkins_credential:
- id: "certificate-id"
- type: "certificate"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "New certificate credential"
- password: "12345678901234"
- file_path: "{{ output_dir }}/certificate.p12"
- force: true
- register: cert_p12_cred
-
-- name: Assert certificate (p12) credential changed value
- assert:
- that:
- - cert_p12_cred.changed == true
- fail_msg: "certificate (p12) credential changed status incorrect"
- success_msg: "certificate (p12) credential behaved correctly"
-
-- name: Edit certificate credential (pem)
- community.general.jenkins_credential:
- id: "certificate-id-pem"
- type: "certificate"
- jenkins_user: "{{ jenkins_username }}"
- token: "{{ token }}"
- description: "New certificate credential (pem)"
- file_path: "{{ output_dir }}/cert.pem"
- private_key_path: "{{ output_dir }}/private.key"
- force: true
- register: cert_pem_cred
-
-- name: Assert certificate (pem) credential changed value
- assert:
- that:
- - cert_pem_cred.changed == true
- fail_msg: "certificate (pem) credential changed status incorrect"
- success_msg: "certificate (pem) credential behaved correctly"
diff --git a/tests/integration/targets/jenkins_credential/tasks/main.yml b/tests/integration/targets/jenkins_credential/tasks/main.yml
deleted file mode 100644
index 88ee0693cf..0000000000
--- a/tests/integration/targets/jenkins_credential/tasks/main.yml
+++ /dev/null
@@ -1,79 +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
-
-- name: Prepare the test environment
- include_tasks: pre.yml
- vars:
- output_dir: "{{ playbook_dir }}/generated"
-
-- name: Generate token
- community.general.jenkins_credential:
- name: "test-token"
- jenkins_user: "{{ jenkins_username }}"
- jenkins_password: "{{ jenkins_password }}"
- type: "token"
- no_log: true
- register: token_result
-
-- name: Assert token and tokenUuid are returned
- assert:
- that:
- - token_result.token is defined
- - token_result.token_uuid is defined
- fail_msg: "Token generation failed"
- success_msg: "Token and tokenUuid successfully returned"
-
-- name: Set token facts
- set_fact:
- token: "{{ token_result.token }}"
- tokenUuid: "{{ token_result.token_uuid }}"
-
-- name: Test adding new credentials and scopes
- include_tasks: add.yml
- vars:
- run_number: 1
- output_dir: "{{ playbook_dir }}/generated"
-
-- name: Test adding credentials and scopes when they already exist
- include_tasks: add.yml
- vars:
- run_number: 2
- output_dir: "{{ playbook_dir }}/generated"
-
-- name: Test editing credentials
- include_tasks: edit.yml
- vars:
- output_dir: "{{ playbook_dir }}/generated"
-
-- name: Test deleting credentials and scopes
- include_tasks: del.yml
- vars:
- run_number: 1
-
-- name: Test deleting credentials and scopes when they don't exist
- include_tasks: del.yml
- vars:
- run_number: 2
-
-- name: Delete token
- community.general.jenkins_credential:
- id: "{{ tokenUuid }}"
- name: "test-token-2"
- jenkins_user: "{{ jenkins_username }}"
- jenkins_password: "{{ jenkins_password }}"
- state: "absent"
- type: "token"
- register: delete_token_result
-
-- name: Assert token deletion
- assert:
- that:
- - delete_token_result.changed is true
- fail_msg: "Token deletion failed"
- success_msg: "Token successfully deleted"
-
-- name: Remove generated test files
- ansible.builtin.file:
- path: "{{ playbook_dir }}/generated"
- state: absent
diff --git a/tests/integration/targets/jenkins_credential/tasks/pre.yml b/tests/integration/targets/jenkins_credential/tasks/pre.yml
deleted file mode 100644
index abb649ae1e..0000000000
--- a/tests/integration/targets/jenkins_credential/tasks/pre.yml
+++ /dev/null
@@ -1,92 +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
-
-- name: Include Jenkins user variables
- include_vars: "{{ role_path }}/vars/credentials.yml"
-
-- name: Make sure Jenkins is ready
- uri:
- url: http://localhost:8080/login
- status_code: 200
- return_content: false
- timeout: 30
- register: result
- retries: 10
- delay: 5
- until: result.status == 200
-
-- name: Get Jenkins crumb and save cookie
- shell: |
- curl -s -c cookies.txt -u FishLegs:MeatLug http://localhost:8080/crumbIssuer/api/json > crumb.json
- args:
- executable: /bin/bash
-
-- name: Read crumb value
- set_fact:
- crumb_data: "{{ lookup('file', 'crumb.json') | from_json }}"
-
-- name: Create Jenkins folder 'test'
- shell: |
- curl -b cookies.txt -u {{ jenkins_username }}:{{ jenkins_password }} \
- -H "{{ crumb_data.crumbRequestField }}: {{ crumb_data.crumb }}" \
- -H "Content-Type: application/xml" \
- --data-binary @- http://localhost:8080/createItem?name=test <
- Test Folder
-
-
- EOF
- args:
- executable: /bin/bash
-
-- name: Create output directory
- ansible.builtin.file:
- path: "{{ output_dir }}"
- state: directory
- mode: "0755"
-
-- name: Generate private key
- community.crypto.openssl_privatekey:
- path: "{{ output_dir }}/private.key"
- size: 2048
- type: RSA
-
-- name: Generate CSR (certificate signing request)
- community.crypto.openssl_csr:
- path: "{{ output_dir }}/request.csr"
- privatekey_path: "{{ output_dir }}/private.key"
- common_name: "dummy.local"
-
-- name: Generate self-signed certificate
- community.crypto.x509_certificate:
- path: "{{ output_dir }}/cert.pem"
- privatekey_path: "{{ output_dir }}/private.key"
- csr_path: "{{ output_dir }}/request.csr"
- provider: selfsigned
-
-- name: Create PKCS#12 (.p12) file
- community.crypto.openssl_pkcs12:
- path: "{{ output_dir }}/certificate.p12"
- privatekey_path: "{{ output_dir }}/private.key"
- certificate_path: "{{ output_dir }}/cert.pem"
- friendly_name: "dummy-cert"
- passphrase: "12345678901234"
-
-- name: Copy cert.pem to github.pem
- ansible.builtin.copy:
- src: "{{ output_dir }}/cert.pem"
- dest: "{{ output_dir }}/github.pem"
- remote_src: true
-
-- name: Copy private.key to my-secret.pem
- ansible.builtin.copy:
- src: "{{ output_dir }}/private.key"
- dest: "{{ output_dir }}/my-secret.pem"
- remote_src: true
-
-- name: Generate dummy SSH key
- community.crypto.openssh_keypair:
- path: "{{ output_dir }}/ssh_key"
- type: rsa
- size: 2048
diff --git a/tests/integration/targets/jenkins_credential/vars/credentials.yml b/tests/integration/targets/jenkins_credential/vars/credentials.yml
deleted file mode 100644
index 27df98700b..0000000000
--- a/tests/integration/targets/jenkins_credential/vars/credentials.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
-
-jenkins_username: FishLegs
-jenkins_password: MeatLug
diff --git a/tests/integration/targets/keycloak_identity_provider/README.md b/tests/integration/targets/keycloak_identity_provider/README.md
deleted file mode 100644
index 204ebbed66..0000000000
--- a/tests/integration/targets/keycloak_identity_provider/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Running keycloak_identity_provider module integration test
-
-To run Keycloak component info module's integration test, start a keycloak server using Docker:
-
- docker run -d --rm --name mykeycloak -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=password quay.io/keycloak/keycloak:latest start-dev --http-relative-path /auth
-
-Run integration tests:
-
- ansible-test integration -v keycloak_identity_provider --allow-unsupported --docker fedora35 --docker-network host
-
-Cleanup:
-
- docker stop mykeycloak
-
-
diff --git a/tests/integration/targets/keycloak_identity_provider/tasks/main.yml b/tests/integration/targets/keycloak_identity_provider/tasks/main.yml
index 1cccd4219e..fa118ed1d9 100644
--- a/tests/integration/targets/keycloak_identity_provider/tasks/main.yml
+++ b/tests/integration/targets/keycloak_identity_provider/tasks/main.yml
@@ -3,15 +3,6 @@
# 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
-- name: Delete realm if exists
- community.general.keycloak_realm:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- realm: "{{ realm }}"
- state: absent
-
- name: Create realm
community.general.keycloak_realm:
auth_keycloak_url: "{{ url }}"
@@ -71,7 +62,7 @@
- result.existing == {}
- result.end_state.alias == "{{ idp }}"
- result.end_state.mappers != []
- - result.end_state.config.clientSecret == "**********"
+ - result.end_state.config.client_secret = "**********"
- name: Update existing identity provider (no change)
community.general.keycloak_identity_provider:
@@ -286,79 +277,3 @@
that:
- result is not changed
- result.end_state == {}
-
-- name: Create IDP realm
- community.general.keycloak_realm:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- id: "{{ idp_realm }}"
- realm: "{{ idp_realm }}"
- state: present
-
-- name: Create new identity provider with fromUrl
- community.general.keycloak_identity_provider:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- realm: "{{ realm }}"
- alias: "{{ idp_fromurl }}"
- display_name: OpenID Connect IdP from url
- enabled: true
- provider_id: oidc
- config:
- fromUrl: "{{ url }}/realms/{{ idp_realm }}/.well-known/openid-configuration"
- clientAuthMethod: client_secret_post
- clientId: clientid
- clientSecret: clientsecret
- syncMode: FORCE
- state: present
- register: result
-
-- name: Debug
- debug:
- var: result
-
-- name: Assert identity provider created with IDP endpoints
- assert:
- that:
- - result is changed
- - result.end_state.config.authorizationUrl == "{{ url }}/realms/{{ idp_realm }}/protocol/openid-connect/auth"
- - result.end_state.config.issuer == "{{ url }}/realms/{{ idp_realm }}"
- - result.end_state.config.jwksUrl == "{{ url }}/realms/{{ idp_realm }}/protocol/openid-connect/certs"
- - result.end_state.config.logoutUrl == "{{ url }}/realms/{{ idp_realm }}/protocol/openid-connect/logout"
- - result.end_state.config.tokenUrl == "{{ url }}/realms/{{ idp_realm }}/protocol/openid-connect/token"
- - result.end_state.config.userInfoUrl == "{{ url }}/realms/{{ idp_realm }}/protocol/openid-connect/userinfo"
-
-- name: Create new identity provider with fromUrl and exclusion should fail
- community.general.keycloak_identity_provider:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- realm: "{{ realm }}"
- alias: "mustfail"
- display_name: Failed OpenID Connect IdP from url
- enabled: true
- provider_id: oidc
- config: "{{ config | combine(endpoint) }}"
- state: present
- vars:
- config:
- fromUrl: "{{ url }}/realms/{{ idp_realm }}/.well-known/openid-configuration"
- clientAuthMethod: client_secret_post
- clientId: clientid
- clientSecret: clientsecret
- endpoint: "{{ '{\"' + item + '\": \"' + url + '/realms/' + idp_realm + '/protocol/openid-connect/' + item + '\"}' }}"
- with_items: ['userInfoUrl', 'authorizationUrl', 'tokenUrl', 'logoutUrl', 'issuer', 'jwksUrl']
- register: result
- ignore_errors: true
-
-- name: Check failure of identity provider creation with fromUrl and userInfoUrl
- assert:
- that:
- - result is not changed
- - result is failed
- - result.results | selectattr('failed', 'equalto', false) | list | length == 0
diff --git a/tests/integration/targets/keycloak_identity_provider/vars/main.yml b/tests/integration/targets/keycloak_identity_provider/vars/main.yml
index 5ba2ca5872..6d2078ca0e 100644
--- a/tests/integration/targets/keycloak_identity_provider/vars/main.yml
+++ b/tests/integration/targets/keycloak_identity_provider/vars/main.yml
@@ -9,6 +9,3 @@ admin_user: admin
admin_password: password
realm: myrealm
idp: myidp
-
-idp_realm: myidprealm
-idp_fromurl: myidpfromurl
\ No newline at end of file
diff --git a/tests/integration/targets/keycloak_modules_authentication/tasks/main.yml b/tests/integration/targets/keycloak_modules_authentication/tasks/main.yml
index b788865de9..1553e29c1c 100644
--- a/tests/integration/targets/keycloak_modules_authentication/tasks/main.yml
+++ b/tests/integration/targets/keycloak_modules_authentication/tasks/main.yml
@@ -3,19 +3,6 @@
# 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
-- name: Reset public login in master admin-cli (if potentially previous test failed)
- community.general.keycloak_client:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- auth_client_id: "admin-cli"
- auth_client_secret: "{{ client_secret }}"
- client_id: "admin-cli"
- secret: "{{ client_secret }}"
- public_client: true
- state: present
-
- name: Create realm
community.general.keycloak_realm:
auth_keycloak_url: "{{ url }}"
@@ -214,89 +201,6 @@
debug:
var: result
-- name: PREPARE - Temporarily disable public login in master admin-cli
- community.general.keycloak_client:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- auth_client_id: "admin-cli"
- auth_client_secret: "{{ client_secret }}"
- client_id: "admin-cli"
- secret: "{{ client_secret }}"
- public_client: false
- service_accounts_enabled: true
- client_authenticator_type: "client-secret"
- state: present
-
-- name: PREPARE - Get admin role id
- community.general.keycloak_role:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- auth_client_id: "admin-cli"
- auth_client_secret: "{{ client_secret }}"
- name: "admin"
- register: admin_role
-
-- name: PREPARE - Assign admin role to admin-cli in master
- community.general.keycloak_user_rolemapping:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- auth_client_id: "admin-cli"
- auth_client_secret: "{{ client_secret }}"
- realm: "master"
- roles:
- - name: "admin"
- service_account_user_client_id: "admin-cli"
-
-- name: Create new realm role with valid client_id and client_secret
- community.general.keycloak_role:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_client_id: "admin-cli"
- auth_client_secret: "{{ client_secret }}"
- realm: "{{ realm }}"
- name: "{{ role }}"
- description: "{{ keycloak_role_description }}"
- state: present
- register: result
-
-- name: Debug
- debug:
- var: result
-
-- name: Reset temporarily disabled public login in master admin-cli
- community.general.keycloak_client:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- auth_client_id: "admin-cli"
- auth_client_secret: "{{ client_secret }}"
- client_id: "admin-cli"
- secret: "{{ client_secret }}"
- public_client: true
- state: present
-
-- name: Remove created realm role
- community.general.keycloak_role:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- realm: "{{ realm }}"
- name: "{{ role }}"
- state: absent
- register: result
-
-- name: Debug
- debug:
- var: result
-
### Unhappy path tests
- name: Fail to create new realm role with invalid username/password
@@ -311,6 +215,7 @@
state: present
register: result
failed_when: >
+ (result.exception is not defined) or
("HTTP Error 401: Unauthorized" not in result.msg)
- name: Fail to create new realm role with invalid auth token
@@ -323,6 +228,7 @@
state: present
register: result
failed_when: >
+ (result.exception is not defined) or
("HTTP Error 401: Unauthorized" not in result.msg)
- name: Fail to create new realm role with invalid auth and refresh tokens, and invalid username/password
@@ -339,4 +245,5 @@
state: present
register: result
failed_when: >
+ (result.exception is not defined) or
("HTTP Error 401: Unauthorized" not in result.msg)
diff --git a/tests/integration/targets/keycloak_modules_authentication/vars/main.yml b/tests/integration/targets/keycloak_modules_authentication/vars/main.yml
index f57d791d86..02ad618e1b 100644
--- a/tests/integration/targets/keycloak_modules_authentication/vars/main.yml
+++ b/tests/integration/targets/keycloak_modules_authentication/vars/main.yml
@@ -9,7 +9,6 @@ admin_user: admin
admin_password: password
realm: myrealm
client_id: myclient
-client_secret: myclientsecret
role: myrole
keycloak_role_name: test
diff --git a/tests/integration/targets/keycloak_realm/README.md b/tests/integration/targets/keycloak_realm/README.md
deleted file mode 100644
index c0df89e69b..0000000000
--- a/tests/integration/targets/keycloak_realm/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Running keycloak_realm module integration test
-
-To run Keycloak component info module's integration test, start a keycloak server using Docker:
-
- docker run -d --rm --name mykeycloak -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=password quay.io/keycloak/keycloak:latest start-dev --http-relative-path /auth
-
-Run integration tests:
-
- ansible-test integration -v keycloak_realm --allow-unsupported --docker fedora35 --docker-network host
-
-Cleanup:
-
- docker stop mykeycloak
-
-
diff --git a/tests/integration/targets/keycloak_realm/aliases b/tests/integration/targets/keycloak_realm/aliases
deleted file mode 100644
index bd1f024441..0000000000
--- a/tests/integration/targets/keycloak_realm/aliases
+++ /dev/null
@@ -1,5 +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
-
-unsupported
diff --git a/tests/integration/targets/keycloak_realm/tasks/main.yml b/tests/integration/targets/keycloak_realm/tasks/main.yml
deleted file mode 100644
index dfce27f83b..0000000000
--- a/tests/integration/targets/keycloak_realm/tasks/main.yml
+++ /dev/null
@@ -1,98 +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
-- name: Wait for Keycloak
- uri:
- url: "{{ url }}/admin/"
- status_code: 200
- validate_certs: false
- register: result
- until: result.status == 200
- retries: 10
- delay: 10
-
-- name: Delete realm if exists
- community.general.keycloak_realm:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- realm: "{{ realm }}"
- state: absent
-
-- name: Create realm
- community.general.keycloak_realm:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- id: "{{ realm }}"
- realm: "{{ realm }}"
- state: present
- register: result
-
-- name: Modify realm
- community.general.keycloak_realm:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- id: "{{ realm }}"
- realm: "{{ realm }}"
- client_session_idle_timeout: 240
- client_session_max_lifespan: 21600
- client_offline_session_idle_timeout: 100
- client_offline_session_max_lifespan: 200
- oauth2_device_code_lifespan: 700
- oauth2_device_polling_interval: 800
- state: present
- register: result
-
-- name: Assert result
- assert:
- that:
- - result is changed
- - result.end_state.clientSessionIdleTimeout == 240
- - result.end_state.clientSessionMaxLifespan == 21600
- - result.end_state.clientOfflineSessionIdleTimeout == 100
- - result.end_state.clientOfflineSessionMaxLifespan == 200
- - result.end_state.oauth2DeviceCodeLifespan == 700
- - result.end_state.oauth2DevicePollingInterval == 800
-
-- name: Delete realm
- community.general.keycloak_realm:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- realm: "{{ realm }}"
- state: absent
-
-- name: create realm
- community.general.keycloak_realm:
- auth_keycloak_url: "{{ url }}"
- auth_realm: "{{ admin_realm }}"
- auth_username: "{{ admin_user }}"
- auth_password: "{{ admin_password }}"
- id: "{{ realm }}"
- realm: "{{ realm }}"
- client_session_idle_timeout: 240
- client_session_max_lifespan: 21600
- client_offline_session_idle_timeout: 100
- client_offline_session_max_lifespan: 200
- oauth2_device_code_lifespan: 700
- oauth2_device_polling_interval: 800
- state: present
- register: result
-
-- name: Assert result
- assert:
- that:
- - result is changed
- - result.end_state.clientSessionIdleTimeout == 240
- - result.end_state.clientSessionMaxLifespan == 21600
- - result.end_state.clientOfflineSessionIdleTimeout == 100
- - result.end_state.clientOfflineSessionMaxLifespan == 200
- - result.end_state.oauth2DeviceCodeLifespan == 700
- - result.end_state.oauth2DevicePollingInterval == 800
\ No newline at end of file
diff --git a/tests/integration/targets/keycloak_realm/vars/main.yml b/tests/integration/targets/keycloak_realm/vars/main.yml
deleted file mode 100644
index 662fb8fd89..0000000000
--- a/tests/integration/targets/keycloak_realm/vars/main.yml
+++ /dev/null
@@ -1,10 +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
-
-url: http://localhost:8080/auth
-admin_realm: master
-admin_user: admin
-admin_password: password
-realm: myrealm
\ No newline at end of file
diff --git a/tests/integration/targets/ldap_search/tasks/tests/schema.yml b/tests/integration/targets/ldap_search/tasks/tests/schema.yml
index ca26305b82..63dd3fdf68 100644
--- a/tests/integration/targets/ldap_search/tasks/tests/schema.yml
+++ b/tests/integration/targets/ldap_search/tasks/tests/schema.yml
@@ -22,5 +22,4 @@
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 5da5b03784..0e583e7a13 100644
--- a/tests/integration/targets/listen_ports_facts/tasks/main.yml
+++ b/tests/integration/targets/listen_ports_facts/tasks/main.yml
@@ -110,32 +110,3 @@
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/lookup_lmdb_kv/aliases b/tests/integration/targets/lookup_lmdb_kv/aliases
index 5ecc8bfd38..9c7febe241 100644
--- a/tests/integration/targets/lookup_lmdb_kv/aliases
+++ b/tests/integration/targets/lookup_lmdb_kv/aliases
@@ -5,4 +5,3 @@
azp/posix/2
destructive
skip/aix
-disabled # TODO: currently broken
diff --git a/tests/integration/targets/lvg/aliases b/tests/integration/targets/lvg/aliases
index eb76529397..cbe489d88b 100644
--- a/tests/integration/targets/lvg/aliases
+++ b/tests/integration/targets/lvg/aliases
@@ -11,4 +11,3 @@ 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/lvm_pv_move_data/aliases b/tests/integration/targets/lvm_pv_move_data/aliases
deleted file mode 100644
index 232151c541..0000000000
--- a/tests/integration/targets/lvm_pv_move_data/aliases
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (c) Contributors to the Ansible project
-# Based on the integraton test for the lvm_pv module
-# 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
-
-azp/posix/1
-azp/posix/vm
-destructive
-needs/privileged
-skip/aix
-skip/freebsd
-skip/osx
-skip/macos
diff --git a/tests/integration/targets/lvm_pv_move_data/meta/main.yml b/tests/integration/targets/lvm_pv_move_data/meta/main.yml
deleted file mode 100644
index 90c5d5cb8d..0000000000
--- a/tests/integration/targets/lvm_pv_move_data/meta/main.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-# Copyright (c) Ansible Project
-# Based on the integraton test for the lvg module
-# 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
-
-dependencies:
- - setup_pkg_mgr
- - setup_remote_tmp_dir
diff --git a/tests/integration/targets/lvm_pv_move_data/tasks/cleanup.yml b/tests/integration/targets/lvm_pv_move_data/tasks/cleanup.yml
deleted file mode 100644
index 1c121008b8..0000000000
--- a/tests/integration/targets/lvm_pv_move_data/tasks/cleanup.yml
+++ /dev/null
@@ -1,39 +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
-
-- name: Unmounting temp file system
- ansible.posix.mount:
- fstab: '{{ remote_tmp_dir }}/fstab'
- path: '{{ remote_tmp_dir }}/tmp_mount'
- state: absent
-
-- name: Removing xfs filesystem from LV lv_tmp_test
- community.general.filesystem:
- dev: /dev/vg_tmp_test/lv_tmp_test
- state: absent
- force: true
-
-- name: Deleting testlv logical volume
- community.general.lvol:
- vg: testvg
- lv: testlv
- force: true
- state: absent
-
-- name: Detaching first loop device
- ansible.builtin.command: losetup -d {{ loop_device_01.stdout }}
-
-- name: Detaching second loop device
- ansible.builtin.command: losetup -d {{ loop_device_02.stdout }}
-
-- name: Removing first loop device file
- ansible.builtin.file:
- path: "{{ remote_tmp_dir }}/test_lvm_pv_01.img"
- state: absent
-
-- name: Removing second loop device file
- ansible.builtin.file:
- path: "{{ remote_tmp_dir }}/test_lvm_pv_02.img"
- state: absent
diff --git a/tests/integration/targets/lvm_pv_move_data/tasks/creation.yml b/tests/integration/targets/lvm_pv_move_data/tasks/creation.yml
deleted file mode 100644
index 8ce11fb5c5..0000000000
--- a/tests/integration/targets/lvm_pv_move_data/tasks/creation.yml
+++ /dev/null
@@ -1,115 +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
-
-- name: Creating a 500MB file for the first loop device
- ansible.builtin.command: dd if=/dev/zero of={{ remote_tmp_dir }}/test_lvm_pv_01.img bs=1M count=500
- args:
- creates: "{{ remote_tmp_dir }}/test_lvm_pv_01.img"
-
-- name: Creating a 1000MB file for the second loop device
- ansible.builtin.command: dd if=/dev/zero of={{ remote_tmp_dir }}/test_lvm_pv_02.img bs=1M count=1000
- args:
- creates: "{{ remote_tmp_dir }}/test_lvm_pv_02.img"
-
-- name: Pausing for a random time between 5-15 seconds
- ansible.builtin.pause:
- seconds: "{{ range(5, 16) | random }}"
-
-- name: Creating loop device
- ansible.builtin.command: losetup -f
- register: loop_device_01
-
-- name: Wiping existing LVM metadata
- community.general.lvm_pv:
- device: "{{ loop_device_01.stdout }}"
- force: true
- state: absent
-
-- name: Associating loop device with file
- ansible.builtin.command: 'losetup {{ loop_device_01.stdout }} {{ remote_tmp_dir }}/test_lvm_pv_01.img'
-
-- name: Pausing for a random time between 5-15 seconds
- ansible.builtin.pause:
- seconds: "{{ range(5, 16) | random }}"
-
-- name: Creating loop device
- ansible.builtin.command: losetup -f
- register: loop_device_02
-
-- name: Wiping existing LVM metadata
- community.general.lvm_pv:
- device: "{{ loop_device_02.stdout }}"
- force: true
- state: absent
-
-- name: Associating loop device with file
- ansible.builtin.command: 'losetup {{ loop_device_02.stdout }} {{ remote_tmp_dir }}/test_lvm_pv_02.img'
-
-- name: Creating physical volume for the first loop device
- community.general.lvm_pv:
- device: "{{ loop_device_01.stdout }}"
- register: pv_creation_result_01
-
-- name: Checking the first physical volume size
- ansible.builtin.command: pvs --noheadings -o pv_size --units M {{ loop_device_01.stdout }}
- register: pv_size_output_01
-
-- name: Creating physical volume for the second loop device
- community.general.lvm_pv:
- device: "{{ loop_device_02.stdout }}"
- register: pv_creation_result_02
-
-- name: Checking the second physical volume size
- ansible.builtin.command: pvs --noheadings -o pv_size --units M {{ loop_device_02.stdout }}
- register: pv_size_output_02
-
-- name: Creating volume group
- community.general.lvg:
- vg: testvg
- pvs:
- - "{{ loop_device_01.stdout }}"
- - "{{ loop_device_02.stdout }}"
- force: true
- register: vg_creation_result
-
-- name: Creating LV testlv on VG testvg
- community.general.lvol:
- vg: testvg
- lv: testlv
- size: 100%FREE
- force: true
- register: lv_creation_result
-
-- name: Creating xfs filesystem on LV testlv
- community.general.filesystem:
- dev: /dev/testvg/testlv
- fstype: xfs
- state: present
- register: fs_creation_result
-
-- name: Mounting LV testlv
- ansible.posix.mount:
- fstab: '{{ remote_tmp_dir }}/fstab'
- path: '{{ remote_tmp_dir }}/tmp_mount'
- src: '/dev/testvg/testlv'
- fstype: xfs
- opts: rw,noauto
- state: mounted
- register: mount_result
-
-- name: Asserting PVs, VG, LV and filesystem were created successfully
- ansible.builtin.assert:
- that:
- - pv_creation_result_01 is changed
- - pv_creation_result_02 is changed
- - vg_creation_result is changed
- - lv_creation_result is changed
- - fs_creation_result is changed
- - (pv_size_output_01.stdout | trim | regex_replace('M', '') | float) > 450
- - (pv_size_output_01.stdout | trim | regex_replace('M', '') | float) < 600
- - (pv_size_output_02.stdout | trim | regex_replace('M', '') | float) > 950
- - (pv_size_output_02.stdout | trim | regex_replace('M', '') | float) < 1100
- - "'created' in pv_creation_result_01.msg"
- - "'created' in pv_creation_result_02.msg"
diff --git a/tests/integration/targets/lvm_pv_move_data/tasks/main.yml b/tests/integration/targets/lvm_pv_move_data/tasks/main.yml
deleted file mode 100644
index 908e1b9a99..0000000000
--- a/tests/integration/targets/lvm_pv_move_data/tasks/main.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-####################################################################
-# WARNING: These are designed specifically for Ansible tests #
-# and should not be used as examples of how to write Ansible roles #
-####################################################################
-
-# Copyright (c) Contributors to the Ansible project
-# Based on the integration test for the lvm_pv module
-# 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
-
-- name: Install required packages (Linux)
- when: ansible_system == 'Linux'
- ansible.builtin.package:
- name:
- - lvm2
- - xfsprogs
- state: present
-
-- name: Testing lvm_pv_move_data module
- block:
- - import_tasks: prepare.yml
-
- - import_tasks: creation.yml
-
- - import_tasks: moving.yml
-
- always:
- - import_tasks: cleanup.yml
diff --git a/tests/integration/targets/lvm_pv_move_data/tasks/moving.yml b/tests/integration/targets/lvm_pv_move_data/tasks/moving.yml
deleted file mode 100644
index 9b52f35f7e..0000000000
--- a/tests/integration/targets/lvm_pv_move_data/tasks/moving.yml
+++ /dev/null
@@ -1,36 +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
-
-- name: Creating a 50MB file on the mounted LV
- ansible.builtin.command: dd if=/dev/zero of={{ remote_tmp_dir }}/tmp_mount/test_file bs=1M count=50
- args:
- creates: "{{ remote_tmp_dir }}/tmp_mount/test_file"
-
-- name: Growing the second loop device file to 1500MB
- ansible.builtin.shell: truncate -s 1500M {{ remote_tmp_dir }}/test_lvm_pv_02.img
-
-- name: Refreshing the second loop device
- ansible.builtin.shell: losetup -c {{ loop_device_02.stdout }}
-
-- name: Resizing the second physical volume
- community.general.lvm_pv:
- device: "{{ loop_device_02.stdout }}"
- resize: true
-
-- name: Moving data from between PVs (both in same VG)
- community.general.lvm_pv_move_data:
- source: "{{ loop_device_01.stdout }}"
- destination: "{{ loop_device_02.stdout }}"
- register: move_result
-
-- name: Debugging move result
- ansible.builtin.debug:
- var: move_result
-
-- name: Asserting data was moved successfully
- ansible.builtin.assert:
- that:
- - move_result is changed
- - "'moved data from' in move_result.msg"
diff --git a/tests/integration/targets/lvm_pv_move_data/tasks/prepare.yml b/tests/integration/targets/lvm_pv_move_data/tasks/prepare.yml
deleted file mode 100644
index ced3f74dc6..0000000000
--- a/tests/integration/targets/lvm_pv_move_data/tasks/prepare.yml
+++ /dev/null
@@ -1,23 +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
-
-- name: Removing xfs filesystem from LV lv_tmp_test
- community.general.filesystem:
- dev: /dev/vg_tmp_test/lv_tmp_test
- state: absent
- force: true
-
-- name: Deleting testlv logical volume
- community.general.lvol:
- vg: testvg
- lv: testlv
- force: true
- state: absent
-
-- name: Deleting volume group testvg
- community.general.lvg:
- vg: testvg
- force: true
- state: absent
diff --git a/tests/integration/targets/odbc/aliases b/tests/integration/targets/odbc/aliases
index ee15fde5bb..3802d30f87 100644
--- a/tests/integration/targets/odbc/aliases
+++ b/tests/integration/targets/odbc/aliases
@@ -13,6 +13,5 @@ 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 b51ad836bd..2dcd7b02a8 100644
--- a/tests/integration/targets/pkgng/tasks/freebsd.yml
+++ b/tests/integration/targets/pkgng/tasks/freebsd.yml
@@ -534,14 +534,12 @@
#
# 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.4', '>=')
+ or ansible_distribution_version is version('14.3', '>=')
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 56ba7a9581..9f156425d8 100644
--- a/tests/integration/targets/setup_java_keytool/tasks/main.yml
+++ b/tests/integration/targets/setup_java_keytool/tasks/main.yml
@@ -22,7 +22,6 @@
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
deleted file mode 100644
index 5f77ea9bba..0000000000
--- a/tests/integration/targets/setup_java_keytool/vars/Fedora.yml
+++ /dev/null
@@ -1,7 +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
-
-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 120000
index 0b06951496..0000000000
--- a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.3.yml
+++ /dev/null
@@ -1 +0,0 @@
-nothing.yml
\ No newline at end of file
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 100644
index 0000000000..5bbfaff128
--- /dev/null
+++ b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.3.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
+
+# 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
deleted file mode 120000
index 0b06951496..0000000000
--- a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.5.yml
+++ /dev/null
@@ -1 +0,0 @@
-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
new file mode 100644
index 0000000000..5bbfaff128
--- /dev/null
+++ b/tests/integration/targets/setup_snap/tasks/D-RedHat-9.5.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
+
+# Do nothing
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
deleted file mode 120000
index 0b06951496..0000000000
--- a/tests/integration/targets/setup_snap/tasks/D-RedHat-9.6.yml
+++ /dev/null
@@ -1 +0,0 @@
-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
deleted file mode 100644
index fe0bc5b145..0000000000
--- a/tests/integration/targets/sysrc/files/10394.conf
+++ /dev/null
@@ -1,7 +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
-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 f1135d488f..8b55101f66 100644
--- a/tests/integration/targets/sysrc/tasks/main.yml
+++ b/tests/integration/targets/sysrc/tasks/main.yml
@@ -141,12 +141,12 @@
#
# NOTE: currently fails with FreeBSD 12 with minor version less than 4
# NOTE: currently fails with FreeBSD 13 with minor version less than 4
- # NOTE: currently fails with FreeBSD 14 with minor version less than 2
+ # NOTE: currently fails with FreeBSD 14 with minor version less than 1
#
when: >-
ansible_distribution_version is version('12.4', '>=') and ansible_distribution_version is version('13', '<')
or ansible_distribution_version is version('13.4', '>=') and ansible_distribution_version is version('14', '<')
- or ansible_distribution_version is version('14.2', '>=')
+ or ansible_distribution_version is version('14.1', '>=')
block:
- name: Setup testjail
include_tasks: setup-testjail.yml
@@ -369,79 +369,14 @@
- "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.stdout }}"
+ content: "{{ cached_etc_rcconf_content }}"
dest: /etc/rc.conf
- name: Restore /boot/loader.conf
copy:
- content: "{{ cached_boot_loaderconf_content.stdout }}"
+ content: "{{ cached_boot_loaderconf_content }}"
dest: /boot/loader.conf
diff --git a/tests/integration/targets/ufw/aliases b/tests/integration/targets/ufw/aliases
index 07227edc3f..0d89cc8fea 100644
--- a/tests/integration/targets/ufw/aliases
+++ b/tests/integration/targets/ufw/aliases
@@ -15,7 +15,6 @@ 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 083656f786..80743b7cb5 100644
--- a/tests/integration/targets/zpool/aliases
+++ b/tests/integration/targets/zpool/aliases
@@ -12,4 +12,3 @@ skip/osx
skip/macos
skip/rhel
skip/docker
-skip/alpine # TODO: figure out what goes wrong
diff --git a/tests/sanity/ignore-2.20.txt b/tests/sanity/ignore-2.15.txt
similarity index 54%
rename from tests/sanity/ignore-2.20.txt
rename to tests/sanity/ignore-2.15.txt
index 97751e5a92..63b01e5cd6 100644
--- a/tests/sanity/ignore-2.20.txt
+++ b/tests/sanity/ignore-2.15.txt
@@ -1,14 +1,21 @@
+.azure-pipelines/scripts/publish-codecov.py replace-urlopen
+plugins/connection/wsl.py yamllint:unparsable-with-libyaml
+plugins/inventory/gitlab_runners.py yamllint:unparsable-with-libyaml
+plugins/inventory/iocage.py yamllint:unparsable-with-libyaml
+plugins/inventory/linode.py yamllint:unparsable-with-libyaml
+plugins/inventory/lxd.py yamllint:unparsable-with-libyaml
+plugins/inventory/nmap.py yamllint:unparsable-with-libyaml
+plugins/inventory/scaleway.py yamllint:unparsable-with-libyaml
+plugins/inventory/virtualbox.py yamllint:unparsable-with-libyaml
+plugins/lookup/dependent.py validate-modules:unidiomatic-typecheck
plugins/modules/consul_session.py validate-modules:parameter-state-invalid-choice
plugins/modules/homectl.py import-3.11 # Uses deprecated stdlib library 'crypt'
-plugins/modules/homectl.py import-3.12 # Uses deprecated stdlib library 'crypt'
plugins/modules/iptables_state.py validate-modules:undocumented-parameter # params _back and _timeout used by action plugin
plugins/modules/lxc_container.py validate-modules:use-run-command-not-popen
plugins/modules/osx_defaults.py validate-modules:parameter-state-invalid-choice
plugins/modules/parted.py validate-modules:parameter-state-invalid-choice
plugins/modules/rhevm.py validate-modules:parameter-state-invalid-choice
plugins/modules/udm_user.py import-3.11 # Uses deprecated stdlib library 'crypt'
-plugins/modules/udm_user.py import-3.12 # Uses deprecated stdlib library 'crypt'
plugins/modules/xfconf.py validate-modules:return-syntax-error
-plugins/module_utils/univention_umc.py pylint:use-yield-from # suggested construct does not work with Python 2
-tests/unit/plugins/modules/uthelper.py pylint:use-yield-from # suggested construct does not work with Python 2
+plugins/test/ansible_type.py yamllint:unparsable-with-libyaml
tests/unit/plugins/modules/test_gio_mime.yaml no-smart-quotes
diff --git a/tests/sanity/ignore-2.20.txt.license b/tests/sanity/ignore-2.15.txt.license
similarity index 100%
rename from tests/sanity/ignore-2.20.txt.license
rename to tests/sanity/ignore-2.15.txt.license
diff --git a/tests/sanity/ignore-2.16.txt b/tests/sanity/ignore-2.16.txt
index 1a4c8f89b1..1642c0d275 100644
--- a/tests/sanity/ignore-2.16.txt
+++ b/tests/sanity/ignore-2.16.txt
@@ -1,4 +1,3 @@
-plugins/callback/tasks_only.py yamllint:unparsable-with-libyaml
plugins/connection/wsl.py yamllint:unparsable-with-libyaml
plugins/inventory/gitlab_runners.py yamllint:unparsable-with-libyaml
plugins/inventory/iocage.py yamllint:unparsable-with-libyaml
diff --git a/tests/unit/plugins/connection/test_wsl.py b/tests/unit/plugins/connection/test_wsl.py
index c28d1fbec9..768f9a8d27 100644
--- a/tests/unit/plugins/connection/test_wsl.py
+++ b/tests/unit/plugins/connection/test_wsl.py
@@ -12,14 +12,12 @@ 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
from pathlib import Path
-from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import patch, MagicMock, mock_open
-
-
-paramiko = pytest.importorskip('paramiko')
+from unittest.mock import patch, MagicMock, mock_open
@pytest.fixture
diff --git a/tests/unit/plugins/inventory/test_linode.py b/tests/unit/plugins/inventory/test_linode.py
index ead41591a7..0f239f2dd9 100644
--- a/tests/unit/plugins/inventory/test_linode.py
+++ b/tests/unit/plugins/inventory/test_linode.py
@@ -7,8 +7,14 @@ from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import pytest
+import sys
linode_apiv4 = pytest.importorskip('linode_api4')
+mandatory_py_version = pytest.mark.skipif(
+ sys.version_info < (2, 7),
+ reason='The linode_api4 dependency requires python2.7 or higher'
+)
+
from ansible.errors import AnsibleError
from ansible.parsing.dataloader import DataLoader
diff --git a/tests/unit/plugins/lookup/test_dependent.py b/tests/unit/plugins/lookup/test_dependent.py
index fef53dec00..ad02cecf19 100644
--- a/tests/unit/plugins/lookup/test_dependent.py
+++ b/tests/unit/plugins/lookup/test_dependent.py
@@ -9,9 +9,10 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
-from ansible.template import Templar
-
from ansible_collections.community.internal_test_tools.tests.unit.compat.unittest import TestCase
+from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import (
+ MagicMock,
+)
from ansible_collections.community.internal_test_tools.tests.unit.utils.trust import make_trusted
from ansible.plugins.loader import lookup_loader
@@ -19,7 +20,8 @@ from ansible.plugins.loader import lookup_loader
class TestLookupModule(TestCase):
def setUp(self):
- templar = Templar(loader=None)
+ templar = MagicMock()
+ templar._loader = None
self.lookup = lookup_loader.get("community.general.dependent", templar=templar)
def test_empty(self):
diff --git a/tests/unit/plugins/module_utils/net_tools/pritunl/test_api.py b/tests/unit/plugins/module_utils/net_tools/pritunl/test_api.py
index a176a55768..6ddc827a14 100644
--- a/tests/unit/plugins/module_utils/net_tools/pritunl/test_api.py
+++ b/tests/unit/plugins/module_utils/net_tools/pritunl/test_api.py
@@ -13,7 +13,7 @@ from ansible.module_utils.six import iteritems
from ansible_collections.community.general.plugins.module_utils.net_tools.pritunl import (
api,
)
-from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import MagicMock
+from mock import MagicMock
__metaclass__ = type
diff --git a/tests/unit/plugins/module_utils/xenserver/conftest.py b/tests/unit/plugins/module_utils/xenserver/conftest.py
index 6190bb1ea0..3fcea55617 100644
--- a/tests/unit/plugins/module_utils/xenserver/conftest.py
+++ b/tests/unit/plugins/module_utils/xenserver/conftest.py
@@ -16,7 +16,7 @@ import pytest
from .FakeAnsibleModule import FakeAnsibleModule
from ansible.module_utils import six
-from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import MagicMock
+from mock import MagicMock
@pytest.fixture
diff --git a/tests/unit/plugins/modules/test_apk.py b/tests/unit/plugins/modules/test_apk.py
index 2f21f9bea4..b25d10f207 100644
--- a/tests/unit/plugins/modules/test_apk.py
+++ b/tests/unit/plugins/modules/test_apk.py
@@ -21,7 +21,7 @@ class TestApkQueryLatest(unittest.TestCase):
@mock.patch('ansible_collections.community.general.plugins.modules.apk.AnsibleModule')
def test_not_latest(self, mock_module):
- apk.APK_PATH = [""]
+ apk.APK_PATH = ""
for module_name in self.module_names:
command_output = module_name + '-2.0.0-r1 < 3.0.0-r2 '
mock_module.run_command.return_value = (0, command_output, None)
@@ -30,7 +30,7 @@ class TestApkQueryLatest(unittest.TestCase):
@mock.patch('ansible_collections.community.general.plugins.modules.apk.AnsibleModule')
def test_latest(self, mock_module):
- apk.APK_PATH = [""]
+ apk.APK_PATH = ""
for module_name in self.module_names:
command_output = module_name + '-2.0.0-r1 = 2.0.0-r1 '
mock_module.run_command.return_value = (0, command_output, None)
diff --git a/tests/unit/plugins/modules/test_github_repo.py b/tests/unit/plugins/modules/test_github_repo.py
index 9a76fc4b69..bbb1f624f4 100644
--- a/tests/unit/plugins/modules/test_github_repo.py
+++ b/tests/unit/plugins/modules/test_github_repo.py
@@ -7,13 +7,12 @@ __metaclass__ = type
import re
import json
-import pytest
+import sys
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')
+GITHUB_MINIMUM_PYTHON_VERSION = (2, 7)
@urlmatch(netloc=r'.*')
@@ -168,6 +167,11 @@ def delete_repo_notfound_mock(url, request):
class TestGithubRepo(unittest.TestCase):
+ def setUp(self):
+ if sys.version_info < GITHUB_MINIMUM_PYTHON_VERSION:
+ self.skipTest("Python %s+ is needed for PyGithub" %
+ ",".join(map(str, GITHUB_MINIMUM_PYTHON_VERSION)))
+
@with_httmock(get_orgs_mock)
@with_httmock(get_repo_notfound_mock)
@with_httmock(create_new_org_repo_mock)
diff --git a/tests/unit/plugins/modules/test_jenkins_credential.py b/tests/unit/plugins/modules/test_jenkins_credential.py
deleted file mode 100644
index b74b7c4b59..0000000000
--- a/tests/unit/plugins/modules/test_jenkins_credential.py
+++ /dev/null
@@ -1,348 +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
-
-from __future__ import absolute_import, division, print_function
-
-__metaclass__ = type
-
-from ansible_collections.community.general.plugins.modules import jenkins_credential
-from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import (
- MagicMock,
- patch,
- mock_open,
-)
-
-import json
-import sys
-
-if sys.version_info[0] == 3:
- import builtins
- open_path = "builtins.open"
-else:
- import __builtin__ as builtins
- open_path = "__builtin__.open"
-
-
-def test_validate_file_exist_passes_when_file_exists():
- module = MagicMock()
- with patch("os.path.exists", return_value=True):
- jenkins_credential.validate_file_exist(module, "/some/file/path")
- module.fail_json.assert_not_called()
-
-
-def test_validate_file_exist_fails_when_file_missing():
- module = MagicMock()
- with patch("os.path.exists", return_value=False):
- jenkins_credential.validate_file_exist(module, "/missing/file/path")
- module.fail_json.assert_called_once_with(
- msg="File not found: /missing/file/path"
- )
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_get_jenkins_crumb_sets_crumb_header(fetch_mock):
- module = MagicMock()
- module.params = {"type": "file", "url": "http://localhost:8080"}
- headers = {}
-
- fake_response = MagicMock()
- fake_response.read.return_value = json.dumps(
- {"crumbRequestField": "crumb_field", "crumb": "abc123"}
- ).encode("utf-8")
-
- fetch_mock.return_value = (
- fake_response,
- {"status": 200, "set-cookie": "JSESSIONID=something; Path=/"},
- )
-
- crumb_request_field, crumb, session_coockie = jenkins_credential.get_jenkins_crumb(
- module, headers
- )
-
- assert "Cookie" not in headers
- assert "crumb_field" in headers
- assert crumb == "abc123"
- assert headers[crumb_request_field] == crumb
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_get_jenkins_crumb_sets_cookie_if_type_token(fetch_mock):
- module = MagicMock()
- module.params = {"type": "token", "url": "http://localhost:8080"}
- headers = {}
-
- fake_response = MagicMock()
- fake_response.read.return_value = json.dumps(
- {"crumbRequestField": "crumb_field", "crumb": "secure"}
- ).encode("utf-8")
-
- fetch_mock.return_value = (
- fake_response,
- {"status": 200, "set-cookie": "JSESSIONID=token-cookie; Path=/"},
- )
-
- crumb_request_field, crumb, session_cookie = jenkins_credential.get_jenkins_crumb(
- module, headers
- )
-
- assert "crumb_field" in headers
- assert crumb == "secure"
- assert headers[crumb_request_field] == crumb
- assert headers["Cookie"] == session_cookie
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_get_jenkins_crumb_fails_on_non_200_status(fetch_mock):
- module = MagicMock()
- module.params = {"type": "file", "url": "http://localhost:8080"}
- headers = {}
-
- fetch_mock.return_value = (MagicMock(), {"status": 403})
-
- jenkins_credential.get_jenkins_crumb(module, headers)
-
- module.fail_json.assert_called_once()
- assert "Failed to fetch Jenkins crumb" in module.fail_json.call_args[1]["msg"]
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_get_jenkins_crumb_removes_job_from_url(fetch_mock):
- module = MagicMock()
- module.params = {"type": "file", "url": "http://localhost:8080/job/test"}
- headers = {}
-
- fake_response = MagicMock()
- fake_response.read.return_value = json.dumps(
- {"crumbRequestField": "Jenkins-Crumb", "crumb": "xyz"}
- ).encode("utf-8")
-
- fetch_mock.return_value = (fake_response, {"status": 200, "set-cookie": ""})
-
- jenkins_credential.get_jenkins_crumb(module, headers)
-
- url_called = fetch_mock.call_args[0][1]
- assert url_called == "http://localhost:8080/crumbIssuer/api/json"
-
-
-def test_clean_data_removes_extraneous_fields():
- data = {
- "id": "cred1",
- "description": "test",
- "jenkins_user": "admin",
- "token": "secret",
- "url": "http://localhost:8080",
- "file_path": None,
- }
- expected = {"id": "cred1", "description": "test"}
- result = jenkins_credential.clean_data(data)
- assert result == expected, "Expected {}, got {}".format(expected, result)
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_target_exists_returns_true_on_200(fetch_url_mock):
- module = MagicMock()
- module.params = {
- "url": "http://localhost:8080",
- "location": "system",
- "scope": "_",
- "id": "my-id",
- "jenkins_user": "admin",
- "token": "secret",
- "type": "file",
- }
-
- fetch_url_mock.return_value = (MagicMock(), {"status": 200})
- assert jenkins_credential.target_exists(module) is True
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_target_exists_returns_false_on_404(fetch_url_mock):
- module = MagicMock()
- module.params = {
- "url": "http://localhost:8080",
- "location": "system",
- "scope": "_",
- "id": "my-id",
- "jenkins_user": "admin",
- "token": "secret",
- "type": "file",
- }
-
- fetch_url_mock.return_value = (MagicMock(), {"status": 404})
- assert jenkins_credential.target_exists(module) is False
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_target_exists_calls_fail_json_on_unexpected_status(fetch_url_mock):
- module = MagicMock()
- module.params = {
- "url": "http://localhost:8080",
- "location": "system",
- "scope": "_",
- "id": "my-id",
- "jenkins_user": "admin",
- "token": "secret",
- "type": "file",
- }
-
- fetch_url_mock.return_value = (MagicMock(), {"status": 500})
- jenkins_credential.target_exists(module)
- module.fail_json.assert_called_once()
- assert "Unexpected status code" in module.fail_json.call_args[1]["msg"]
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_target_exists_skips_check_for_token_type(fetch_url_mock):
- module = MagicMock()
- module.params = {
- "type": "token",
- "url": "ignored",
- "location": "ignored",
- "scope": "ignored",
- "id": "ignored",
- "jenkins_user": "ignored",
- "token": "ignored",
- }
-
- assert jenkins_credential.target_exists(module) is False
- fetch_url_mock.assert_not_called()
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url"
-)
-def test_delete_target_fails_deleting(fetch_mock):
- module = MagicMock()
- module.params = {
- "type": "token",
- "jenkins_user": "admin",
- "url": "http://localhost:8080",
- "id": "token-id",
- "location": "system",
- "scope": "_",
- }
- headers = {"Authorization": "Basic abc", "Content-Type": "whatever"}
-
- fetch_mock.return_value = (MagicMock(), {"status": 500})
-
- jenkins_credential.delete_target(module, headers)
-
- module.fail_json.assert_called_once()
- assert "Failed to delete" in module.fail_json.call_args[1]["msg"]
-
-
-@patch(
- "ansible_collections.community.general.plugins.modules.jenkins_credential.fetch_url",
- side_effect=Exception("network error"),
-)
-def test_delete_target_raises_exception(fetch_mock):
- module = MagicMock()
- module.params = {
- "type": "scope",
- "jenkins_user": "admin",
- "location": "system",
- "url": "http://localhost:8080",
- "id": "domain-id",
- "scope": "_",
- }
- headers = {"Authorization": "Basic auth"}
-
- jenkins_credential.delete_target(module, headers)
-
- module.fail_json.assert_called_once()
- assert "Exception during delete" in module.fail_json.call_args[1]["msg"]
- assert "network error" in module.fail_json.call_args[1]["msg"]
-
-
-def test_read_privateKey_returns_trimmed_contents():
- module = MagicMock()
- module.params = {"private_key_path": "/fake/path/key.pem"}
-
- mocked_file = mock_open(
- read_data="\n \t -----BEGIN PRIVATE KEY-----\nKEYDATA\n-----END PRIVATE KEY----- \n\n"
- )
- with patch(open_path, mocked_file):
- result = jenkins_credential.read_privateKey(module)
-
- expected = "-----BEGIN PRIVATE KEY-----\nKEYDATA\n-----END PRIVATE KEY-----"
-
- assert result == expected
- mocked_file.assert_called_once_with("/fake/path/key.pem", "r")
-
-
-def test_read_privateKey_handles_file_read_error():
- module = MagicMock()
- module.params = {"private_key_path": "/invalid/path.pem"}
-
- with patch(open_path, side_effect=IOError("cannot read file")):
- jenkins_credential.read_privateKey(module)
-
- module.fail_json.assert_called_once()
- assert "Failed to read private key file" in module.fail_json.call_args[1]["msg"]
-
-
-def test_embed_file_into_body_returns_multipart_fields():
- module = MagicMock()
- file_path = "/fake/path/secret.pem"
- credentials = {"id": "my-id"}
- fake_file_content = b"MY SECRET DATA"
-
- mock = mock_open()
- mock.return_value.read.return_value = fake_file_content
-
- with patch("os.path.basename", return_value="secret.pem"), patch.object(
- builtins, "open", mock
- ):
- body, content_type = jenkins_credential.embed_file_into_body(
- module, file_path, credentials.copy()
- )
-
- assert "multipart/form-data; boundary=" in content_type
-
- # Check if file content is embedded in body
- assert b"MY SECRET DATA" in body
- assert b'filename="secret.pem"' in body
-
-
-def test_embed_file_into_body_fails_when_file_unreadable():
- module = MagicMock()
- file_path = "/fake/path/missing.pem"
- credentials = {"id": "something"}
-
- with patch(open_path, side_effect=IOError("can't read file")):
- jenkins_credential.embed_file_into_body(module, file_path, credentials)
-
- module.fail_json.assert_called_once()
- assert "Failed to read file" in module.fail_json.call_args[1]["msg"]
-
-
-def test_embed_file_into_body_injects_file_keys_into_credentials():
- module = MagicMock()
- file_path = "/fake/path/file.txt"
- credentials = {"id": "test"}
-
- with patch(open_path, mock_open(read_data=b"1234")), patch(
- "os.path.basename", return_value="file.txt"
- ):
-
- jenkins_credential.embed_file_into_body(module, file_path, credentials)
-
- assert credentials["file"] == "file0"
- assert credentials["fileName"] == "file.txt"
diff --git a/tests/unit/plugins/modules/test_jenkins_plugin.py b/tests/unit/plugins/modules/test_jenkins_plugin.py
index 5bd14bcbee..194cc2d724 100644
--- a/tests/unit/plugins/modules/test_jenkins_plugin.py
+++ b/tests/unit/plugins/modules/test_jenkins_plugin.py
@@ -6,16 +6,9 @@ from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from io import BytesIO
-import json
-from collections import OrderedDict
from ansible_collections.community.general.plugins.modules.jenkins_plugin import JenkinsPlugin
from ansible.module_utils.common._collections_compat import Mapping
-from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import (
- MagicMock,
- patch,
-)
-from ansible.module_utils.urls import basic_auth_header
def pass_function(*args, **kwargs):
@@ -197,98 +190,3 @@ def isInList(l, i):
if item == i:
return True
return False
-
-
-@patch("ansible_collections.community.general.plugins.modules.jenkins_plugin.fetch_url")
-def test__get_latest_compatible_plugin_version(fetch_mock, mocker):
- "test the latest compatible plugin version retrieval"
-
- params = {
- "url": "http://fake.jenkins.server",
- "timeout": 30,
- "name": "git",
- "version": "latest",
- "updates_url": ["https://some.base.url"],
- "plugin_versions_url_segment": ["plugin-versions.json"],
- "latest_plugins_url_segments": ["test_latest"],
- "jenkins_home": "/var/lib/jenkins",
- }
- module = mocker.Mock()
- module.params = params
-
- jenkins_info = {"x-jenkins": "2.263.1"}
- jenkins_response = MagicMock()
- jenkins_response.read.return_value = b"{}"
-
- plugin_data = {
- "plugins": {
- "git": OrderedDict([
- ("4.8.2", {"requiredCore": "2.263.1"}),
- ("4.8.3", {"requiredCore": "2.263.1"}),
- ("4.9.0", {"requiredCore": "2.289.1"}),
- ("4.9.1", {"requiredCore": "2.289.1"}),
- ])
- }
- }
- plugin_versions_response = MagicMock()
- plugin_versions_response.read.return_value = json.dumps(plugin_data).encode("utf-8")
- plugin_versions_info = {"status": 200}
-
- def fetch_url_side_effect(module, url, **kwargs):
- if "plugin-versions.json" in url:
- return (plugin_versions_response, plugin_versions_info)
- else:
- return (jenkins_response, jenkins_info)
-
- fetch_mock.side_effect = fetch_url_side_effect
-
- JenkinsPlugin._csrf_enabled = lambda self: False
- JenkinsPlugin._get_installed_plugins = lambda self: None
-
- jenkins_plugin = JenkinsPlugin(module)
- latest_version = jenkins_plugin._get_latest_compatible_plugin_version()
- assert latest_version == '4.8.3'
-
-
-@patch("ansible_collections.community.general.plugins.modules.jenkins_plugin.fetch_url")
-def test__get_urls_data_sets_correct_headers(fetch_mock, mocker):
- params = {
- "url": "http://jenkins.example.com",
- "timeout": 30,
- "name": "git",
- "jenkins_home": "/var/lib/jenkins",
- "updates_url": ["http://updates.example.com"],
- "latest_plugins_url_segments": ["latest"],
- "update_json_url_segment": ["update-center.json"],
- "versioned_plugins_url_segments": ["plugins"],
- "url_username": "jenkins_user",
- "url_password": "jenkins_pass",
- "updates_url_username": "update_user",
- "updates_url_password": "update_pass",
- }
- module = mocker.Mock()
- module.params = params
-
- dummy_response = MagicMock()
- fetch_mock.return_value = (dummy_response, {"status": 200})
-
- JenkinsPlugin._csrf_enabled = lambda self: False
- JenkinsPlugin._get_installed_plugins = lambda self: None
-
- jp = JenkinsPlugin(module)
-
- update_url = "http://updates.example.com/plugin-versions.json"
- jp._get_urls_data([update_url])
-
- jenkins_url = "http://jenkins.example.com/some-endpoint"
- jp._get_urls_data([jenkins_url])
-
- calls = fetch_mock.call_args_list
-
- dummy, kwargs_2 = calls[1]
- jenkins_auth = basic_auth_header("jenkins_user", "jenkins_pass")
- assert kwargs_2["headers"]["Authorization"] == jenkins_auth
-
- dummy, kwargs_1 = calls[0]
- updates_auth = basic_auth_header("update_user", "update_pass")
- assert kwargs_1["headers"]["Authorization"] == updates_auth
diff --git a/tests/unit/plugins/modules/test_linode_v4.py b/tests/unit/plugins/modules/test_linode_v4.py
index 47e77a52e8..d4bcdf3243 100644
--- a/tests/unit/plugins/modules/test_linode_v4.py
+++ b/tests/unit/plugins/modules/test_linode_v4.py
@@ -7,10 +7,15 @@ __metaclass__ = type
import json
import os
+import sys
import pytest
linode_apiv4 = pytest.importorskip('linode_api4')
+mandatory_py_version = pytest.mark.skipif(
+ sys.version_info < (2, 7),
+ reason='The linode_api4 dependency requires python2.7 or higher'
+)
from linode_api4.errors import ApiError as LinodeApiError
from linode_api4 import LinodeClient
diff --git a/tests/unit/plugins/modules/test_lxca_cmms.py b/tests/unit/plugins/modules/test_lxca_cmms.py
index 3c79148022..888a6c8d52 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(),
- chassis=dict(),
+ uuid=dict(default=None),
+ chassis=dict(default=None),
)
_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 1f8ab84368..98c8a551d4 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(),
- chassis=dict(),
+ uuid=dict(default=None),
+ chassis=dict(default=None),
)
_setup_conn.return_value = "Fake connection"
_execute_module.return_value = []
diff --git a/tests/unit/plugins/modules/test_modprobe.py b/tests/unit/plugins/modules/test_modprobe.py
index bada481cfc..12f6af7273 100644
--- a/tests/unit/plugins/modules/test_modprobe.py
+++ b/tests/unit/plugins/modules/test_modprobe.py
@@ -147,7 +147,7 @@ class TestUnloadModule(ModuleTestCase):
class TestModuleIsLoadedPersistently(ModuleTestCase):
def setUp(self):
- if sys.version_info[0] == 3 and sys.version_info[1] < 7:
+ if (sys.version_info[0] == 3 and sys.version_info[1] < 7) or (sys.version_info[0] == 2 and sys.version_info[1] < 7):
self.skipTest("open_mock doesn't support readline in earlier python versions")
super(TestModuleIsLoadedPersistently, self).setUp()
@@ -222,7 +222,7 @@ class TestModuleIsLoadedPersistently(ModuleTestCase):
class TestPermanentParams(ModuleTestCase):
def setUp(self):
- if sys.version_info[0] == 3 and sys.version_info[1] < 7:
+ if (sys.version_info[0] == 3 and sys.version_info[1] < 7) or (sys.version_info[0] == 2 and sys.version_info[1] < 7):
self.skipTest("open_mock doesn't support readline in earlier python versions")
super(TestPermanentParams, self).setUp()
diff --git a/tests/unit/plugins/modules/test_pacemaker_cluster.py b/tests/unit/plugins/modules/test_pacemaker_cluster.py
deleted file mode 100644
index ad69411a9c..0000000000
--- a/tests/unit/plugins/modules/test_pacemaker_cluster.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- coding: utf-8 -*-
-# Author: Dexter Le (dextersydney2001@gmail.com)
-# Largely adapted from test_redhat_subscription by
-# Jiri Hnidek (jhnidek@redhat.com)
-#
-# Copyright (c) Dexter Le (dextersydney2001@gmail.com)
-# Copyright (c) Jiri Hnidek (jhnidek@redhat.com)
-#
-# 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
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible_collections.community.general.plugins.modules import pacemaker_cluster
-from .uthelper import UTHelper, RunCommandMock
-
-UTHelper.from_module(pacemaker_cluster, __name__, mocks=[RunCommandMock])
diff --git a/tests/unit/plugins/modules/test_pacemaker_cluster.yaml b/tests/unit/plugins/modules/test_pacemaker_cluster.yaml
deleted file mode 100644
index 785a7cb4f6..0000000000
--- a/tests/unit/plugins/modules/test_pacemaker_cluster.yaml
+++ /dev/null
@@ -1,488 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) Dexter Le (dextersydney2001@gmail.com)
-# 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
-
----
-anchors:
- environ: &env-def {environ_update: {LANGUAGE: C, LC_ALL: C}, check_rc: false}
-test_cases:
- - id: test_online_minimal_input_initial_online_all_no_maintenance
- input:
- state: online
- output:
- changed: false
- previous_value: ' * Online: [ pc1, pc2, pc3 ]'
- value: ' * Online: [ pc1, pc2, pc3 ]'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - command: [/testbin/pcs, cluster, start, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Starting Cluster..."
- err: ""
- - command: [/testbin/pcs, property, config]
- environ: *env-def
- rc: 1
- out: |
- Cluster Properties: cib-bootstrap-options
- cluster-infrastructure=corosync
- cluster-name=hacluster
- dc-version=2.1.9-1.fc41-7188dbf
- have-watchdog=false
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - id: test_online_minimal_input_initial_offline_all_maintenance
- input:
- state: online
- output:
- changed: true
- previous_value: 'Error: cluster is not currently running on this node'
- value: ' * Online: [ pc1, pc2, pc3 ]'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 1
- out: 'Error: cluster is not currently running on this node'
- err: ""
- - command: [/testbin/pcs, cluster, start, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Starting Cluster..."
- err: ""
- - command: [/testbin/pcs, property, config]
- environ: *env-def
- rc: 0
- out: |
- Cluster Properties: cib-bootstrap-options
- cluster-infrastructure=corosync
- cluster-name=hacluster
- dc-version=2.1.9-1.fc41-7188dbf
- have-watchdog=false
- maintenance-mode=true
- err: ""
- - command: [/testbin/pcs, property, set, maintenance-mode=false]
- environ: *env-def
- rc: 0
- out: ""
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - id: test_online_minimal_input_initial_offline_single_nonlocal_no_maintenance
- input:
- state: online
- name: pc2
- output:
- changed: true
- previous_value: '* Node pc2: UNCLEAN (offline)\n * Online: [ pc1, pc3 ]'
- value: ' * Online: [ pc1, pc2, pc3 ]'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: '* Node pc2: UNCLEAN (offline)\n * Online: [ pc1, pc3 ]'
- err: ""
- - command: [/testbin/pcs, cluster, start, pc2, --wait=300]
- environ: *env-def
- rc: 0
- out: "Starting Cluster..."
- err: ""
- - command: [/testbin/pcs, property, config]
- environ: *env-def
- rc: 1
- out: |
- Cluster Properties: cib-bootstrap-options
- cluster-infrastructure=corosync
- cluster-name=hacluster
- dc-version=2.1.9-1.fc41-7188dbf
- have-watchdog=false
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - id: test_online_minimal_input_initial_offline_single_local_no_maintenance
- input:
- state: online
- name: pc1
- output:
- changed: true
- previous_value: 'Error: cluster is not currently running on this node'
- value: ' * Online: [ pc1, pc2, pc3 ]'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 1
- out: 'Error: cluster is not currently running on this node'
- err: ""
- - command: [/testbin/pcs, cluster, start, pc1, --wait=300]
- environ: *env-def
- rc: 0
- out: "Starting Cluster..."
- err: ""
- - command: [/testbin/pcs, property, config]
- environ: *env-def
- rc: 1
- out: |
- Cluster Properties: cib-bootstrap-options
- cluster-infrastructure=corosync
- cluster-name=hacluster
- dc-version=2.1.9-1.fc41-7188dbf
- have-watchdog=false
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - id: test_offline_minimal_input_initial_online_all
- input:
- state: offline
- output:
- changed: true
- previous_value: ' * Online: [ pc1, pc2, pc3 ]'
- value: 'Error: cluster is not currently running on this node'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - command: [/testbin/pcs, cluster, stop, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Stopping Cluster..."
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 1
- out: 'Error: cluster is not currently running on this node'
- err: ""
- - id: test_offline_minimal_input_initial_offline_all
- input:
- state: offline
- output:
- changed: false
- previous_value: 'Error: cluster is not currently running on this node'
- value: 'Error: cluster is not currently running on this node'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 1
- out: 'Error: cluster is not currently running on this node'
- err: ""
- - command: [/testbin/pcs, cluster, stop, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Stopping Cluster..."
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 1
- out: 'Error: cluster is not currently running on this node'
- err: ""
- - id: test_offline_minimal_input_initial_offline_single_nonlocal
- input:
- state: offline
- name: pc3
- output:
- changed: true
- previous_value: '* Node pc2: UNCLEAN (offline)\n * Online: [ pc1, pc3 ]'
- value: '* Node pc2: UNCLEAN (offline)\n* Node pc3: UNCLEAN (offline)\n * Online: [ pc1 ]'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: '* Node pc2: UNCLEAN (offline)\n * Online: [ pc1, pc3 ]'
- err: ""
- - command: [/testbin/pcs, cluster, stop, pc3, --wait=300]
- environ: *env-def
- rc: 0
- out: "Stopping Cluster..."
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: '* Node pc2: UNCLEAN (offline)\n* Node pc3: UNCLEAN (offline)\n * Online: [ pc1 ]'
- err: ""
- - id: test_restart_minimal_input_initial_online_all_no_maintenance
- input:
- state: restart
- output:
- changed: false
- previous_value: ' * Online: [ pc1, pc2, pc3 ]'
- value: ' * Online: [ pc1, pc2, pc3 ]'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - command: [/testbin/pcs, cluster, stop, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Stopping Cluster..."
- err: ""
- - command: [/testbin/pcs, cluster, start, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Starting Cluster..."
- err: ""
- - command: [/testbin/pcs, property, config]
- environ: *env-def
- rc: 1
- out: |
- Cluster Properties: cib-bootstrap-options
- cluster-infrastructure=corosync
- cluster-name=hacluster
- dc-version=2.1.9-1.fc41-7188dbf
- have-watchdog=false
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - id: test_restart_minimal_input_initial_offline_all_no_maintenance
- input:
- state: restart
- output:
- changed: true
- previous_value: 'Error: cluster is not currently running on this node'
- value: ' * Online: [ pc1, pc2, pc3 ]'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 1
- out: 'Error: cluster is not currently running on this node'
- err: ""
- - command: [/testbin/pcs, cluster, stop, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Stopping Cluster..."
- err: ""
- - command: [/testbin/pcs, cluster, start, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Starting Cluster..."
- err: ""
- - command: [/testbin/pcs, property, config]
- environ: *env-def
- rc: 1
- out: |
- Cluster Properties: cib-bootstrap-options
- cluster-infrastructure=corosync
- cluster-name=hacluster
- dc-version=2.1.9-1.fc41-7188dbf
- have-watchdog=false
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - id: test_restart_minimal_input_initial_offline_all_maintenance
- input:
- state: restart
- output:
- changed: true
- previous_value: 'Error: cluster is not currently running on this node'
- value: ' * Online: [ pc1, pc2, pc3 ]'
- mocks:
- run_command:
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 1
- out: 'Error: cluster is not currently running on this node'
- err: ""
- - command: [/testbin/pcs, cluster, stop, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Stopping Cluster..."
- err: ""
- - command: [/testbin/pcs, cluster, start, --all, --wait=300]
- environ: *env-def
- rc: 0
- out: "Starting Cluster..."
- err: ""
- - command: [/testbin/pcs, property, config]
- environ: *env-def
- rc: 0
- out: |
- Cluster Properties: cib-bootstrap-options
- cluster-infrastructure=corosync
- cluster-name=hacluster
- dc-version=2.1.9-1.fc41-7188dbf
- have-watchdog=false
- maintenance-mode=true
- err: ""
- - command: [/testbin/pcs, property, set, maintenance-mode=false]
- environ: *env-def
- rc: 0
- out: ""
- err: ""
- - command: [/testbin/pcs, cluster, status]
- environ: *env-def
- rc: 0
- out: ' * Online: [ pc1, pc2, pc3 ]'
- err: ""
- - id: test_maintenance_minimal_input_initial_online
- input:
- state: maintenance
- output:
- changed: true
- previous_value: 'maintenance-mode=false (default)'
- value: 'maintenance-mode=true'
- mocks:
- run_command:
- - command: [/testbin/pcs, property, config, maintenance-mode]
- environ: *env-def
- rc: 0
- out: 'maintenance-mode=false (default)'
- err: ""
- - command: [/testbin/pcs, property, set, maintenance-mode=true]
- environ: *env-def
- rc: 0
- out: ""
- err: ""
- - command: [/testbin/pcs, property, config, maintenance-mode]
- environ: *env-def
- rc: 0
- out: 'maintenance-mode=true'
- err: ""
- - id: test_maintenance_minimal_input_initial_offline
- input:
- state: maintenance
- output:
- failed: true
- msg: "pcs failed with error (rc=1): Error: unable to get cib"
- mocks:
- run_command:
- - command: [/testbin/pcs, property, config, maintenance-mode]
- environ: *env-def
- rc: 1
- out: ""
- err: "Error: unable to get cib"
- - command: [/testbin/pcs, property, set, maintenance-mode=true]
- environ: *env-def
- rc: 1
- out: ""
- err: "Error: unable to get cib"
- - id: test_maintenance_minimal_input_initial_maintenance
- input:
- state: maintenance
- output:
- changed: false
- previous_value: 'maintenance-mode=true'
- value: 'maintenance-mode=true'
- mocks:
- run_command:
- - command: [/testbin/pcs, property, config, maintenance-mode]
- environ: *env-def
- rc: 0
- out: 'maintenance-mode=true'
- err: ""
- - command: [/testbin/pcs, property, set, maintenance-mode=true]
- environ: *env-def
- rc: 0
- out: ""
- err: ""
- - command: [/testbin/pcs, property, config, maintenance-mode]
- environ: *env-def
- rc: 0
- out: 'maintenance-mode=true'
- err: ""
- - id: test_cleanup_minimal_input_initial_resources_not_exist
- input:
- state: cleanup
- output:
- changed: false
- previous_value: "NO resources configured"
- value: "NO resources configured"
- mocks:
- run_command:
- - command: [/testbin/pcs, resource, status]
- environ: *env-def
- rc: 0
- out: "NO resources configured"
- err: ""
- - command: [/testbin/pcs, resource, cleanup]
- environ: *env-def
- rc: 0
- out: "Cleaned up all resources on all nodes"
- err: ""
- - command: [/testbin/pcs, resource, status]
- environ: *env-def
- rc: 0
- out: "NO resources configured"
- err: ""
- - id: test_cleanup_minimal_input_initial_resources_exists
- input:
- state: cleanup
- output:
- changed: true
- previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
- value: "NO resources configured"
- mocks:
- run_command:
- - command: [/testbin/pcs, resource, status]
- environ: *env-def
- rc: 0
- out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
- err: ""
- - command: [/testbin/pcs, resource, cleanup]
- environ: *env-def
- rc: 0
- out: "Cleaned up all resources on all nodes"
- err: ""
- - command: [/testbin/pcs, resource, status]
- environ: *env-def
- rc: 0
- out: "NO resources configured"
- err: ""
- - id: test_cleanup_specific_minimal_input_initial_resources_exists
- input:
- state: cleanup
- name: virtual-ip
- output:
- changed: true
- previous_value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
- value: "NO resources configured"
- mocks:
- run_command:
- - command: [/testbin/pcs, resource, status, virtual-ip]
- environ: *env-def
- rc: 0
- out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
- err: ""
- - command: [/testbin/pcs, resource, cleanup, virtual-ip]
- environ: *env-def
- rc: 0
- out: "Cleaned up virtual-ip on X"
- err: ""
- - command: [/testbin/pcs, resource, status, virtual-ip]
- environ: *env-def
- rc: 0
- out: "NO resources configured"
- err: ""
diff --git a/tests/unit/plugins/modules/test_pacemaker_info.py b/tests/unit/plugins/modules/test_pacemaker_info.py
deleted file mode 100644
index 6be6b4ec3a..0000000000
--- a/tests/unit/plugins/modules/test_pacemaker_info.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- coding: utf-8 -*-
-# Author: Dexter Le (dextersydney2001@gmail.com)
-# Largely adapted from test_redhat_subscription by
-# Jiri Hnidek (jhnidek@redhat.com)
-#
-# Copyright (c) Dexter Le (dextersydney2001@gmail.com)
-# Copyright (c) Jiri Hnidek (jhnidek@redhat.com)
-#
-# 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
-
-from __future__ import (absolute_import, division, print_function)
-__metaclass__ = type
-
-
-from ansible_collections.community.general.plugins.modules import pacemaker_info
-from .uthelper import UTHelper, RunCommandMock
-
-UTHelper.from_module(pacemaker_info, __name__, mocks=[RunCommandMock])
diff --git a/tests/unit/plugins/modules/test_pacemaker_info.yaml b/tests/unit/plugins/modules/test_pacemaker_info.yaml
deleted file mode 100644
index 6e83131cf3..0000000000
--- a/tests/unit/plugins/modules/test_pacemaker_info.yaml
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) Dexter Le (dextersydney2001@gmail.com)
-# 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
-
----
-anchors:
- environ: &env-def {environ_update: {LANGUAGE: C, LC_ALL: C}, check_rc: false}
-test_cases:
- - id: test_info_initial_offline
- input: {}
- output:
- failed: true
- msg: "pcs resource config failed with error (rc=1): Error: unable to get cib"
- version: "0.10.0"
- cluster_info:
- cluster_name: test_cluster
- cluster_uuid: test_uuid
- mocks:
- run_command:
- - command: [/testbin/pcs, --version]
- environ: *env-def
- rc: 0
- out: "0.10.0"
- err: ""
- - command: [/testbin/pcs, cluster, config, --output-format=json]
- environ: *env-def
- rc: 0
- out: '{"cluster_name": "test_cluster", "cluster_uuid": "test_uuid"}'
- err: ""
- - command: [/testbin/pcs, constraint, config, --output-format=json]
- environ: *env-def
- rc: 0
- out: '{"location": [{"attributes": {"constraint_id": "test-constraint-id", "node": "example.com", "score": "-INFINITY"}, "resource_id": "test-resource-id", "role": "Started"}]}'
- err: ""
- - command: [/testbin/pcs, property, config, --output-format=json]
- environ: *env-def
- rc: 0
- out: '{"nvsets": [{"id": "test-bootstrap", "name": "test-infra", "value": "corosync"}]}'
- err: ""
- - command: [/testbin/pcs, resource, config, --output-format=json]
- environ: *env-def
- rc: 1
- out: ""
- err: "Error: unable to get cib"
- - id: test_info_initial_online
- input: {}
- output:
- version: "0.10.0"
- cluster_info:
- cluster_name: test_cluster
- cluster_uuid: test_uuid
- resource_info:
- clones:
- - description: null
- id: test-clone
- member_id: test-member-0
- stonith_info:
- primitives:
- - agent_name:
- provider: null
- standard: stonith
- type: fence_aws
- description: null
- id: test-stonith
- constraint_info:
- location:
- - attributes:
- constraint_id: test-constraint-id
- node: example.com
- score: -INFINITY
- resource_id: test-resource-id
- role: Started
- property_info:
- nvsets:
- - id: test-bootstrap
- name: test-infra
- value: corosync
- mocks:
- run_command:
- - command: [/testbin/pcs, --version]
- environ: *env-def
- rc: 0
- out: "0.10.0"
- err: ""
- - command: [/testbin/pcs, cluster, config, --output-format=json]
- environ: *env-def
- rc: 0
- out: '{"cluster_name": "test_cluster", "cluster_uuid": "test_uuid"}'
- err: ""
- - command: [/testbin/pcs, constraint, config, --output-format=json]
- environ: *env-def
- rc: 0
- out: '{"location": [{"attributes": {"constraint_id": "test-constraint-id", "node": "example.com", "score": "-INFINITY"}, "resource_id": "test-resource-id", "role": "Started"}]}'
- err: ""
- - command: [/testbin/pcs, property, config, --output-format=json]
- environ: *env-def
- rc: 0
- out: '{"nvsets": [{"id": "test-bootstrap", "name": "test-infra", "value": "corosync"}]}'
- err: ""
- - command: [/testbin/pcs, resource, config, --output-format=json]
- environ: *env-def
- rc: 0
- out: '{"clones": [{"description": null, "id": "test-clone", "member_id": "test-member-0"}]}'
- err: ""
- - command: [/testbin/pcs, stonith, config, --output-format=json]
- environ: *env-def
- rc: 0
- out: '{"primitives": [{"agent_name": {"provider": null, "standard": "stonith", "type": "fence_aws"}, "description": null, "id": "test-stonith"}]}'
- err: ""
diff --git a/tests/unit/plugins/modules/test_pacemaker_resource.yaml b/tests/unit/plugins/modules/test_pacemaker_resource.yaml
index 76679d14d9..7d4b4b2855 100644
--- a/tests/unit/plugins/modules/test_pacemaker_resource.yaml
+++ b/tests/unit/plugins/modules/test_pacemaker_resource.yaml
@@ -51,63 +51,6 @@ test_cases:
rc: 0
out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
err: ""
- - id: test_present_filled_input_resource_not_exist
- input:
- state: present
- name: virtual-ip
- resource_type:
- resource_name: IPaddr2
- resource_option:
- - "ip=[192.168.2.1]"
- resource_operation:
- - operation_action: start
- operation_option:
- - timeout=1200
- - operation_action: stop
- operation_option:
- - timeout=1200
- - operation_action: monitor
- operation_option:
- - timeout=1200
- resource_meta:
- - test_meta1=123
- - test_meta2=456
- resource_argument:
- argument_action: group
- argument_option:
- - test_group
- wait: 200
- output:
- changed: true
- previous_value: null
- value: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
- mocks:
- run_command:
- - command: [/testbin/pcs, resource, status, virtual-ip]
- environ: *env-def
- rc: 1
- out: ""
- err: "Error: resource or tag id 'virtual-ip' not found"
- - command: [/testbin/pcs, property, config]
- environ: *env-def
- rc: 1
- out: |
- Cluster Properties: cib-bootstrap-options
- cluster-infrastructure=corosync
- cluster-name=hacluster
- dc-version=2.1.9-1.fc41-7188dbf
- have-watchdog=false
- err: ""
- - command: [/testbin/pcs, resource, create, virtual-ip, IPaddr2, "ip=[192.168.2.1]", op, start, timeout=1200, op, stop, timeout=1200, op, monitor, timeout=1200, meta, test_meta1=123, meta, test_meta2=456, --group, test_group, --wait=200]
- environ: *env-def
- rc: 0
- out: "Assumed agent name 'ocf:heartbeat:IPaddr2' (deduced from 'IPAddr2')"
- err: ""
- - command: [/testbin/pcs, resource, status, virtual-ip]
- environ: *env-def
- rc: 0
- out: " * virtual-ip\t(ocf:heartbeat:IPAddr2):\t Started"
- err: ""
- id: test_present_minimal_input_resource_exists
input:
state: present
diff --git a/tests/unit/plugins/modules/test_slack.py b/tests/unit/plugins/modules/test_slack.py
index e0c87f907f..e656ab902f 100644
--- a/tests/unit/plugins/modules/test_slack.py
+++ b/tests/unit/plugins/modules/test_slack.py
@@ -103,22 +103,6 @@ class TestSlackModule(ModuleTestCase):
self.assertTrue(fetch_url_mock.call_count, 1)
self.assertEqual(fetch_url_mock.call_args[1]['url'], "https://slack.com/api/chat.postMessage")
- def test_govslack_message(self):
- with set_module_args({
- 'token': 'xoxa-123456789abcdef',
- 'domain': 'slack-gov.com',
- 'msg': 'test with ts'
- }):
- with patch.object(slack, "fetch_url") as fetch_url_mock:
- mock_response = Mock()
- mock_response.read.return_value = '{"fake":"data"}'
- fetch_url_mock.return_value = (mock_response, {"status": 200})
- with self.assertRaises(AnsibleExitJson):
- self.module.main()
-
- self.assertTrue(fetch_url_mock.call_count, 1)
- self.assertEqual(fetch_url_mock.call_args[1]['url'], "https://slack-gov.com/api/chat.postMessage")
-
def test_edit_message(self):
with set_module_args({
'token': 'xoxa-123456789abcdef',
diff --git a/tests/unit/requirements.txt b/tests/unit/requirements.txt
index 765c70af0a..fdcf99cbb4 100644
--- a/tests/unit/requirements.txt
+++ b/tests/unit/requirements.txt
@@ -52,8 +52,7 @@ python-nomad < 2.0.0 ; python_version <= '3.6'
python-nomad >= 2.0.0 ; python_version >= '3.7'
# requirement for jenkins_build, jenkins_node, jenkins_plugin modules
-python-jenkins < 1.8.0 ; python_version < '3.8'
-python-jenkins >= 0.4.12 ; python_version >= '3.8'
+python-jenkins >= 0.4.12
# requirement for json_patch, json_patch_recipe and json_patch plugins
jsonpatch