mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-08 06:12:51 +00:00
Compare commits
68 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d4999b34b | ||
|
|
fc02723672 | ||
|
|
a1357411cb | ||
|
|
671abf7d05 | ||
|
|
236460861a | ||
|
|
ebdbfe30fd | ||
|
|
82e771cd25 | ||
|
|
09037c0e0f | ||
|
|
2dd395bd12 | ||
|
|
042c05cf26 | ||
|
|
c158c2cc95 | ||
|
|
4b4479844b | ||
|
|
bba060ef71 | ||
|
|
aaec9ae7ba | ||
|
|
340cb0d231 | ||
|
|
1e488d995a | ||
|
|
0a661a6506 | ||
|
|
f53804f542 | ||
|
|
e09afd224b | ||
|
|
d311049808 | ||
|
|
89ca1a7eae | ||
|
|
02a5b75cc3 | ||
|
|
2c8d75917f | ||
|
|
435d593e23 | ||
|
|
5e5ae243b1 | ||
|
|
f5b3f7da24 | ||
|
|
06c24f1f6a | ||
|
|
49a51c127e | ||
|
|
8b2d61b436 | ||
|
|
e7b3808bac | ||
|
|
f6be766263 | ||
|
|
a8ec62e620 | ||
|
|
4f49435e8a | ||
|
|
95978430f5 | ||
|
|
cc7e0083b8 | ||
|
|
f55c9b77fc | ||
|
|
3fc582a380 | ||
|
|
7f63f47efc | ||
|
|
be65a9f345 | ||
|
|
044831904c | ||
|
|
0ed510a050 | ||
|
|
103bde7764 | ||
|
|
b8f55cccdf | ||
|
|
b5abccfe31 | ||
|
|
335f6606fe | ||
|
|
5bdbbd1f4f | ||
|
|
3f67766bac | ||
|
|
6848d6a302 | ||
|
|
0f8dd60627 | ||
|
|
4190629e61 | ||
|
|
38d719da07 | ||
|
|
ea40a39a09 | ||
|
|
67562860e2 | ||
|
|
0ece2053f8 | ||
|
|
3653dff68c | ||
|
|
171a028ef8 | ||
|
|
4ab8f79eae | ||
|
|
871e2809ed | ||
|
|
ebf5dd9007 | ||
|
|
054b369740 | ||
|
|
f9598c8586 | ||
|
|
0b116fa1dc | ||
|
|
01d0f3ccb7 | ||
|
|
7a8c3346ff | ||
|
|
f8acda70d2 | ||
|
|
2eedbdc928 | ||
|
|
c251868e55 | ||
|
|
e501974a9e |
@@ -29,14 +29,14 @@ schedules:
|
|||||||
always: true
|
always: true
|
||||||
branches:
|
branches:
|
||||||
include:
|
include:
|
||||||
|
- stable-12
|
||||||
- stable-11
|
- stable-11
|
||||||
- stable-10
|
|
||||||
- cron: 0 11 * * 0
|
- cron: 0 11 * * 0
|
||||||
displayName: Weekly (old stable branches)
|
displayName: Weekly (old stable branches)
|
||||||
always: true
|
always: true
|
||||||
branches:
|
branches:
|
||||||
include:
|
include:
|
||||||
- stable-9
|
- stable-10
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
- name: checkoutPath
|
- name: checkoutPath
|
||||||
@@ -57,14 +57,14 @@ pool: Standard
|
|||||||
|
|
||||||
stages:
|
stages:
|
||||||
### Sanity
|
### Sanity
|
||||||
- stage: Sanity_devel
|
- stage: Sanity_2_20
|
||||||
displayName: Sanity devel
|
displayName: Sanity 2.20
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
jobs:
|
jobs:
|
||||||
- template: templates/matrix.yml
|
- template: templates/matrix.yml
|
||||||
parameters:
|
parameters:
|
||||||
nameFormat: Test {0}
|
nameFormat: Test {0}
|
||||||
testFormat: devel/sanity/{0}
|
testFormat: 2.20/sanity/{0}
|
||||||
targets:
|
targets:
|
||||||
- test: 1
|
- test: 1
|
||||||
- test: 2
|
- test: 2
|
||||||
@@ -96,41 +96,15 @@ stages:
|
|||||||
- test: 2
|
- test: 2
|
||||||
- test: 3
|
- test: 3
|
||||||
- test: 4
|
- test: 4
|
||||||
- stage: Sanity_2_17
|
|
||||||
displayName: Sanity 2.17
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
nameFormat: Test {0}
|
|
||||||
testFormat: 2.17/sanity/{0}
|
|
||||||
targets:
|
|
||||||
- test: 1
|
|
||||||
- test: 2
|
|
||||||
- test: 3
|
|
||||||
- test: 4
|
|
||||||
- stage: Sanity_2_16
|
|
||||||
displayName: Sanity 2.16
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
nameFormat: Test {0}
|
|
||||||
testFormat: 2.16/sanity/{0}
|
|
||||||
targets:
|
|
||||||
- test: 1
|
|
||||||
- test: 2
|
|
||||||
- test: 3
|
|
||||||
- test: 4
|
|
||||||
### Units
|
### Units
|
||||||
- stage: Units_devel
|
- stage: Units_2_20
|
||||||
displayName: Units devel
|
displayName: Units 2.20
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
jobs:
|
jobs:
|
||||||
- template: templates/matrix.yml
|
- template: templates/matrix.yml
|
||||||
parameters:
|
parameters:
|
||||||
nameFormat: Python {0}
|
nameFormat: Python {0}
|
||||||
testFormat: devel/units/{0}/1
|
testFormat: 2.20/units/{0}/1
|
||||||
targets:
|
targets:
|
||||||
- test: 3.9
|
- test: 3.9
|
||||||
- test: '3.10'
|
- test: '3.10'
|
||||||
@@ -162,39 +136,15 @@ stages:
|
|||||||
- test: 3.8
|
- test: 3.8
|
||||||
- test: "3.11"
|
- test: "3.11"
|
||||||
- test: "3.13"
|
- test: "3.13"
|
||||||
- stage: Units_2_17
|
|
||||||
displayName: Units 2.17
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
nameFormat: Python {0}
|
|
||||||
testFormat: 2.17/units/{0}/1
|
|
||||||
targets:
|
|
||||||
- test: 3.7
|
|
||||||
- test: "3.10"
|
|
||||||
- test: "3.12"
|
|
||||||
- stage: Units_2_16
|
|
||||||
displayName: Units 2.16
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
nameFormat: Python {0}
|
|
||||||
testFormat: 2.16/units/{0}/1
|
|
||||||
targets:
|
|
||||||
- test: 2.7
|
|
||||||
- test: 3.6
|
|
||||||
- test: "3.11"
|
|
||||||
|
|
||||||
## Remote
|
## Remote
|
||||||
- stage: Remote_devel_extra_vms
|
- stage: Remote_2_20_extra_vms
|
||||||
displayName: Remote devel extra VMs
|
displayName: Remote 2.20 extra VMs
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
jobs:
|
jobs:
|
||||||
- template: templates/matrix.yml
|
- template: templates/matrix.yml
|
||||||
parameters:
|
parameters:
|
||||||
testFormat: devel/{0}
|
testFormat: 2.20/{0}
|
||||||
targets:
|
targets:
|
||||||
- name: Alpine 3.22
|
- name: Alpine 3.22
|
||||||
test: alpine/3.22
|
test: alpine/3.22
|
||||||
@@ -206,20 +156,20 @@ stages:
|
|||||||
test: ubuntu/24.04
|
test: ubuntu/24.04
|
||||||
groups:
|
groups:
|
||||||
- vm
|
- vm
|
||||||
- stage: Remote_devel
|
- stage: Remote_2_20
|
||||||
displayName: Remote devel
|
displayName: Remote 2.20
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
jobs:
|
jobs:
|
||||||
- template: templates/matrix.yml
|
- template: templates/matrix.yml
|
||||||
parameters:
|
parameters:
|
||||||
testFormat: devel/{0}
|
testFormat: 2.20/{0}
|
||||||
targets:
|
targets:
|
||||||
- name: macOS 15.3
|
- name: macOS 15.3
|
||||||
test: macos/15.3
|
test: macos/15.3
|
||||||
- name: RHEL 10.0
|
- name: RHEL 10.1
|
||||||
test: rhel/10.0
|
test: rhel/10.1
|
||||||
- name: RHEL 9.6
|
- name: RHEL 9.7
|
||||||
test: rhel/9.6
|
test: rhel/9.7
|
||||||
- name: FreeBSD 14.3
|
- name: FreeBSD 14.3
|
||||||
test: freebsd/14.3
|
test: freebsd/14.3
|
||||||
- name: FreeBSD 13.5
|
- name: FreeBSD 13.5
|
||||||
@@ -236,10 +186,8 @@ stages:
|
|||||||
parameters:
|
parameters:
|
||||||
testFormat: 2.19/{0}
|
testFormat: 2.19/{0}
|
||||||
targets:
|
targets:
|
||||||
- name: RHEL 9.5
|
- name: RHEL 10.1
|
||||||
test: rhel/9.5
|
test: rhel/10.1
|
||||||
- name: RHEL 10.0
|
|
||||||
test: rhel/10.0
|
|
||||||
- name: FreeBSD 14.2
|
- name: FreeBSD 14.2
|
||||||
test: freebsd/14.2
|
test: freebsd/14.2
|
||||||
groups:
|
groups:
|
||||||
@@ -254,63 +202,23 @@ stages:
|
|||||||
parameters:
|
parameters:
|
||||||
testFormat: 2.18/{0}
|
testFormat: 2.18/{0}
|
||||||
targets:
|
targets:
|
||||||
- name: macOS 14.3
|
# - name: macOS 14.3
|
||||||
test: macos/14.3
|
# test: macos/14.3
|
||||||
- name: RHEL 9.4
|
|
||||||
test: rhel/9.4
|
|
||||||
- name: FreeBSD 14.1
|
- name: FreeBSD 14.1
|
||||||
test: freebsd/14.1
|
test: freebsd/14.1
|
||||||
groups:
|
groups:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- stage: Remote_2_17
|
|
||||||
displayName: Remote 2.17
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
testFormat: 2.17/{0}
|
|
||||||
targets:
|
|
||||||
- name: FreeBSD 13.5
|
|
||||||
test: freebsd/13.5
|
|
||||||
- name: RHEL 9.3
|
|
||||||
test: rhel/9.3
|
|
||||||
groups:
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
- 3
|
|
||||||
- stage: Remote_2_16
|
|
||||||
displayName: Remote 2.16
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
testFormat: 2.16/{0}
|
|
||||||
targets:
|
|
||||||
- name: macOS 13.2
|
|
||||||
test: macos/13.2
|
|
||||||
- name: RHEL 9.2
|
|
||||||
test: rhel/9.2
|
|
||||||
- name: RHEL 8.8
|
|
||||||
test: rhel/8.8
|
|
||||||
- name: RHEL 7.9
|
|
||||||
test: rhel/7.9
|
|
||||||
# - name: FreeBSD 13.2
|
|
||||||
# test: freebsd/13.2
|
|
||||||
groups:
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
- 3
|
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
- stage: Docker_devel
|
- stage: Docker_2_20
|
||||||
displayName: Docker devel
|
displayName: Docker 2.20
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
jobs:
|
jobs:
|
||||||
- template: templates/matrix.yml
|
- template: templates/matrix.yml
|
||||||
parameters:
|
parameters:
|
||||||
testFormat: devel/linux/{0}
|
testFormat: 2.20/linux/{0}
|
||||||
targets:
|
targets:
|
||||||
- name: Fedora 42
|
- name: Fedora 42
|
||||||
test: fedora42
|
test: fedora42
|
||||||
@@ -358,53 +266,15 @@ stages:
|
|||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
- stage: Docker_2_17
|
|
||||||
displayName: Docker 2.17
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
testFormat: 2.17/linux/{0}
|
|
||||||
targets:
|
|
||||||
- name: Fedora 39
|
|
||||||
test: fedora39
|
|
||||||
- name: Alpine 3.19
|
|
||||||
test: alpine319
|
|
||||||
- name: Ubuntu 20.04
|
|
||||||
test: ubuntu2004
|
|
||||||
groups:
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
- 3
|
|
||||||
- stage: Docker_2_16
|
|
||||||
displayName: Docker 2.16
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
testFormat: 2.16/linux/{0}
|
|
||||||
targets:
|
|
||||||
- name: Fedora 38
|
|
||||||
test: fedora38
|
|
||||||
- name: openSUSE 15
|
|
||||||
test: opensuse15
|
|
||||||
- name: Alpine 3
|
|
||||||
test: alpine3
|
|
||||||
- name: CentOS 7
|
|
||||||
test: centos7
|
|
||||||
groups:
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
- 3
|
|
||||||
|
|
||||||
### Community Docker
|
### Community Docker
|
||||||
- stage: Docker_community_devel
|
- stage: Docker_community_2_20
|
||||||
displayName: Docker (community images) devel
|
displayName: Docker (community images) 2.20
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
jobs:
|
jobs:
|
||||||
- template: templates/matrix.yml
|
- template: templates/matrix.yml
|
||||||
parameters:
|
parameters:
|
||||||
testFormat: devel/linux-community/{0}
|
testFormat: 2.20/linux-community/{0}
|
||||||
targets:
|
targets:
|
||||||
- name: Debian 11 Bullseye
|
- name: Debian 11 Bullseye
|
||||||
test: debian-bullseye/3.9
|
test: debian-bullseye/3.9
|
||||||
@@ -413,7 +283,7 @@ stages:
|
|||||||
- name: Debian 13 Trixie
|
- name: Debian 13 Trixie
|
||||||
test: debian-13-trixie/3.13
|
test: debian-13-trixie/3.13
|
||||||
- name: ArchLinux
|
- name: ArchLinux
|
||||||
test: archlinux/3.13
|
test: archlinux/3.14
|
||||||
groups:
|
groups:
|
||||||
- 1
|
- 1
|
||||||
- 2
|
- 2
|
||||||
@@ -421,14 +291,14 @@ stages:
|
|||||||
|
|
||||||
### Generic
|
### Generic
|
||||||
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
|
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
|
||||||
# - stage: Generic_devel
|
# - stage: Generic_2_20
|
||||||
# displayName: Generic devel
|
# displayName: Generic 2.20
|
||||||
# dependsOn: []
|
# dependsOn: []
|
||||||
# jobs:
|
# jobs:
|
||||||
# - template: templates/matrix.yml
|
# - template: templates/matrix.yml
|
||||||
# parameters:
|
# parameters:
|
||||||
# nameFormat: Python {0}
|
# nameFormat: Python {0}
|
||||||
# testFormat: devel/generic/{0}/1
|
# testFormat: 2.20/generic/{0}/1
|
||||||
# targets:
|
# targets:
|
||||||
# - test: '3.9'
|
# - test: '3.9'
|
||||||
# - test: '3.12'
|
# - test: '3.12'
|
||||||
@@ -455,60 +325,27 @@ stages:
|
|||||||
# targets:
|
# targets:
|
||||||
# - test: '3.8'
|
# - test: '3.8'
|
||||||
# - test: '3.13'
|
# - test: '3.13'
|
||||||
# - stage: Generic_2_17
|
|
||||||
# displayName: Generic 2.17
|
|
||||||
# dependsOn: []
|
|
||||||
# jobs:
|
|
||||||
# - template: templates/matrix.yml
|
|
||||||
# parameters:
|
|
||||||
# nameFormat: Python {0}
|
|
||||||
# testFormat: 2.17/generic/{0}/1
|
|
||||||
# targets:
|
|
||||||
# - test: '3.7'
|
|
||||||
# - test: '3.12'
|
|
||||||
# - stage: Generic_2_16
|
|
||||||
# displayName: Generic 2.16
|
|
||||||
# dependsOn: []
|
|
||||||
# jobs:
|
|
||||||
# - template: templates/matrix.yml
|
|
||||||
# parameters:
|
|
||||||
# nameFormat: Python {0}
|
|
||||||
# testFormat: 2.16/generic/{0}/1
|
|
||||||
# targets:
|
|
||||||
# - test: '2.7'
|
|
||||||
# - test: '3.6'
|
|
||||||
# - test: '3.11'
|
|
||||||
|
|
||||||
- stage: Summary
|
- stage: Summary
|
||||||
condition: succeededOrFailed()
|
condition: succeededOrFailed()
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- Sanity_devel
|
- Sanity_2_20
|
||||||
- Sanity_2_19
|
- Sanity_2_19
|
||||||
- Sanity_2_18
|
- Sanity_2_18
|
||||||
- Sanity_2_17
|
- Units_2_20
|
||||||
- Sanity_2_16
|
|
||||||
- Units_devel
|
|
||||||
- Units_2_19
|
- Units_2_19
|
||||||
- Units_2_18
|
- Units_2_18
|
||||||
- Units_2_17
|
- Remote_2_20_extra_vms
|
||||||
- Units_2_16
|
- Remote_2_20
|
||||||
- Remote_devel_extra_vms
|
|
||||||
- Remote_devel
|
|
||||||
- Remote_2_19
|
- Remote_2_19
|
||||||
- Remote_2_18
|
- Remote_2_18
|
||||||
- Remote_2_17
|
- Docker_2_20
|
||||||
- Remote_2_16
|
|
||||||
- Docker_devel
|
|
||||||
- Docker_2_19
|
- Docker_2_19
|
||||||
- Docker_2_18
|
- Docker_2_18
|
||||||
- Docker_2_17
|
- Docker_community_2_20
|
||||||
- Docker_2_16
|
|
||||||
- Docker_community_devel
|
|
||||||
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
|
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
|
||||||
# - Generic_devel
|
# - Generic_2_20
|
||||||
# - Generic_2_19
|
# - Generic_2_19
|
||||||
# - Generic_2_18
|
# - Generic_2_18
|
||||||
# - Generic_2_17
|
|
||||||
# - Generic_2_16
|
|
||||||
jobs:
|
jobs:
|
||||||
- template: templates/coverage.yml
|
- template: templates/coverage.yml
|
||||||
|
|||||||
4
.github/BOTMETA.yml
vendored
4
.github/BOTMETA.yml
vendored
@@ -1596,7 +1596,7 @@ macros:
|
|||||||
plugin_utils: plugins/plugin_utils
|
plugin_utils: plugins/plugin_utils
|
||||||
tests: plugins/test
|
tests: plugins/test
|
||||||
team_ansible_core:
|
team_ansible_core:
|
||||||
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister mator molekuul ramooncamacho wtcross
|
team_aix: MorrisA bcoca d-little flynn1973 gforster kairoaraujo marvin-sinister molekuul ramooncamacho wtcross
|
||||||
team_bsd: JoergFiedler MacLemon bcoca dch jasperla mekanix opoplawski overhacked tuxillo
|
team_bsd: JoergFiedler MacLemon bcoca dch jasperla mekanix opoplawski overhacked tuxillo
|
||||||
team_consul: sgargan apollo13 Ilgmi
|
team_consul: sgargan apollo13 Ilgmi
|
||||||
team_cyberark_conjur: jvanderhoof ryanprior
|
team_cyberark_conjur: jvanderhoof ryanprior
|
||||||
@@ -1618,7 +1618,7 @@ macros:
|
|||||||
team_redfish: mraineri tomasg2012 xmadsen renxulei rajeevkallur bhavya06 jyundt
|
team_redfish: mraineri tomasg2012 xmadsen renxulei rajeevkallur bhavya06 jyundt
|
||||||
team_rhsm: cnsnyder ptoscano
|
team_rhsm: cnsnyder ptoscano
|
||||||
team_scaleway: remyleone abarbare
|
team_scaleway: remyleone abarbare
|
||||||
team_solaris: bcoca fishman jasperla jpdasma mator scathatheworm troy2914 xen0l
|
team_solaris: bcoca fishman jasperla jpdasma scathatheworm troy2914 xen0l
|
||||||
team_suse: commel evrardjp lrupp AnderEnder alxgu andytom sealor
|
team_suse: commel evrardjp lrupp AnderEnder alxgu andytom sealor
|
||||||
team_virt: joshainglis karmab Thulium-Drake Ajpantuso
|
team_virt: joshainglis karmab Thulium-Drake Ajpantuso
|
||||||
team_wdc: mikemoerk
|
team_wdc: mikemoerk
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -146,7 +146,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: Code of Conduct
|
label: Code of Conduct
|
||||||
description: |
|
description: |
|
||||||
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
|
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
|
||||||
options:
|
options:
|
||||||
- label: I agree to follow the Ansible Code of Conduct
|
- label: I agree to follow the Ansible Code of Conduct
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
8
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -7,7 +7,7 @@
|
|||||||
blank_issues_enabled: false # default: true
|
blank_issues_enabled: false # default: true
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Security bug report
|
- name: Security bug report
|
||||||
url: https://docs.ansible.com/ansible-core/devel/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
|
url: https://docs.ansible.com/projects/ansible-core/devel/community/reporting_bugs_and_features.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
|
||||||
about: |
|
about: |
|
||||||
Please learn how to report security vulnerabilities here.
|
Please learn how to report security vulnerabilities here.
|
||||||
|
|
||||||
@@ -16,12 +16,12 @@ contact_links:
|
|||||||
a prompt response.
|
a prompt response.
|
||||||
|
|
||||||
For more information, see
|
For more information, see
|
||||||
https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
|
https://docs.ansible.com/projects/ansible/latest/community/reporting_bugs_and_features.html
|
||||||
- name: Ansible Code of Conduct
|
- name: Ansible Code of Conduct
|
||||||
url: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
|
url: https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser_ansible_collections
|
||||||
about: Be nice to other members of the community.
|
about: Be nice to other members of the community.
|
||||||
- name: Talks to the community
|
- name: Talks to the community
|
||||||
url: https://docs.ansible.com/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
|
url: https://docs.ansible.com/projects/ansible/latest/community/communication.html?utm_medium=github&utm_source=issue_template_chooser#mailing-list-information
|
||||||
about: Please ask and answer usage questions here
|
about: Please ask and answer usage questions here
|
||||||
- name: Working groups
|
- name: Working groups
|
||||||
url: https://github.com/ansible/community/wiki
|
url: https://github.com/ansible/community/wiki
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: Code of Conduct
|
label: Code of Conduct
|
||||||
description: |
|
description: |
|
||||||
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
|
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
|
||||||
options:
|
options:
|
||||||
- label: I agree to follow the Ansible Code of Conduct
|
- label: I agree to follow the Ansible Code of Conduct
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -66,7 +66,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: Code of Conduct
|
label: Code of Conduct
|
||||||
description: |
|
description: |
|
||||||
Read the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
|
Read the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_form--ansible-collections) first.
|
||||||
options:
|
options:
|
||||||
- label: I agree to follow the Ansible Code of Conduct
|
- label: I agree to follow the Ansible Code of Conduct
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
2
.github/pull_request_template.md
vendored
2
.github/pull_request_template.md
vendored
@@ -4,7 +4,7 @@
|
|||||||
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
|
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
|
||||||
|
|
||||||
<!--- Please do not forget to include a changelog fragment:
|
<!--- Please do not forget to include a changelog fragment:
|
||||||
https://docs.ansible.com/ansible/devel/community/collection_development_process.html#creating-changelog-fragments
|
https://docs.ansible.com/projects/ansible/devel/community/collection_development_process.html#creating-changelog-fragments
|
||||||
No need to include one for docs-only or test-only PR, and for new plugin/module PRs.
|
No need to include one for docs-only or test-only PR, and for new plugin/module PRs.
|
||||||
Read about more details in CONTRIBUTING.md.
|
Read about more details in CONTRIBUTING.md.
|
||||||
-->
|
-->
|
||||||
|
|||||||
101
.github/workflows/ansible-test.yml
vendored
101
.github/workflows/ansible-test.yml
vendored
@@ -30,6 +30,8 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
ansible:
|
ansible:
|
||||||
- '2.15'
|
- '2.15'
|
||||||
|
- '2.16'
|
||||||
|
- '2.17'
|
||||||
# Ansible-test on various stable branches does not yet work well with cgroups v2.
|
# Ansible-test on various stable branches does not yet work well with cgroups v2.
|
||||||
# Since ubuntu-latest now uses Ubuntu 22.04, we need to fall back to the ubuntu-20.04
|
# Since ubuntu-latest now uses Ubuntu 22.04, we need to fall back to the ubuntu-20.04
|
||||||
# image for these stable branches. The list of branches where this is necessary will
|
# image for these stable branches. The list of branches where this is necessary will
|
||||||
@@ -73,6 +75,18 @@ jobs:
|
|||||||
python: '3.5'
|
python: '3.5'
|
||||||
- ansible: '2.15'
|
- ansible: '2.15'
|
||||||
python: '3.10'
|
python: '3.10'
|
||||||
|
- ansible: '2.16'
|
||||||
|
python: '2.7'
|
||||||
|
- ansible: '2.16'
|
||||||
|
python: '3.6'
|
||||||
|
- ansible: '2.16'
|
||||||
|
python: '3.11'
|
||||||
|
- ansible: '2.17'
|
||||||
|
python: '3.7'
|
||||||
|
- ansible: '2.17'
|
||||||
|
python: '3.10'
|
||||||
|
- ansible: '2.17'
|
||||||
|
python: '3.12'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: >-
|
- name: >-
|
||||||
@@ -138,19 +152,80 @@ jobs:
|
|||||||
docker: fedora37
|
docker: fedora37
|
||||||
python: ''
|
python: ''
|
||||||
target: azp/posix/3/
|
target: azp/posix/3/
|
||||||
# Right now all generic tests are disabled. Uncomment when at least one of them is re-enabled.
|
# 2.16
|
||||||
# - ansible: '2.13'
|
- ansible: '2.16'
|
||||||
# docker: default
|
docker: alpine3
|
||||||
# python: '3.9'
|
python: ''
|
||||||
# target: azp/generic/1/
|
target: azp/posix/1/
|
||||||
# - ansible: '2.14'
|
- ansible: '2.16'
|
||||||
# docker: default
|
docker: alpine3
|
||||||
# python: '3.10'
|
python: ''
|
||||||
# target: azp/generic/1/
|
target: azp/posix/2/
|
||||||
# - ansible: '2.15'
|
- ansible: '2.16'
|
||||||
# docker: default
|
docker: alpine3
|
||||||
# python: '3.9'
|
python: ''
|
||||||
# target: azp/generic/1/
|
target: azp/posix/3/
|
||||||
|
- ansible: '2.16'
|
||||||
|
docker: fedora38
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/1/
|
||||||
|
- ansible: '2.16'
|
||||||
|
docker: fedora38
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/2/
|
||||||
|
- ansible: '2.16'
|
||||||
|
docker: fedora38
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/3/
|
||||||
|
- ansible: '2.16'
|
||||||
|
docker: opensuse15
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/1/
|
||||||
|
- ansible: '2.16'
|
||||||
|
docker: opensuse15
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/2/
|
||||||
|
- ansible: '2.16'
|
||||||
|
docker: opensuse15
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/3/
|
||||||
|
# 2.17
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: fedora39
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/1/
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: fedora39
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/2/
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: fedora39
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/3/
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: alpine319
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/1/
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: alpine319
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/2/
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: alpine319
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/3/
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: ubuntu2004
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/1/
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: ubuntu2004
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/2/
|
||||||
|
- ansible: '2.17'
|
||||||
|
docker: ubuntu2004
|
||||||
|
python: ''
|
||||||
|
target: azp/posix/3/
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: >-
|
- name: >-
|
||||||
|
|||||||
6
.github/workflows/codeql-analysis.yml
vendored
6
.github/workflows/codeql-analysis.yml
vendored
@@ -24,15 +24,15 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v3
|
uses: github/codeql-action/init@v4
|
||||||
with:
|
with:
|
||||||
languages: python
|
languages: python
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v3
|
uses: github/codeql-action/analyze@v4
|
||||||
|
|||||||
2
.github/workflows/nox.yml
vendored
2
.github/workflows/nox.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
|||||||
name: "Run extra sanity tests"
|
name: "Run extra sanity tests"
|
||||||
steps:
|
steps:
|
||||||
- name: Check out collection
|
- name: Check out collection
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: Run nox
|
- name: Run nox
|
||||||
|
|||||||
196
CHANGELOG.md
196
CHANGELOG.md
@@ -2,90 +2,103 @@
|
|||||||
|
|
||||||
**Topics**
|
**Topics**
|
||||||
|
|
||||||
- <a href="#v10-7-4">v10\.7\.4</a>
|
- <a href="#v10-7-8">v10\.7\.8</a>
|
||||||
- <a href="#release-summary">Release Summary</a>
|
- <a href="#release-summary">Release Summary</a>
|
||||||
- <a href="#bugfixes">Bugfixes</a>
|
- <a href="#bugfixes">Bugfixes</a>
|
||||||
- <a href="#v10-7-3">v10\.7\.3</a>
|
- <a href="#v10-7-7">v10\.7\.7</a>
|
||||||
- <a href="#release-summary-1">Release Summary</a>
|
- <a href="#release-summary-1">Release Summary</a>
|
||||||
- <a href="#bugfixes-1">Bugfixes</a>
|
- <a href="#bugfixes-1">Bugfixes</a>
|
||||||
- <a href="#v10-7-2">v10\.7\.2</a>
|
- <a href="#v10-7-6">v10\.7\.6</a>
|
||||||
- <a href="#release-summary-2">Release Summary</a>
|
- <a href="#release-summary-2">Release Summary</a>
|
||||||
|
- <a href="#security-fixes">Security Fixes</a>
|
||||||
- <a href="#bugfixes-2">Bugfixes</a>
|
- <a href="#bugfixes-2">Bugfixes</a>
|
||||||
- <a href="#v10-7-1">v10\.7\.1</a>
|
- <a href="#v10-7-5">v10\.7\.5</a>
|
||||||
- <a href="#release-summary-3">Release Summary</a>
|
- <a href="#release-summary-3">Release Summary</a>
|
||||||
|
- <a href="#bugfixes-3">Bugfixes</a>
|
||||||
|
- <a href="#v10-7-4">v10\.7\.4</a>
|
||||||
|
- <a href="#release-summary-4">Release Summary</a>
|
||||||
|
- <a href="#bugfixes-4">Bugfixes</a>
|
||||||
|
- <a href="#v10-7-3">v10\.7\.3</a>
|
||||||
|
- <a href="#release-summary-5">Release Summary</a>
|
||||||
|
- <a href="#bugfixes-5">Bugfixes</a>
|
||||||
|
- <a href="#v10-7-2">v10\.7\.2</a>
|
||||||
|
- <a href="#release-summary-6">Release Summary</a>
|
||||||
|
- <a href="#bugfixes-6">Bugfixes</a>
|
||||||
|
- <a href="#v10-7-1">v10\.7\.1</a>
|
||||||
|
- <a href="#release-summary-7">Release Summary</a>
|
||||||
- <a href="#minor-changes">Minor Changes</a>
|
- <a href="#minor-changes">Minor Changes</a>
|
||||||
- <a href="#deprecated-features">Deprecated Features</a>
|
- <a href="#deprecated-features">Deprecated Features</a>
|
||||||
- <a href="#bugfixes-3">Bugfixes</a>
|
- <a href="#bugfixes-7">Bugfixes</a>
|
||||||
- <a href="#v10-7-0">v10\.7\.0</a>
|
- <a href="#v10-7-0">v10\.7\.0</a>
|
||||||
- <a href="#release-summary-4">Release Summary</a>
|
- <a href="#release-summary-8">Release Summary</a>
|
||||||
- <a href="#minor-changes-1">Minor Changes</a>
|
- <a href="#minor-changes-1">Minor Changes</a>
|
||||||
- <a href="#deprecated-features-1">Deprecated Features</a>
|
- <a href="#deprecated-features-1">Deprecated Features</a>
|
||||||
- <a href="#bugfixes-4">Bugfixes</a>
|
- <a href="#bugfixes-8">Bugfixes</a>
|
||||||
- <a href="#new-plugins">New Plugins</a>
|
- <a href="#new-plugins">New Plugins</a>
|
||||||
- <a href="#callback">Callback</a>
|
- <a href="#callback">Callback</a>
|
||||||
- <a href="#filter">Filter</a>
|
- <a href="#filter">Filter</a>
|
||||||
- <a href="#new-modules">New Modules</a>
|
- <a href="#new-modules">New Modules</a>
|
||||||
- <a href="#v10-6-0">v10\.6\.0</a>
|
- <a href="#v10-6-0">v10\.6\.0</a>
|
||||||
- <a href="#release-summary-5">Release Summary</a>
|
- <a href="#release-summary-9">Release Summary</a>
|
||||||
- <a href="#minor-changes-2">Minor Changes</a>
|
- <a href="#minor-changes-2">Minor Changes</a>
|
||||||
- <a href="#deprecated-features-2">Deprecated Features</a>
|
- <a href="#deprecated-features-2">Deprecated Features</a>
|
||||||
- <a href="#bugfixes-5">Bugfixes</a>
|
- <a href="#bugfixes-9">Bugfixes</a>
|
||||||
- <a href="#known-issues">Known Issues</a>
|
- <a href="#known-issues">Known Issues</a>
|
||||||
- <a href="#new-plugins-1">New Plugins</a>
|
- <a href="#new-plugins-1">New Plugins</a>
|
||||||
- <a href="#connection">Connection</a>
|
- <a href="#connection">Connection</a>
|
||||||
- <a href="#v10-5-0">v10\.5\.0</a>
|
- <a href="#v10-5-0">v10\.5\.0</a>
|
||||||
- <a href="#release-summary-6">Release Summary</a>
|
- <a href="#release-summary-10">Release Summary</a>
|
||||||
- <a href="#minor-changes-3">Minor Changes</a>
|
- <a href="#minor-changes-3">Minor Changes</a>
|
||||||
- <a href="#bugfixes-6">Bugfixes</a>
|
- <a href="#bugfixes-10">Bugfixes</a>
|
||||||
- <a href="#new-modules-1">New Modules</a>
|
- <a href="#new-modules-1">New Modules</a>
|
||||||
- <a href="#v10-4-0">v10\.4\.0</a>
|
- <a href="#v10-4-0">v10\.4\.0</a>
|
||||||
- <a href="#release-summary-7">Release Summary</a>
|
- <a href="#release-summary-11">Release Summary</a>
|
||||||
- <a href="#minor-changes-4">Minor Changes</a>
|
- <a href="#minor-changes-4">Minor Changes</a>
|
||||||
- <a href="#deprecated-features-3">Deprecated Features</a>
|
- <a href="#deprecated-features-3">Deprecated Features</a>
|
||||||
- <a href="#bugfixes-7">Bugfixes</a>
|
- <a href="#bugfixes-11">Bugfixes</a>
|
||||||
- <a href="#new-modules-2">New Modules</a>
|
- <a href="#new-modules-2">New Modules</a>
|
||||||
- <a href="#v10-3-1">v10\.3\.1</a>
|
- <a href="#v10-3-1">v10\.3\.1</a>
|
||||||
- <a href="#release-summary-8">Release Summary</a>
|
- <a href="#release-summary-12">Release Summary</a>
|
||||||
- <a href="#minor-changes-5">Minor Changes</a>
|
- <a href="#minor-changes-5">Minor Changes</a>
|
||||||
- <a href="#bugfixes-8">Bugfixes</a>
|
- <a href="#bugfixes-12">Bugfixes</a>
|
||||||
- <a href="#v10-3-0">v10\.3\.0</a>
|
- <a href="#v10-3-0">v10\.3\.0</a>
|
||||||
- <a href="#release-summary-9">Release Summary</a>
|
- <a href="#release-summary-13">Release Summary</a>
|
||||||
- <a href="#minor-changes-6">Minor Changes</a>
|
- <a href="#minor-changes-6">Minor Changes</a>
|
||||||
- <a href="#deprecated-features-4">Deprecated Features</a>
|
- <a href="#deprecated-features-4">Deprecated Features</a>
|
||||||
- <a href="#security-fixes">Security Fixes</a>
|
- <a href="#security-fixes-1">Security Fixes</a>
|
||||||
- <a href="#bugfixes-9">Bugfixes</a>
|
- <a href="#bugfixes-13">Bugfixes</a>
|
||||||
- <a href="#new-plugins-2">New Plugins</a>
|
- <a href="#new-plugins-2">New Plugins</a>
|
||||||
- <a href="#connection-1">Connection</a>
|
- <a href="#connection-1">Connection</a>
|
||||||
- <a href="#filter-1">Filter</a>
|
- <a href="#filter-1">Filter</a>
|
||||||
- <a href="#lookup">Lookup</a>
|
- <a href="#lookup">Lookup</a>
|
||||||
- <a href="#new-modules-3">New Modules</a>
|
- <a href="#new-modules-3">New Modules</a>
|
||||||
- <a href="#v10-2-0">v10\.2\.0</a>
|
- <a href="#v10-2-0">v10\.2\.0</a>
|
||||||
- <a href="#release-summary-10">Release Summary</a>
|
- <a href="#release-summary-14">Release Summary</a>
|
||||||
- <a href="#minor-changes-7">Minor Changes</a>
|
- <a href="#minor-changes-7">Minor Changes</a>
|
||||||
- <a href="#deprecated-features-5">Deprecated Features</a>
|
- <a href="#deprecated-features-5">Deprecated Features</a>
|
||||||
- <a href="#security-fixes-1">Security Fixes</a>
|
- <a href="#security-fixes-2">Security Fixes</a>
|
||||||
- <a href="#bugfixes-10">Bugfixes</a>
|
- <a href="#bugfixes-14">Bugfixes</a>
|
||||||
- <a href="#new-plugins-3">New Plugins</a>
|
- <a href="#new-plugins-3">New Plugins</a>
|
||||||
- <a href="#inventory">Inventory</a>
|
- <a href="#inventory">Inventory</a>
|
||||||
- <a href="#new-modules-4">New Modules</a>
|
- <a href="#new-modules-4">New Modules</a>
|
||||||
- <a href="#v10-1-0">v10\.1\.0</a>
|
- <a href="#v10-1-0">v10\.1\.0</a>
|
||||||
- <a href="#release-summary-11">Release Summary</a>
|
- <a href="#release-summary-15">Release Summary</a>
|
||||||
- <a href="#minor-changes-8">Minor Changes</a>
|
- <a href="#minor-changes-8">Minor Changes</a>
|
||||||
- <a href="#deprecated-features-6">Deprecated Features</a>
|
- <a href="#deprecated-features-6">Deprecated Features</a>
|
||||||
- <a href="#bugfixes-11">Bugfixes</a>
|
- <a href="#bugfixes-15">Bugfixes</a>
|
||||||
- <a href="#new-plugins-4">New Plugins</a>
|
- <a href="#new-plugins-4">New Plugins</a>
|
||||||
- <a href="#filter-2">Filter</a>
|
- <a href="#filter-2">Filter</a>
|
||||||
- <a href="#new-modules-5">New Modules</a>
|
- <a href="#new-modules-5">New Modules</a>
|
||||||
- <a href="#v10-0-1">v10\.0\.1</a>
|
- <a href="#v10-0-1">v10\.0\.1</a>
|
||||||
- <a href="#release-summary-12">Release Summary</a>
|
- <a href="#release-summary-16">Release Summary</a>
|
||||||
- <a href="#bugfixes-12">Bugfixes</a>
|
- <a href="#bugfixes-16">Bugfixes</a>
|
||||||
- <a href="#v10-0-0">v10\.0\.0</a>
|
- <a href="#v10-0-0">v10\.0\.0</a>
|
||||||
- <a href="#release-summary-13">Release Summary</a>
|
- <a href="#release-summary-17">Release Summary</a>
|
||||||
- <a href="#minor-changes-9">Minor Changes</a>
|
- <a href="#minor-changes-9">Minor Changes</a>
|
||||||
- <a href="#breaking-changes--porting-guide">Breaking Changes / Porting Guide</a>
|
- <a href="#breaking-changes--porting-guide">Breaking Changes / Porting Guide</a>
|
||||||
- <a href="#deprecated-features-7">Deprecated Features</a>
|
- <a href="#deprecated-features-7">Deprecated Features</a>
|
||||||
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
|
- <a href="#removed-features-previously-deprecated">Removed Features \(previously deprecated\)</a>
|
||||||
- <a href="#bugfixes-13">Bugfixes</a>
|
- <a href="#bugfixes-17">Bugfixes</a>
|
||||||
- <a href="#known-issues-1">Known Issues</a>
|
- <a href="#known-issues-1">Known Issues</a>
|
||||||
- <a href="#new-plugins-5">New Plugins</a>
|
- <a href="#new-plugins-5">New Plugins</a>
|
||||||
- <a href="#filter-3">Filter</a>
|
- <a href="#filter-3">Filter</a>
|
||||||
@@ -93,17 +106,84 @@
|
|||||||
- <a href="#new-modules-6">New Modules</a>
|
- <a href="#new-modules-6">New Modules</a>
|
||||||
This changelog describes changes after version 9\.0\.0\.
|
This changelog describes changes after version 9\.0\.0\.
|
||||||
|
|
||||||
<a id="v10-7-4"></a>
|
<a id="v10-7-8"></a>
|
||||||
## v10\.7\.4
|
## v10\.7\.8
|
||||||
|
|
||||||
<a id="release-summary"></a>
|
<a id="release-summary"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix release\.
|
Bugfix release\.
|
||||||
|
|
||||||
<a id="bugfixes"></a>
|
<a id="bugfixes"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
|
* python\_requirements\_info \- use <code>importlib\.metadata</code> if <code>pkg\_resources</code> from <code>setuptools</code> cannot be imported\. That module has been removed from setuptools 82\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/issues/11491](https\://github\.com/ansible\-collections/community\.general/issues/11491)\, [https\://github\.com/ansible\-collections/community\.general/pull/11492](https\://github\.com/ansible\-collections/community\.general/pull/11492)\)\.
|
||||||
|
|
||||||
|
<a id="v10-7-7"></a>
|
||||||
|
## v10\.7\.7
|
||||||
|
|
||||||
|
<a id="release-summary-1"></a>
|
||||||
|
### Release Summary
|
||||||
|
|
||||||
|
Bugfix release\.
|
||||||
|
|
||||||
|
<a id="bugfixes-1"></a>
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
* monit \- add delay of 0\.5 seconds after state change and check for status \([https\://github\.com/ansible\-collections/community\.general/pull/11255](https\://github\.com/ansible\-collections/community\.general/pull/11255)\)\.
|
||||||
|
|
||||||
|
<a id="v10-7-6"></a>
|
||||||
|
## v10\.7\.6
|
||||||
|
|
||||||
|
<a id="release-summary-2"></a>
|
||||||
|
### Release Summary
|
||||||
|
|
||||||
|
Regular bugfix release\.
|
||||||
|
|
||||||
|
<a id="security-fixes"></a>
|
||||||
|
### Security Fixes
|
||||||
|
|
||||||
|
* keycloak\_user \- the parameter <code>credentials\[\]\.value</code> is now marked as <code>no\_log\=true</code>\. Before it was logged by Ansible\, unless the task was marked as <code>no\_log\: true</code>\. Since this parameter can be used for passwords\, this resulted in credential leaking \([https\://github\.com/ansible\-collections/community\.general/issues/11000](https\://github\.com/ansible\-collections/community\.general/issues/11000)\, [https\://github\.com/ansible\-collections/community\.general/pull/11005](https\://github\.com/ansible\-collections/community\.general/pull/11005)\)\.
|
||||||
|
|
||||||
|
<a id="bugfixes-2"></a>
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
* gitlab\_runner \- fix exception in check mode when a new runner is created \([https\://github\.com/ansible\-collections/community\.general/issues/8854](https\://github\.com/ansible\-collections/community\.general/issues/8854)\)\.
|
||||||
|
* omapi\_host \- make return values compatible with ansible\-core 2\.19 and Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/11001](https\://github\.com/ansible\-collections/community\.general/pull/11001)\)\.
|
||||||
|
* onepassword\_doc and onepassword\_ssh\_key lookup plugins \- ensure that all connection parameters are passed to CLI class \([https\://github\.com/ansible\-collections/community\.general/pull/10965](https\://github\.com/ansible\-collections/community\.general/pull/10965)\)\.
|
||||||
|
* pritunl\_user \- improve resilience when comparing user parameters if remote fields are <code>null</code> or missing\. List parameters \(<code>groups</code>\, <code>mac\_addresses</code>\) now safely default to empty lists for comparison and avoids <code>KeyError</code> issues \([https\://github\.com/ansible\-collections/community\.general/issues/10954](https\://github\.com/ansible\-collections/community\.general/issues/10954)\, [https\://github\.com/ansible\-collections/community\.general/pull/10955](https\://github\.com/ansible\-collections/community\.general/pull/10955)\)\.
|
||||||
|
* random\_string lookup plugin \- replace <code>random\.SystemRandom\(\)</code> with <code>secrets\.SystemRandom\(\)</code> when generating strings\. This has no practical effect\, as both are the same \([https\://github\.com/ansible\-collections/community\.general/pull/10893](https\://github\.com/ansible\-collections/community\.general/pull/10893)\)\.
|
||||||
|
* terraform \- fix bug when <code>null</code> values inside complex vars are throwing error instead of being passed to terraform\. Now terraform can handle <code>null\`\`s in \`\`complex\_vars</code> itself \([https\://github\.com/ansible\-collections/community\.general/pull/10961](https\://github\.com/ansible\-collections/community\.general/pull/10961)\)\.
|
||||||
|
|
||||||
|
<a id="v10-7-5"></a>
|
||||||
|
## v10\.7\.5
|
||||||
|
|
||||||
|
<a id="release-summary-3"></a>
|
||||||
|
### Release Summary
|
||||||
|
|
||||||
|
Regular bugfix release\.
|
||||||
|
|
||||||
|
<a id="bugfixes-3"></a>
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
* Avoid usage of deprecated <code>ansible\.module\_utils\.six</code> in all code that does not have to support Python 2 \([https\://github\.com/ansible\-collections/community\.general/pull/10873](https\://github\.com/ansible\-collections/community\.general/pull/10873)\)\.
|
||||||
|
* github\_deploy\_key \- fix bug during error handling if no body was present in the result \([https\://github\.com/ansible\-collections/community\.general/issues/10853](https\://github\.com/ansible\-collections/community\.general/issues/10853)\, [https\://github\.com/ansible\-collections/community\.general/pull/10857](https\://github\.com/ansible\-collections/community\.general/pull/10857)\)\.
|
||||||
|
* keycloak\_group \- fixes an issue where module ignores realm when searching subgroups by name \([https\://github\.com/ansible\-collections/community\.general/pull/10840](https\://github\.com/ansible\-collections/community\.general/pull/10840)\)\.
|
||||||
|
* keycloak\_role \- fixes an issue where the module incorrectly returns <code>changed\=true</code> when using the alias <code>clientId</code> in composite roles \([https\://github\.com/ansible\-collections/community\.general/pull/10829](https\://github\.com/ansible\-collections/community\.general/pull/10829)\)\.
|
||||||
|
* rocketchat \- fix message delivery in Rocket Chat \>\= 7\.5\.3 by forcing <code>Content\-Type</code> header to <code>application/json</code> instead of the default <code>application/x\-www\-form\-urlencoded</code> \([https\://github\.com/ansible\-collections/community\.general/issues/10796](https\://github\.com/ansible\-collections/community\.general/issues/10796)\, [https\://github\.com/ansible\-collections/community\.general/pull/10796](https\://github\.com/ansible\-collections/community\.general/pull/10796)\)\.
|
||||||
|
* yaml cache plugin \- make compatible with ansible\-core 2\.19 \([https\://github\.com/ansible\-collections/community\.general/issues/10849](https\://github\.com/ansible\-collections/community\.general/issues/10849)\, [https\://github\.com/ansible\-collections/community\.general/issues/10852](https\://github\.com/ansible\-collections/community\.general/issues/10852)\)\.
|
||||||
|
|
||||||
|
<a id="v10-7-4"></a>
|
||||||
|
## v10\.7\.4
|
||||||
|
|
||||||
|
<a id="release-summary-4"></a>
|
||||||
|
### Release Summary
|
||||||
|
|
||||||
|
Regular bugfix release\.
|
||||||
|
|
||||||
|
<a id="bugfixes-4"></a>
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
* Avoid deprecated functionality in ansible\-core 2\.20 \([https\://github\.com/ansible\-collections/community\.general/pull/10687](https\://github\.com/ansible\-collections/community\.general/pull/10687)\)\.
|
* Avoid deprecated functionality in ansible\-core 2\.20 \([https\://github\.com/ansible\-collections/community\.general/pull/10687](https\://github\.com/ansible\-collections/community\.general/pull/10687)\)\.
|
||||||
* apache2\_module \- check the <code>cgi</code> module restrictions only during activation \([https\://github\.com/ansible\-collections/community\.general/pull/10423](https\://github\.com/ansible\-collections/community\.general/pull/10423)\)\.
|
* apache2\_module \- check the <code>cgi</code> module restrictions only during activation \([https\://github\.com/ansible\-collections/community\.general/pull/10423](https\://github\.com/ansible\-collections/community\.general/pull/10423)\)\.
|
||||||
* kdeconfig \- <code>kwriteconfig</code> executable could not be discovered automatically on systems with only <code>kwriteconfig6</code> installed\. <code>kwriteconfig6</code> can now be discovered by Ansible \([https\://github\.com/ansible\-collections/community\.general/issues/10746](https\://github\.com/ansible\-collections/community\.general/issues/10746)\, [https\://github\.com/ansible\-collections/community\.general/pull/10751](https\://github\.com/ansible\-collections/community\.general/pull/10751)\)\.
|
* kdeconfig \- <code>kwriteconfig</code> executable could not be discovered automatically on systems with only <code>kwriteconfig6</code> installed\. <code>kwriteconfig6</code> can now be discovered by Ansible \([https\://github\.com/ansible\-collections/community\.general/issues/10746](https\://github\.com/ansible\-collections/community\.general/issues/10746)\, [https\://github\.com/ansible\-collections/community\.general/pull/10751](https\://github\.com/ansible\-collections/community\.general/pull/10751)\)\.
|
||||||
@@ -114,12 +194,12 @@ Regular bugfix release\.
|
|||||||
<a id="v10-7-3"></a>
|
<a id="v10-7-3"></a>
|
||||||
## v10\.7\.3
|
## v10\.7\.3
|
||||||
|
|
||||||
<a id="release-summary-1"></a>
|
<a id="release-summary-5"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix release\.
|
Regular bugfix release\.
|
||||||
|
|
||||||
<a id="bugfixes-1"></a>
|
<a id="bugfixes-5"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* apache2\_module \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
|
* apache2\_module \- avoid ansible\-core 2\.19 deprecation \([https\://github\.com/ansible\-collections/community\.general/pull/10459](https\://github\.com/ansible\-collections/community\.general/pull/10459)\)\.
|
||||||
@@ -146,12 +226,12 @@ Regular bugfix release\.
|
|||||||
<a id="v10-7-2"></a>
|
<a id="v10-7-2"></a>
|
||||||
## v10\.7\.2
|
## v10\.7\.2
|
||||||
|
|
||||||
<a id="release-summary-2"></a>
|
<a id="release-summary-6"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix release\.
|
Regular bugfix release\.
|
||||||
|
|
||||||
<a id="bugfixes-2"></a>
|
<a id="bugfixes-6"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\.
|
* dependent lookup plugin \- avoid deprecated ansible\-core 2\.19 functionality \([https\://github\.com/ansible\-collections/community\.general/pull/10359](https\://github\.com/ansible\-collections/community\.general/pull/10359)\)\.
|
||||||
@@ -164,7 +244,7 @@ Regular bugfix release\.
|
|||||||
<a id="v10-7-1"></a>
|
<a id="v10-7-1"></a>
|
||||||
## v10\.7\.1
|
## v10\.7\.1
|
||||||
|
|
||||||
<a id="release-summary-3"></a>
|
<a id="release-summary-7"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix release\.
|
Regular bugfix release\.
|
||||||
@@ -180,7 +260,7 @@ Regular bugfix release\.
|
|||||||
|
|
||||||
* 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)\)\.
|
* 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)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-3"></a>
|
<a id="bugfixes-7"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* 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)\)\.
|
* 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)\)\.
|
||||||
@@ -194,7 +274,7 @@ Regular bugfix release\.
|
|||||||
<a id="v10-7-0"></a>
|
<a id="v10-7-0"></a>
|
||||||
## v10\.7\.0
|
## v10\.7\.0
|
||||||
|
|
||||||
<a id="release-summary-4"></a>
|
<a id="release-summary-8"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Bugfix and feature release\.
|
Bugfix and feature release\.
|
||||||
@@ -218,7 +298,7 @@ From now on\, there will only be bugfix 10\.7\.x releases for the community\.gen
|
|||||||
* The proxmox content \(modules and plugins\) is being moved to the [new collection community\.proxmox](https\://github\.com/ansible\-collections/community\.proxmox)\. In community\.general 11\.0\.0\, these modules and plugins will be replaced by deprecated redirections to community\.proxmox\. You need to explicitly install community\.proxmox\, for example with <code>ansible\-galaxy collection install community\.proxmox</code>\. 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/10109](https\://github\.com/ansible\-collections/community\.general/pull/10109)\)\.
|
* The proxmox content \(modules and plugins\) is being moved to the [new collection community\.proxmox](https\://github\.com/ansible\-collections/community\.proxmox)\. In community\.general 11\.0\.0\, these modules and plugins will be replaced by deprecated redirections to community\.proxmox\. You need to explicitly install community\.proxmox\, for example with <code>ansible\-galaxy collection install community\.proxmox</code>\. 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/10109](https\://github\.com/ansible\-collections/community\.general/pull/10109)\)\.
|
||||||
* pipx module\_utils \- function <code>make\_process\_list\(\)</code> 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)\)\.
|
* pipx module\_utils \- function <code>make\_process\_list\(\)</code> 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)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-4"></a>
|
<a id="bugfixes-8"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* cobbler\_system \- fix bug with Cobbler \>\= 3\.4\.0 caused by giving more than 2 positional arguments to <code>CobblerXMLRPCInterface\.get\_system\_handle\(\)</code> \([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 \- fix bug with Cobbler \>\= 3\.4\.0 caused by giving more than 2 positional arguments to <code>CobblerXMLRPCInterface\.get\_system\_handle\(\)</code> \([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)\)\.
|
||||||
@@ -250,7 +330,7 @@ From now on\, there will only be bugfix 10\.7\.x releases for the community\.gen
|
|||||||
<a id="v10-6-0"></a>
|
<a id="v10-6-0"></a>
|
||||||
## v10\.6\.0
|
## v10\.6\.0
|
||||||
|
|
||||||
<a id="release-summary-5"></a>
|
<a id="release-summary-9"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix and feature release\.
|
Regular bugfix and feature release\.
|
||||||
@@ -294,7 +374,7 @@ Regular bugfix and feature release\.
|
|||||||
* 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)\)\.
|
* 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)\)\.
|
||||||
* 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)\)\.
|
* 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)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-5"></a>
|
<a id="bugfixes-9"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* 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)\)\.
|
* 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)\)\.
|
||||||
@@ -327,7 +407,7 @@ Regular bugfix and feature release\.
|
|||||||
<a id="v10-5-0"></a>
|
<a id="v10-5-0"></a>
|
||||||
## v10\.5\.0
|
## v10\.5\.0
|
||||||
|
|
||||||
<a id="release-summary-6"></a>
|
<a id="release-summary-10"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix and feature release\.
|
Regular bugfix and feature release\.
|
||||||
@@ -349,7 +429,7 @@ Regular bugfix and feature release\.
|
|||||||
* 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)\)\.
|
* 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)\)\.
|
||||||
* vmadm \- add new options <code>flexible\_disk\_size</code> and <code>owner\_uuid</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9892](https\://github\.com/ansible\-collections/community\.general/pull/9892)\)\.
|
* vmadm \- add new options <code>flexible\_disk\_size</code> and <code>owner\_uuid</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9892](https\://github\.com/ansible\-collections/community\.general/pull/9892)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-6"></a>
|
<a id="bugfixes-10"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* 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)\)\.
|
* 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)\)\.
|
||||||
@@ -369,7 +449,7 @@ Regular bugfix and feature release\.
|
|||||||
<a id="v10-4-0"></a>
|
<a id="v10-4-0"></a>
|
||||||
## v10\.4\.0
|
## v10\.4\.0
|
||||||
|
|
||||||
<a id="release-summary-7"></a>
|
<a id="release-summary-11"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix and feature release\.
|
Regular bugfix and feature release\.
|
||||||
@@ -399,7 +479,7 @@ Regular bugfix and feature release\.
|
|||||||
* 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 \- 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)\)\.
|
* 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)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-7"></a>
|
<a id="bugfixes-11"></a>
|
||||||
### Bugfixes
|
### 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 \- make compatible with Python 3 \([https\://github\.com/ansible\-collections/community\.general/pull/9762](https\://github\.com/ansible\-collections/community\.general/pull/9762)\)\.
|
||||||
@@ -427,7 +507,7 @@ Regular bugfix and feature release\.
|
|||||||
<a id="v10-3-1"></a>
|
<a id="v10-3-1"></a>
|
||||||
## v10\.3\.1
|
## v10\.3\.1
|
||||||
|
|
||||||
<a id="release-summary-8"></a>
|
<a id="release-summary-12"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Bugfix release\.
|
Bugfix release\.
|
||||||
@@ -437,7 +517,7 @@ Bugfix release\.
|
|||||||
|
|
||||||
* 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)\)\.
|
* 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)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-8"></a>
|
<a id="bugfixes-12"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* cloudflare\_dns \- fix crash when deleting a DNS record or when updating a record with <code>solo\=true</code> \([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)\)\.
|
* cloudflare\_dns \- fix crash when deleting a DNS record or when updating a record with <code>solo\=true</code> \([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)\)\.
|
||||||
@@ -451,7 +531,7 @@ Bugfix release\.
|
|||||||
<a id="v10-3-0"></a>
|
<a id="v10-3-0"></a>
|
||||||
## v10\.3\.0
|
## v10\.3\.0
|
||||||
|
|
||||||
<a id="release-summary-9"></a>
|
<a id="release-summary-13"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix and feature release\.
|
Regular bugfix and feature release\.
|
||||||
@@ -585,12 +665,12 @@ Regular bugfix and feature release\.
|
|||||||
* MH module utils \- attribute <code>debug</code> definition in subclasses of MH is now deprecated\, as that name will become a delegation to <code>AnsibleModule</code> 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)\)\.
|
* MH module utils \- attribute <code>debug</code> definition in subclasses of MH is now deprecated\, as that name will become a delegation to <code>AnsibleModule</code> 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)\)\.
|
||||||
* proxmox \- removes default value <code>false</code> of <code>update</code> parameter\. This will be changed to a default of <code>true</code> in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9225](https\://github\.com/ansible\-collections/community\.general/pull/9225)\)\.
|
* proxmox \- removes default value <code>false</code> of <code>update</code> parameter\. This will be changed to a default of <code>true</code> in community\.general 11\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9225](https\://github\.com/ansible\-collections/community\.general/pull/9225)\)\.
|
||||||
|
|
||||||
<a id="security-fixes"></a>
|
<a id="security-fixes-1"></a>
|
||||||
### Security Fixes
|
### Security Fixes
|
||||||
|
|
||||||
* keycloak\_client \- Sanitize <code>saml\.encryption\.private\.key</code> 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)\)\.
|
* keycloak\_client \- Sanitize <code>saml\.encryption\.private\.key</code> 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)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-9"></a>
|
<a id="bugfixes-13"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* 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 \- 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)\)\.
|
||||||
@@ -634,7 +714,7 @@ Regular bugfix and feature release\.
|
|||||||
<a id="v10-2-0"></a>
|
<a id="v10-2-0"></a>
|
||||||
## v10\.2\.0
|
## v10\.2\.0
|
||||||
|
|
||||||
<a id="release-summary-10"></a>
|
<a id="release-summary-14"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix and feature release\.
|
Regular bugfix and feature release\.
|
||||||
@@ -788,12 +868,12 @@ Regular bugfix and feature release\.
|
|||||||
* slack \- the default value <code>auto</code> of the <code>prepend\_hash</code> option is deprecated and will change to <code>never</code> in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9443](https\://github\.com/ansible\-collections/community\.general/pull/9443)\)\.
|
* slack \- the default value <code>auto</code> of the <code>prepend\_hash</code> option is deprecated and will change to <code>never</code> in community\.general 12\.0\.0 \([https\://github\.com/ansible\-collections/community\.general/pull/9443](https\://github\.com/ansible\-collections/community\.general/pull/9443)\)\.
|
||||||
* yaml callback plugin \- deprecate plugin in favor of <code>result\_format\=yaml</code> in plugin <code>ansible\.bulitin\.default</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9456](https\://github\.com/ansible\-collections/community\.general/pull/9456)\)\.
|
* yaml callback plugin \- deprecate plugin in favor of <code>result\_format\=yaml</code> in plugin <code>ansible\.bulitin\.default</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9456](https\://github\.com/ansible\-collections/community\.general/pull/9456)\)\.
|
||||||
|
|
||||||
<a id="security-fixes-1"></a>
|
<a id="security-fixes-2"></a>
|
||||||
### Security Fixes
|
### Security Fixes
|
||||||
|
|
||||||
* keycloak\_authentication \- API calls did not properly set the <code>priority</code> 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\_authentication \- API calls did not properly set the <code>priority</code> 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)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-10"></a>
|
<a id="bugfixes-14"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* dig lookup plugin \- correctly handle <code>NoNameserver</code> 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)\)\.
|
* dig lookup plugin \- correctly handle <code>NoNameserver</code> 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)\)\.
|
||||||
@@ -824,7 +904,7 @@ Regular bugfix and feature release\.
|
|||||||
<a id="v10-1-0"></a>
|
<a id="v10-1-0"></a>
|
||||||
## v10\.1\.0
|
## v10\.1\.0
|
||||||
|
|
||||||
<a id="release-summary-11"></a>
|
<a id="release-summary-15"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Regular bugfix and feature release\.
|
Regular bugfix and feature release\.
|
||||||
@@ -856,7 +936,7 @@ Regular bugfix and feature release\.
|
|||||||
* opkg \- deprecate value <code>\"\"</code> for parameter <code>force</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9172](https\://github\.com/ansible\-collections/community\.general/pull/9172)\)\.
|
* opkg \- deprecate value <code>\"\"</code> for parameter <code>force</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9172](https\://github\.com/ansible\-collections/community\.general/pull/9172)\)\.
|
||||||
* redfish\_utils module utils \- deprecate method <code>RedfishUtils\.\_init\_session\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9190](https\://github\.com/ansible\-collections/community\.general/pull/9190)\)\.
|
* redfish\_utils module utils \- deprecate method <code>RedfishUtils\.\_init\_session\(\)</code> \([https\://github\.com/ansible\-collections/community\.general/pull/9190](https\://github\.com/ansible\-collections/community\.general/pull/9190)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-11"></a>
|
<a id="bugfixes-15"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* 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 \- 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)\)\.
|
||||||
@@ -885,12 +965,12 @@ Regular bugfix and feature release\.
|
|||||||
<a id="v10-0-1"></a>
|
<a id="v10-0-1"></a>
|
||||||
## v10\.0\.1
|
## v10\.0\.1
|
||||||
|
|
||||||
<a id="release-summary-12"></a>
|
<a id="release-summary-16"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
|
Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
|
||||||
|
|
||||||
<a id="bugfixes-12"></a>
|
<a id="bugfixes-16"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* 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 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)\)\.
|
||||||
@@ -900,7 +980,7 @@ Bugfix release for inclusion in Ansible 11\.0\.0rc1\.
|
|||||||
<a id="v10-0-0"></a>
|
<a id="v10-0-0"></a>
|
||||||
## v10\.0\.0
|
## v10\.0\.0
|
||||||
|
|
||||||
<a id="release-summary-13"></a>
|
<a id="release-summary-17"></a>
|
||||||
### Release Summary
|
### Release Summary
|
||||||
|
|
||||||
This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-11\-04\.
|
This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-11\-04\.
|
||||||
@@ -1135,7 +1215,7 @@ This is release 10\.0\.0 of <code>community\.general</code>\, released on 2024\-
|
|||||||
* proxmox\_kvm \- removed the <code>proxmox\_default\_behavior</code> option\. Explicitly specify the old default values if you were using <code>proxmox\_default\_behavior\=compatibility</code>\, otherwise simply remove it \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
|
* proxmox\_kvm \- removed the <code>proxmox\_default\_behavior</code> option\. Explicitly specify the old default values if you were using <code>proxmox\_default\_behavior\=compatibility</code>\, otherwise simply remove it \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
|
||||||
* redhat\_subscriptions \- removed the <code>pool</code> option\. Use <code>pool\_ids</code> instead \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
|
* redhat\_subscriptions \- removed the <code>pool</code> option\. Use <code>pool\_ids</code> instead \([https\://github\.com/ansible\-collections/community\.general/pull/8918](https\://github\.com/ansible\-collections/community\.general/pull/8918)\)\.
|
||||||
|
|
||||||
<a id="bugfixes-13"></a>
|
<a id="bugfixes-17"></a>
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
* bitwarden lookup plugin \- fix <code>KeyError</code> in <code>search\_field</code> \([https\://github\.com/ansible\-collections/community\.general/issues/8549](https\://github\.com/ansible\-collections/community\.general/issues/8549)\, [https\://github\.com/ansible\-collections/community\.general/pull/8557](https\://github\.com/ansible\-collections/community\.general/pull/8557)\)\.
|
* bitwarden lookup plugin \- fix <code>KeyError</code> in <code>search\_field</code> \([https\://github\.com/ansible\-collections/community\.general/issues/8549](https\://github\.com/ansible\-collections/community\.general/issues/8549)\, [https\://github\.com/ansible\-collections/community\.general/pull/8557](https\://github\.com/ansible\-collections/community\.general/pull/8557)\)\.
|
||||||
|
|||||||
@@ -6,6 +6,73 @@ Community General Release Notes
|
|||||||
|
|
||||||
This changelog describes changes after version 9.0.0.
|
This changelog describes changes after version 9.0.0.
|
||||||
|
|
||||||
|
v10.7.8
|
||||||
|
=======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Bugfix release.
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources`` from ``setuptools`` cannot be imported. That module has been removed from setuptools 82.0.0 (https://github.com/ansible-collections/community.general/issues/11491, https://github.com/ansible-collections/community.general/pull/11492).
|
||||||
|
|
||||||
|
v10.7.7
|
||||||
|
=======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Bugfix release.
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- monit - add delay of 0.5 seconds after state change and check for status (https://github.com/ansible-collections/community.general/pull/11255).
|
||||||
|
|
||||||
|
v10.7.6
|
||||||
|
=======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Regular bugfix release.
|
||||||
|
|
||||||
|
Security Fixes
|
||||||
|
--------------
|
||||||
|
|
||||||
|
- keycloak_user - the parameter ``credentials[].value`` is now marked as ``no_log=true``. Before it was logged by Ansible, unless the task was marked as ``no_log: true``. Since this parameter can be used for passwords, this resulted in credential leaking (https://github.com/ansible-collections/community.general/issues/11000, https://github.com/ansible-collections/community.general/pull/11005).
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- gitlab_runner - fix exception in check mode when a new runner is created (https://github.com/ansible-collections/community.general/issues/8854).
|
||||||
|
- omapi_host - make return values compatible with ansible-core 2.19 and Python 3 (https://github.com/ansible-collections/community.general/pull/11001).
|
||||||
|
- onepassword_doc and onepassword_ssh_key lookup plugins - ensure that all connection parameters are passed to CLI class (https://github.com/ansible-collections/community.general/pull/10965).
|
||||||
|
- pritunl_user - improve resilience when comparing user parameters if remote fields are ``null`` or missing. List parameters (``groups``, ``mac_addresses``) now safely default to empty lists for comparison and avoids ``KeyError`` issues (https://github.com/ansible-collections/community.general/issues/10954, https://github.com/ansible-collections/community.general/pull/10955).
|
||||||
|
- random_string lookup plugin - replace ``random.SystemRandom()`` with ``secrets.SystemRandom()`` when generating strings. This has no practical effect, as both are the same (https://github.com/ansible-collections/community.general/pull/10893).
|
||||||
|
- terraform - fix bug when ``null`` values inside complex vars are throwing error instead of being passed to terraform. Now terraform can handle ``null``s in ``complex_vars`` itself (https://github.com/ansible-collections/community.general/pull/10961).
|
||||||
|
|
||||||
|
v10.7.5
|
||||||
|
=======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Regular bugfix release.
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Avoid usage of deprecated ``ansible.module_utils.six`` in all code that does not have to support Python 2 (https://github.com/ansible-collections/community.general/pull/10873).
|
||||||
|
- github_deploy_key - fix bug during error handling if no body was present in the result (https://github.com/ansible-collections/community.general/issues/10853, https://github.com/ansible-collections/community.general/pull/10857).
|
||||||
|
- keycloak_group - fixes an issue where module ignores realm when searching subgroups by name (https://github.com/ansible-collections/community.general/pull/10840).
|
||||||
|
- keycloak_role - fixes an issue where the module incorrectly returns ``changed=true`` when using the alias ``clientId`` in composite roles (https://github.com/ansible-collections/community.general/pull/10829).
|
||||||
|
- rocketchat - fix message delivery in Rocket Chat >= 7.5.3 by forcing ``Content-Type`` header to ``application/json`` instead of the default ``application/x-www-form-urlencoded`` (https://github.com/ansible-collections/community.general/issues/10796, https://github.com/ansible-collections/community.general/pull/10796).
|
||||||
|
- yaml cache plugin - make compatible with ansible-core 2.19 (https://github.com/ansible-collections/community.general/issues/10849, https://github.com/ansible-collections/community.general/issues/10852).
|
||||||
|
|
||||||
v10.7.4
|
v10.7.4
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
We follow [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) in all our contributions and interactions within this repository.
|
We follow [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html) in all our contributions and interactions within this repository.
|
||||||
|
|
||||||
If you are a committer, also refer to the [collection's committer guidelines](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md).
|
If you are a committer, also refer to the [collection's committer guidelines](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md).
|
||||||
|
|
||||||
@@ -20,33 +20,38 @@ so you can cooperate to create a better solution together.
|
|||||||
* If you are interested in starting with an easy issue, look for [issues with an `easyfix` label](https://github.com/ansible-collections/community.general/labels/easyfix).
|
* If you are interested in starting with an easy issue, look for [issues with an `easyfix` label](https://github.com/ansible-collections/community.general/labels/easyfix).
|
||||||
* Often issues that are waiting for contributors to pick up have [the `waiting_on_contributor` label](https://github.com/ansible-collections/community.general/labels/waiting_on_contributor).
|
* Often issues that are waiting for contributors to pick up have [the `waiting_on_contributor` label](https://github.com/ansible-collections/community.general/labels/waiting_on_contributor).
|
||||||
|
|
||||||
## Open pull requests
|
## Review pull requests
|
||||||
|
|
||||||
Look through currently [open pull requests](https://github.com/ansible-collections/community.general/pulls).
|
Look through currently [open pull requests](https://github.com/ansible-collections/community.general/pulls).
|
||||||
|
|
||||||
You can help by reviewing them. Reviews help move pull requests to merge state. Some good pull requests cannot be merged only due to a lack of reviews. And it is always worth saying that good reviews are often more valuable than pull requests themselves.
|
You can help by reviewing them. Reviews help move pull requests to merge state. Some good pull requests cannot be merged only due to a lack of reviews. And it is always worth saying that good reviews are often more valuable than pull requests themselves.
|
||||||
Note that reviewing does not only mean code review, but also offering comments on new interfaces added to existing plugins/modules, interfaces of new plugins/modules, improving language (not everyone is a native english speaker), or testing bugfixes and new features!
|
Note that reviewing does not only mean code review, but also offering comments on new interfaces added to existing plugins/modules, interfaces of new plugins/modules, improving language (not everyone is a native English speaker), or testing bugfixes and new features!
|
||||||
|
|
||||||
Also, consider taking up a valuable, reviewed, but abandoned pull request which you could politely ask the original authors to complete yourself.
|
Also, consider taking up a valuable, reviewed, but abandoned pull request which you could politely ask the original authors to complete yourself.
|
||||||
|
|
||||||
|
## Open pull requests
|
||||||
|
|
||||||
|
Please read our ['Contributing to collections'](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections_contributing.html#contributing-to-a-collection-community-general) guide.
|
||||||
|
|
||||||
* Try committing your changes with an informative but short commit message.
|
* Try committing your changes with an informative but short commit message.
|
||||||
* Do not squash your commits and force-push to your branch if not needed. Reviews of your pull request are much easier with individual commits to comprehend the pull request history. All commits of your pull request branch will be squashed into one commit by GitHub upon merge.
|
* Do not squash your commits and force-push to your branch if not needed. Reviews of your pull request are much easier with individual commits to comprehend the pull request history. All commits of your pull request branch will be squashed into one commit by GitHub upon merge.
|
||||||
* Do not add merge commits to your PR. The bot will complain and you will have to rebase ([instructions for rebasing](https://docs.ansible.com/ansible/latest/dev_guide/developing_rebasing.html)) to remove them before your PR can be merged. To avoid that git automatically does merges during pulls, you can configure it to do rebases instead by running `git config pull.rebase true` inside the repository checkout.
|
* Do not add merge commits to your PR. The bot will complain and you will have to rebase ([instructions for rebasing](https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_rebasing.html)) to remove them before your PR can be merged. To avoid that git automatically does merges during pulls, you can configure it to do rebases instead by running `git config pull.rebase true` inside the repository checkout.
|
||||||
* Make sure your PR includes a [changelog fragment](https://docs.ansible.com/ansible/devel/community/collection_development_process.html#creating-a-changelog-fragment).
|
* Make sure your PR includes a [changelog fragment](https://docs.ansible.com/projects/ansible/devel/community/collection_development_process.html#creating-a-changelog-fragment).
|
||||||
* You must not include a fragment for new modules or new plugins. Also you shouldn't include one for docs-only changes. (If you're not sure, simply don't include one, we'll tell you whether one is needed or not :) )
|
* You must not include a fragment for new modules or new plugins. Also you shouldn't include one for docs-only changes. (If you're not sure, simply don't include one, we'll tell you whether one is needed or not :) )
|
||||||
* Please always include a link to the pull request itself, and if the PR is about an issue, also a link to the issue. Also make sure the fragment ends with a period, and begins with a lower-case letter after `-`. (Again, if you don't do this, we'll add suggestions to fix it, so don't worry too much :) )
|
* Please always include a link to the pull request itself, and if the PR is about an issue, also a link to the issue. Also make sure the fragment ends with a period, and begins with a lower-case letter after `-`. (Again, if you don't do this, we'll add suggestions to fix it, so don't worry too much :) )
|
||||||
* Avoid reformatting unrelated parts of the codebase in your PR. These types of changes will likely be requested for reversion, create additional work for reviewers, and may cause approval to be delayed.
|
* Avoid reformatting unrelated parts of the codebase in your PR. These types of changes will likely be requested for reversion, create additional work for reviewers, and may cause approval to be delayed.
|
||||||
|
|
||||||
You can also read [our Quick-start development guide](https://github.com/ansible/community-docs/blob/main/create_pr_quick_start_guide.rst).
|
You can also read the Ansible community's [Quick-start development guide](https://docs.ansible.com/projects/ansible/devel/community/create_pr_quick_start.html).
|
||||||
|
|
||||||
## Test pull requests
|
## Test pull requests
|
||||||
|
|
||||||
If you want to test a PR locally, refer to [our testing guide](https://github.com/ansible/community-docs/blob/main/test_pr_locally_guide.rst) for instructions on how do it quickly.
|
If you want to test a PR locally, refer to [our testing guide](https://docs.ansible.com/projects/ansible/devel/community/collection_contributors/collection_test_pr_locally.html) for instructions on how do it quickly.
|
||||||
|
|
||||||
If you find any inconsistencies or places in this document which can be improved, feel free to raise an issue or pull request to fix it.
|
If you find any inconsistencies or places in this document which can be improved, feel free to raise an issue or pull request to fix it.
|
||||||
|
|
||||||
## Run sanity or unit locally (with antsibull-nox)
|
## Run sanity or unit locally (with antsibull-nox)
|
||||||
|
|
||||||
The easiest way to run sanity and unit tests locally is to use [antsibull-nox](https://ansible.readthedocs.io/projects/antsibull-nox/).
|
The easiest way to run sanity and unit tests locally is to use [antsibull-nox](https://docs.ansible.com/projects/antsibull-nox/).
|
||||||
(If you have [nox](https://nox.thea.codes/en/stable/) installed, it will automatically install antsibull-nox in a virtual environment for you.)
|
(If you have [nox](https://nox.thea.codes/en/stable/) installed, it will automatically install antsibull-nox in a virtual environment for you.)
|
||||||
|
|
||||||
### Sanity tests
|
### Sanity tests
|
||||||
@@ -88,7 +93,7 @@ If you replace `-Re` with `-e`, then the virtual environments will be re-created
|
|||||||
Instead of using antsibull-nox, you can also run sanity and unit tests with ansible-test directly.
|
Instead of using antsibull-nox, you can also run sanity and unit tests with ansible-test directly.
|
||||||
This also allows you to run integration tests.
|
This also allows you to run integration tests.
|
||||||
|
|
||||||
You have to check out the repository into a specific path structure to be able to run `ansible-test`. The path to the git checkout must end with `.../ansible_collections/community/general`. Please see [our testing guide](https://github.com/ansible/community-docs/blob/main/test_pr_locally_guide.rst) for instructions on how to check out the repository into a correct path structure. The short version of these instructions is:
|
You have to check out the repository into a specific path structure to be able to run `ansible-test`. The path to the git checkout must end with `.../ansible_collections/community/general`. Please see [our testing guide](https://docs.ansible.com/projects/ansible/devel/community/collection_contributors/collection_test_pr_locally.html) for instructions on how to check out the repository into a correct path structure. The short version of these instructions is:
|
||||||
|
|
||||||
```.bash
|
```.bash
|
||||||
mkdir -p ~/dev/ansible_collections/community
|
mkdir -p ~/dev/ansible_collections/community
|
||||||
@@ -188,9 +193,9 @@ Creating new modules and plugins requires a bit more work than other Pull Reques
|
|||||||
|
|
||||||
3. When creating a new module or plugin, please make sure that you follow various guidelines:
|
3. When creating a new module or plugin, please make sure that you follow various guidelines:
|
||||||
|
|
||||||
- Follow [development conventions](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html);
|
- Follow [development conventions](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_modules_best_practices.html);
|
||||||
- Follow [documentation standards](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_documenting.html) and
|
- Follow [documentation standards](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_modules_documenting.html) and
|
||||||
the [Ansible style guide](https://docs.ansible.com/ansible/devel/dev_guide/style_guide/index.html#style-guide);
|
the [Ansible style guide](https://docs.ansible.com/projects/ansible/devel/dev_guide/style_guide/index.html#style-guide);
|
||||||
- Make sure your modules and plugins are [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0-standalone.html) licensed
|
- Make sure your modules and plugins are [GPL-3.0-or-later](https://www.gnu.org/licenses/gpl-3.0-standalone.html) licensed
|
||||||
(new module_utils can also be [BSD-2-clause](https://opensource.org/licenses/BSD-2-Clause) licensed);
|
(new module_utils can also be [BSD-2-clause](https://opensource.org/licenses/BSD-2-Clause) licensed);
|
||||||
- Make sure that new plugins and modules have tests (unit tests, integration tests, or both); it is preferable to have some tests
|
- Make sure that new plugins and modules have tests (unit tests, integration tests, or both); it is preferable to have some tests
|
||||||
|
|||||||
30
README.md
30
README.md
@@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
|
|
||||||
# Community General Collection
|
# Community General Collection
|
||||||
|
|
||||||
[](https://docs.ansible.com/ansible/latest/collections/community/general/)
|
[](https://docs.ansible.com/projects/ansible/latest/collections/community/general/)
|
||||||
[](https://dev.azure.com/ansible/community.general/_build?definitionId=31)
|
[](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://github.com/ansible-collections/community.general/actions)
|
[](https://github.com/ansible-collections/community.general/actions)
|
||||||
@@ -15,15 +15,15 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
|
|
||||||
This repository contains the `community.general` Ansible Collection. The collection is a part of the Ansible package and includes many modules and plugins supported by Ansible community which are not part of more specialized community collections.
|
This repository contains the `community.general` Ansible Collection. The collection is a part of the Ansible package and includes many modules and plugins supported by Ansible community which are not part of more specialized community collections.
|
||||||
|
|
||||||
You can find [documentation for this collection on the Ansible docs site](https://docs.ansible.com/ansible/latest/collections/community/general/).
|
You can find [documentation for this collection on the Ansible docs site](https://docs.ansible.com/projects/ansible/latest/collections/community/general/).
|
||||||
|
|
||||||
Please note that this collection does **not** support Windows targets. Only connection plugins included in this collection might support Windows targets, and will explicitly mention that in their documentation if they do so.
|
Please note that this collection does **not** support Windows targets. Only connection plugins included in this collection might support Windows targets, and will explicitly mention that in their documentation if they do so.
|
||||||
|
|
||||||
## Code of Conduct
|
## Code of Conduct
|
||||||
|
|
||||||
We follow [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html) in all our interactions within this project.
|
We follow [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html) in all our interactions within this project.
|
||||||
|
|
||||||
If you encounter abusive behavior violating the [Ansible Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html), please refer to the [policy violations](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html#policy-violations) section of the Code of Conduct for information on how to raise a complaint.
|
If you encounter abusive behavior violating the [Ansible Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html), please refer to the [policy violations](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html#policy-violations) section of the Code of Conduct for information on how to raise a complaint.
|
||||||
|
|
||||||
## Communication
|
## Communication
|
||||||
|
|
||||||
@@ -33,13 +33,13 @@ If you encounter abusive behavior violating the [Ansible Code of Conduct](https:
|
|||||||
* [Social Spaces](https://forum.ansible.com/c/chat/4): gather and interact with fellow enthusiasts.
|
* [Social Spaces](https://forum.ansible.com/c/chat/4): gather and interact with fellow enthusiasts.
|
||||||
* [News & Announcements](https://forum.ansible.com/c/news/5): track project-wide announcements including social events.
|
* [News & Announcements](https://forum.ansible.com/c/news/5): track project-wide announcements including social events.
|
||||||
|
|
||||||
* The Ansible [Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn): used to announce releases and important changes.
|
* The Ansible [Bullhorn newsletter](https://docs.ansible.com/projects/ansible/devel/community/communication.html#the-bullhorn): used to announce releases and important changes.
|
||||||
|
|
||||||
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/ansible/devel/community/communication.html).
|
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/projects/ansible/devel/community/communication.html).
|
||||||
|
|
||||||
## Tested with Ansible
|
## Tested with Ansible
|
||||||
|
|
||||||
Tested with the current ansible-core 2.15, 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.15.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
|
Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, ansible-core 2.18, ansible-core 2.19, and ansible-core 2.20 releases. Ansible-core versions before 2.15.0 are not supported. This includes all ansible-base 2.10 and Ansible 2.9 releases.
|
||||||
|
|
||||||
## External requirements
|
## External requirements
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ Some modules and plugins require external libraries. Please check the requiremen
|
|||||||
|
|
||||||
## Included content
|
## Included content
|
||||||
|
|
||||||
Please check the included content on the [Ansible Galaxy page for this collection](https://galaxy.ansible.com/ui/repo/published/community/general/) or the [documentation on the Ansible docs site](https://docs.ansible.com/ansible/latest/collections/community/general/).
|
Please check the included content on the [Ansible Galaxy page for this collection](https://galaxy.ansible.com/ui/repo/published/community/general/) or the [documentation on the Ansible docs site](https://docs.ansible.com/projects/ansible/latest/collections/community/general/).
|
||||||
|
|
||||||
## Using this collection
|
## Using this collection
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ You can also install a specific version of the collection, for example, if you n
|
|||||||
ansible-galaxy collection install community.general:==X.Y.Z
|
ansible-galaxy collection install community.general:==X.Y.Z
|
||||||
```
|
```
|
||||||
|
|
||||||
See [Ansible Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details.
|
See [Ansible Using collections](https://docs.ansible.com/projects/ansible/latest/user_guide/collections_using.html) for more details.
|
||||||
|
|
||||||
## Contributing to this collection
|
## Contributing to this collection
|
||||||
|
|
||||||
@@ -90,13 +90,13 @@ You don't know how to start? Refer to our [contribution guide](https://github.co
|
|||||||
|
|
||||||
The current maintainers are listed in the [commit-rights.md](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md#people) file. If you have questions or need help, feel free to mention them in the proposals.
|
The current maintainers are listed in the [commit-rights.md](https://github.com/ansible-collections/community.general/blob/main/commit-rights.md#people) file. If you have questions or need help, feel free to mention them in the proposals.
|
||||||
|
|
||||||
You can find more information in the [developer guide for collections](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html#contributing-to-collections), and in the [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html).
|
You can find more information in the [developer guide for collections](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections.html#contributing-to-collections), and in the [Ansible Community Guide](https://docs.ansible.com/projects/ansible/latest/community/index.html).
|
||||||
|
|
||||||
Also for some notes specific to this collection see [our CONTRIBUTING documentation](https://github.com/ansible-collections/community.general/blob/main/CONTRIBUTING.md).
|
Also for some notes specific to this collection see [our CONTRIBUTING documentation](https://github.com/ansible-collections/community.general/blob/main/CONTRIBUTING.md).
|
||||||
|
|
||||||
### Running tests
|
### Running tests
|
||||||
|
|
||||||
See [here](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html#testing-collections).
|
See [here](https://docs.ansible.com/projects/ansible/devel/dev_guide/developing_collections.html#testing-collections).
|
||||||
|
|
||||||
## Collection maintenance
|
## Collection maintenance
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ It is necessary for maintainers of this collection to be subscribed to:
|
|||||||
* The collection itself (the `Watch` button → `All Activity` in the upper right corner of the repository's homepage).
|
* The collection itself (the `Watch` button → `All Activity` in the upper right corner of the repository's homepage).
|
||||||
* The "Changes Impacting Collection Contributors and Maintainers" [issue](https://github.com/ansible-collections/overview/issues/45).
|
* The "Changes Impacting Collection Contributors and Maintainers" [issue](https://github.com/ansible-collections/overview/issues/45).
|
||||||
|
|
||||||
They also should be subscribed to Ansible's [The Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn).
|
They also should be subscribed to Ansible's [The Bullhorn newsletter](https://docs.ansible.com/projects/ansible/devel/community/communication.html#the-bullhorn).
|
||||||
|
|
||||||
## Publishing New Version
|
## Publishing New Version
|
||||||
|
|
||||||
@@ -129,9 +129,9 @@ See [this issue](https://github.com/ansible-collections/community.general/issues
|
|||||||
## More information
|
## More information
|
||||||
|
|
||||||
- [Ansible Collection overview](https://github.com/ansible-collections/overview)
|
- [Ansible Collection overview](https://github.com/ansible-collections/overview)
|
||||||
- [Ansible User guide](https://docs.ansible.com/ansible/latest/user_guide/index.html)
|
- [Ansible User guide](https://docs.ansible.com/projects/ansible/latest/user_guide/index.html)
|
||||||
- [Ansible Developer guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html)
|
- [Ansible Developer guide](https://docs.ansible.com/projects/ansible/latest/dev_guide/index.html)
|
||||||
- [Ansible Community code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html)
|
- [Ansible Community code of conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html)
|
||||||
|
|
||||||
## Licensing
|
## Licensing
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,11 @@
|
|||||||
# community.crypto's main branch needs ansible-core >= 2.17
|
# community.crypto's main branch needs ansible-core >= 2.17
|
||||||
"community.crypto" = "git+https://github.com/ansible-collections/community.crypto.git,stable-2"
|
"community.crypto" = "git+https://github.com/ansible-collections/community.crypto.git,stable-2"
|
||||||
|
|
||||||
|
[vcs]
|
||||||
|
vcs = "git"
|
||||||
|
development_branch = "main"
|
||||||
|
stable_branches = [ "stable-*" ]
|
||||||
|
|
||||||
[sessions]
|
[sessions]
|
||||||
|
|
||||||
[sessions.docs_check]
|
[sessions.docs_check]
|
||||||
|
|||||||
@@ -2047,3 +2047,90 @@ releases:
|
|||||||
- 10751-kdeconfig-support-kwriteconfig6.yml
|
- 10751-kdeconfig-support-kwriteconfig6.yml
|
||||||
- 10752-selective-hardcoded-loop-var.yml
|
- 10752-selective-hardcoded-loop-var.yml
|
||||||
release_date: '2025-09-08'
|
release_date: '2025-09-08'
|
||||||
|
10.7.5:
|
||||||
|
changes:
|
||||||
|
bugfixes:
|
||||||
|
- Avoid usage of deprecated ``ansible.module_utils.six`` in all code that
|
||||||
|
does not have to support Python 2 (https://github.com/ansible-collections/community.general/pull/10873).
|
||||||
|
- github_deploy_key - fix bug during error handling if no body was present
|
||||||
|
in the result (https://github.com/ansible-collections/community.general/issues/10853,
|
||||||
|
https://github.com/ansible-collections/community.general/pull/10857).
|
||||||
|
- keycloak_group - fixes an issue where module ignores realm when searching
|
||||||
|
subgroups by name (https://github.com/ansible-collections/community.general/pull/10840).
|
||||||
|
- keycloak_role - fixes an issue where the module incorrectly returns ``changed=true``
|
||||||
|
when using the alias ``clientId`` in composite roles (https://github.com/ansible-collections/community.general/pull/10829).
|
||||||
|
- rocketchat - fix message delivery in Rocket Chat >= 7.5.3 by forcing ``Content-Type``
|
||||||
|
header to ``application/json`` instead of the default ``application/x-www-form-urlencoded``
|
||||||
|
(https://github.com/ansible-collections/community.general/issues/10796,
|
||||||
|
https://github.com/ansible-collections/community.general/pull/10796).
|
||||||
|
- yaml cache plugin - make compatible with ansible-core 2.19 (https://github.com/ansible-collections/community.general/issues/10849,
|
||||||
|
https://github.com/ansible-collections/community.general/issues/10852).
|
||||||
|
release_summary: Regular bugfix release.
|
||||||
|
fragments:
|
||||||
|
- 10.7.5.yml
|
||||||
|
- 10796-rocketchat-force-content-type.yml
|
||||||
|
- 10829-fix-keycloak-role-changed-status.yml
|
||||||
|
- 10840-fix-keycloak-subgroup-search-realm.yml
|
||||||
|
- 10852-yaml.yml
|
||||||
|
- 10857-github_deploy_key-err.yml
|
||||||
|
- 10873-six.yml
|
||||||
|
release_date: '2025-10-06'
|
||||||
|
10.7.6:
|
||||||
|
changes:
|
||||||
|
bugfixes:
|
||||||
|
- gitlab_runner - fix exception in check mode when a new runner is created
|
||||||
|
(https://github.com/ansible-collections/community.general/issues/8854).
|
||||||
|
- omapi_host - make return values compatible with ansible-core 2.19 and Python
|
||||||
|
3 (https://github.com/ansible-collections/community.general/pull/11001).
|
||||||
|
- onepassword_doc and onepassword_ssh_key lookup plugins - ensure that all
|
||||||
|
connection parameters are passed to CLI class (https://github.com/ansible-collections/community.general/pull/10965).
|
||||||
|
- pritunl_user - improve resilience when comparing user parameters if remote
|
||||||
|
fields are ``null`` or missing. List parameters (``groups``, ``mac_addresses``)
|
||||||
|
now safely default to empty lists for comparison and avoids ``KeyError``
|
||||||
|
issues (https://github.com/ansible-collections/community.general/issues/10954,
|
||||||
|
https://github.com/ansible-collections/community.general/pull/10955).
|
||||||
|
- random_string lookup plugin - replace ``random.SystemRandom()`` with ``secrets.SystemRandom()``
|
||||||
|
when generating strings. This has no practical effect, as both are the same
|
||||||
|
(https://github.com/ansible-collections/community.general/pull/10893).
|
||||||
|
- terraform - fix bug when ``null`` values inside complex vars are throwing
|
||||||
|
error instead of being passed to terraform. Now terraform can handle ``null``s
|
||||||
|
in ``complex_vars`` itself (https://github.com/ansible-collections/community.general/pull/10961).
|
||||||
|
release_summary: Regular bugfix release.
|
||||||
|
security_fixes:
|
||||||
|
- 'keycloak_user - the parameter ``credentials[].value`` is now marked as
|
||||||
|
``no_log=true``. Before it was logged by Ansible, unless the task was marked
|
||||||
|
as ``no_log: true``. Since this parameter can be used for passwords, this
|
||||||
|
resulted in credential leaking (https://github.com/ansible-collections/community.general/issues/11000,
|
||||||
|
https://github.com/ansible-collections/community.general/pull/11005).'
|
||||||
|
fragments:
|
||||||
|
- 10.7.6.yml
|
||||||
|
- 10918-gitlab-runner-fix-check-mode.yml
|
||||||
|
- 10955-pritunl_user-null-missing-params.yaml
|
||||||
|
- 10961-terraform-complexvars-null-bugfix.yaml
|
||||||
|
- 10965-onepassword-bugfix.yml
|
||||||
|
- 11001-omapi.yml
|
||||||
|
- 11005-keycloak_user.yml
|
||||||
|
- replace-random-with-secrets.yml
|
||||||
|
release_date: '2025-11-02'
|
||||||
|
10.7.7:
|
||||||
|
changes:
|
||||||
|
bugfixes:
|
||||||
|
- monit - add delay of 0.5 seconds after state change and check for status
|
||||||
|
(https://github.com/ansible-collections/community.general/pull/11255).
|
||||||
|
release_summary: Bugfix release.
|
||||||
|
fragments:
|
||||||
|
- 10.7.7.yml
|
||||||
|
- 11255-monit-integrationtests.yml
|
||||||
|
release_date: '2025-12-29'
|
||||||
|
10.7.8:
|
||||||
|
changes:
|
||||||
|
bugfixes:
|
||||||
|
- python_requirements_info - use ``importlib.metadata`` if ``pkg_resources``
|
||||||
|
from ``setuptools`` cannot be imported. That module has been removed from
|
||||||
|
setuptools 82.0.0 (https://github.com/ansible-collections/community.general/issues/11491,
|
||||||
|
https://github.com/ansible-collections/community.general/pull/11492).
|
||||||
|
release_summary: Bugfix release.
|
||||||
|
fragments:
|
||||||
|
- 10.7.8.yml
|
||||||
|
- 11492-python_requires_info.yml
|
||||||
|
release_date: '2026-02-23'
|
||||||
|
|||||||
2
changelogs/fragments/11909-fix-favicon-url.yml
Normal file
2
changelogs/fragments/11909-fix-favicon-url.yml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
minor_changes:
|
||||||
|
- "mattermost, rocketchat, slack - update default ``icon_url`` to ansible favicon (https://github.com/ansible-collections/community.general/pull/11909)."
|
||||||
@@ -7,7 +7,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
Committers Guidelines for community.general
|
Committers Guidelines for community.general
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
This document is based on the [Ansible committer guidelines](https://github.com/ansible/ansible/blob/b57444af14062ec96e0af75fdfc2098c74fe2d9a/docs/docsite/rst/community/committer_guidelines.rst) ([latest version](https://docs.ansible.com/ansible/devel/community/committer_guidelines.html)).
|
This document is based on the [Ansible committer guidelines](https://github.com/ansible/ansible/blob/b57444af14062ec96e0af75fdfc2098c74fe2d9a/docs/docsite/rst/community/committer_guidelines.rst) ([latest version](https://docs.ansible.com/projects/ansible/devel/community/committer_guidelines.html)).
|
||||||
|
|
||||||
These are the guidelines for people with commit privileges on the Ansible Community General Collection GitHub repository. Please read the guidelines before you commit.
|
These are the guidelines for people with commit privileges on the Ansible Community General Collection GitHub repository. Please read the guidelines before you commit.
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ Individuals with direct commit access to this collection repository are entruste
|
|||||||
- Do not commit directly.
|
- Do not commit directly.
|
||||||
- Do not merge your own PRs. Someone else should have a chance to review and approve the PR merge. You have a small amount of leeway here for very minor changes.
|
- Do not merge your own PRs. Someone else should have a chance to review and approve the PR merge. You have a small amount of leeway here for very minor changes.
|
||||||
- Do not forget about non-standard / alternate environments. Consider the alternatives. Yes, people have bad/unusual/strange environments (like binaries from multiple init systems installed), but they are the ones who need us the most.
|
- Do not forget about non-standard / alternate environments. Consider the alternatives. Yes, people have bad/unusual/strange environments (like binaries from multiple init systems installed), but they are the ones who need us the most.
|
||||||
- Do not drag your community team members down. Discuss the technical merits of any pull requests you review. Avoid negativity and personal comments. For more guidance on being a good community member, read the [Ansible Community Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).
|
- Do not drag your community team members down. Discuss the technical merits of any pull requests you review. Avoid negativity and personal comments. For more guidance on being a good community member, read the [Ansible Community Code of Conduct](https://docs.ansible.com/projects/ansible/latest/community/code_of_conduct.html).
|
||||||
- Do not forget about the maintenance burden. High-maintenance features may not be worth adding.
|
- Do not forget about the maintenance burden. High-maintenance features may not be worth adding.
|
||||||
- Do not break playbooks. Always keep backwards compatibility in mind.
|
- Do not break playbooks. Always keep backwards compatibility in mind.
|
||||||
- Do not forget to keep it simple. Complexity breeds all kinds of problems.
|
- Do not forget to keep it simple. Complexity breeds all kinds of problems.
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ That is where ``ModuleHelper`` comes to assistance: a lot of that boilerplate co
|
|||||||
Quickstart
|
Quickstart
|
||||||
""""""""""
|
""""""""""
|
||||||
|
|
||||||
See the `example from Ansible documentation <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
|
See the `example from Ansible documentation <https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
|
||||||
written with ``ModuleHelper``.
|
written with ``ModuleHelper``.
|
||||||
But bear in mind that it does not showcase all of MH's features:
|
But bear in mind that it does not showcase all of MH's features:
|
||||||
|
|
||||||
@@ -570,9 +570,9 @@ The other option is to use the parameter ``value``, in which case the method wil
|
|||||||
References
|
References
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
|
|
||||||
- `Ansible Developer Guide <https://docs.ansible.com/ansible/latest/dev_guide/index.html>`_
|
- `Ansible Developer Guide <https://docs.ansible.com/projects/ansible/latest/dev_guide/index.html>`_
|
||||||
- `Creating a module <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
|
- `Creating a module <https://docs.ansible.com/projects/ansible/latest/dev_guide/developing_modules_general.html#creating-a-module>`_
|
||||||
- `Returning ansible facts <https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html#ansible-facts>`_
|
- `Returning ansible facts <https://docs.ansible.com/projects/ansible/latest/reference_appendices/common_return_values.html#ansible-facts>`_
|
||||||
- :ref:`ansible_collections.community.general.docsite.guide_vardict`
|
- :ref:`ansible_collections.community.general.docsite.guide_vardict`
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
namespace: community
|
namespace: community
|
||||||
name: general
|
name: general
|
||||||
version: 10.7.4
|
version: 10.7.9
|
||||||
readme: README.md
|
readme: README.md
|
||||||
authors:
|
authors:
|
||||||
- Ansible (https://github.com/ansible)
|
- Ansible (https://github.com/ansible)
|
||||||
@@ -16,6 +16,6 @@ license_file: COPYING
|
|||||||
tags:
|
tags:
|
||||||
- community
|
- community
|
||||||
repository: https://github.com/ansible-collections/community.general
|
repository: https://github.com/ansible-collections/community.general
|
||||||
documentation: https://docs.ansible.com/ansible/latest/collections/community/general/
|
documentation: https://docs.ansible.com/projects/ansible/latest/collections/community/general/
|
||||||
homepage: https://github.com/ansible-collections/community.general
|
homepage: https://github.com/ansible-collections/community.general
|
||||||
issues: https://github.com/ansible-collections/community.general/issues
|
issues: https://github.com/ansible-collections/community.general/issues
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ plugin_routing:
|
|||||||
deprecation:
|
deprecation:
|
||||||
removal_version: 12.0.0
|
removal_version: 12.0.0
|
||||||
warning_text: >-
|
warning_text: >-
|
||||||
The plugin has been superseded by the the option `result_format=yaml` in callback plugin ansible.builtin.default from ansible-core 2.13 onwards.
|
The plugin has been superseded by the option `result_format=yaml` in callback plugin ansible.builtin.default from ansible-core 2.13 onwards.
|
||||||
connection:
|
connection:
|
||||||
docker:
|
docker:
|
||||||
redirect: community.docker.docker
|
redirect: community.docker.docker
|
||||||
|
|||||||
@@ -59,8 +59,8 @@ notes:
|
|||||||
- This plugin ignores the C(become_user) supplied and uses C(pmrun)'s own configuration to select the user.
|
- This plugin ignores the C(become_user) supplied and uses C(pmrun)'s own configuration to select the user.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from shlex import quote as shlex_quote
|
||||||
from ansible.plugins.become import BecomeBase
|
from ansible.plugins.become import BecomeBase
|
||||||
from ansible.module_utils.six.moves import shlex_quote
|
|
||||||
|
|
||||||
|
|
||||||
class BecomeModule(BecomeBase):
|
class BecomeModule(BecomeBase):
|
||||||
|
|||||||
6
plugins/cache/pickle.py
vendored
6
plugins/cache/pickle.py
vendored
@@ -48,7 +48,6 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
import pickle
|
import pickle
|
||||||
|
|
||||||
from ansible.module_utils.six import PY3
|
|
||||||
from ansible.plugins.cache import BaseFileCacheModule
|
from ansible.plugins.cache import BaseFileCacheModule
|
||||||
|
|
||||||
|
|
||||||
@@ -61,10 +60,7 @@ class CacheModule(BaseFileCacheModule):
|
|||||||
def _load(self, filepath):
|
def _load(self, filepath):
|
||||||
# Pickle is a binary format
|
# Pickle is a binary format
|
||||||
with open(filepath, 'rb') as f:
|
with open(filepath, 'rb') as f:
|
||||||
if PY3:
|
return pickle.load(f, encoding='bytes')
|
||||||
return pickle.load(f, encoding='bytes')
|
|
||||||
else:
|
|
||||||
return pickle.load(f)
|
|
||||||
|
|
||||||
def _dump(self, value, filepath):
|
def _dump(self, value, filepath):
|
||||||
with open(filepath, 'wb') as f:
|
with open(filepath, 'wb') as f:
|
||||||
|
|||||||
7
plugins/cache/yaml.py
vendored
7
plugins/cache/yaml.py
vendored
@@ -44,8 +44,7 @@ options:
|
|||||||
# TODO: determine whether it is OK to change to: type: float
|
# TODO: determine whether it is OK to change to: type: float
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
import codecs
|
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
@@ -60,9 +59,9 @@ class CacheModule(BaseFileCacheModule):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def _load(self, filepath):
|
def _load(self, filepath):
|
||||||
with codecs.open(filepath, 'r', encoding='utf-8') as f:
|
with open(os.path.abspath(filepath), 'r', encoding='utf-8') as f:
|
||||||
return AnsibleLoader(f).get_single_data()
|
return AnsibleLoader(f).get_single_data()
|
||||||
|
|
||||||
def _dump(self, value, filepath):
|
def _dump(self, value, filepath):
|
||||||
with codecs.open(filepath, 'w', encoding='utf-8') as f:
|
with open(os.path.abspath(filepath), 'w', encoding='utf-8') as f:
|
||||||
yaml.dump(value, f, Dumper=AnsibleDumper, default_flow_style=False)
|
yaml.dump(value, f, Dumper=AnsibleDumper, default_flow_style=False)
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
from ansible.module_utils.six import binary_type, text_type
|
|
||||||
from collections.abc import MutableMapping, MutableSequence
|
from collections.abc import MutableMapping, MutableSequence
|
||||||
from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
|
from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
|
||||||
from ansible.utils.color import colorize, hostcolor
|
from ansible.utils.color import colorize, hostcolor
|
||||||
@@ -236,7 +235,7 @@ class CallbackModule(CallbackModule_default):
|
|||||||
|
|
||||||
# Remove empty attributes (list, dict, str)
|
# Remove empty attributes (list, dict, str)
|
||||||
for attr in result.copy():
|
for attr in result.copy():
|
||||||
if isinstance(result[attr], (MutableSequence, MutableMapping, binary_type, text_type)):
|
if isinstance(result[attr], (MutableSequence, MutableMapping, bytes, str)):
|
||||||
if not result[attr]:
|
if not result[attr]:
|
||||||
del result[attr]
|
del result[attr]
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ notes:
|
|||||||
seealso:
|
seealso:
|
||||||
- name: default – default Ansible screen output
|
- name: default – default Ansible screen output
|
||||||
description: The official documentation on the B(default) callback plugin.
|
description: The official documentation on the B(default) callback plugin.
|
||||||
link: https://docs.ansible.com/ansible/latest/plugins/callback/default.html
|
link: https://docs.ansible.com/projects/ansible/latest/plugins/callback/default.html
|
||||||
requirements:
|
requirements:
|
||||||
- set as stdout_callback in configuration
|
- set as stdout_callback in configuration
|
||||||
options:
|
options:
|
||||||
|
|||||||
@@ -87,7 +87,6 @@ from contextlib import closing
|
|||||||
from os.path import basename
|
from os.path import basename
|
||||||
|
|
||||||
from ansible.errors import AnsibleError, AnsibleRuntimeError
|
from ansible.errors import AnsibleError, AnsibleRuntimeError
|
||||||
from ansible.module_utils.six import raise_from
|
|
||||||
from ansible.plugins.callback import CallbackBase
|
from ansible.plugins.callback import CallbackBase
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -312,9 +311,7 @@ class CallbackModule(CallbackBase):
|
|||||||
self.disabled = False
|
self.disabled = False
|
||||||
|
|
||||||
if ELASTIC_LIBRARY_IMPORT_ERROR:
|
if ELASTIC_LIBRARY_IMPORT_ERROR:
|
||||||
raise_from(
|
raise AnsibleError('The `elastic-apm` must be installed to use this plugin') from ELASTIC_LIBRARY_IMPORT_ERROR
|
||||||
AnsibleError('The `elastic-apm` must be installed to use this plugin'),
|
|
||||||
ELASTIC_LIBRARY_IMPORT_ERROR)
|
|
||||||
|
|
||||||
self.tasks_data = OrderedDict()
|
self.tasks_data = OrderedDict()
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ options:
|
|||||||
type: string
|
type: string
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from ansible.module_utils.six.moves.urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
from ansible.module_utils.common.text.converters import to_bytes
|
from ansible.module_utils.common.text.converters import to_bytes
|
||||||
from ansible.module_utils.urls import open_url
|
from ansible.module_utils.urls import open_url
|
||||||
from ansible.plugins.callback import CallbackBase
|
from ansible.plugins.callback import CallbackBase
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ options:
|
|||||||
otel_exporter_otlp_traces_protocol:
|
otel_exporter_otlp_traces_protocol:
|
||||||
type: str
|
type: str
|
||||||
description:
|
description:
|
||||||
- E(OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) represents the the transport protocol for spans.
|
- E(OTEL_EXPORTER_OTLP_TRACES_PROTOCOL) represents the transport protocol for spans.
|
||||||
- See
|
- See
|
||||||
U(https://opentelemetry-python.readthedocs.io/en/latest/sdk/environment_variables.html#envvar-OTEL_EXPORTER_OTLP_TRACES_PROTOCOL).
|
U(https://opentelemetry-python.readthedocs.io/en/latest/sdk/environment_variables.html#envvar-OTEL_EXPORTER_OTLP_TRACES_PROTOCOL).
|
||||||
default: grpc
|
default: grpc
|
||||||
@@ -137,14 +137,12 @@ import json
|
|||||||
import os
|
import os
|
||||||
import socket
|
import socket
|
||||||
import uuid
|
import uuid
|
||||||
from time import time_ns
|
|
||||||
|
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from os.path import basename
|
from os.path import basename
|
||||||
|
from time import time_ns
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.module_utils.six import raise_from
|
|
||||||
from ansible.module_utils.six.moves.urllib.parse import urlparse
|
|
||||||
from ansible.plugins.callback import CallbackBase
|
from ansible.plugins.callback import CallbackBase
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -499,9 +497,9 @@ class CallbackModule(CallbackBase):
|
|||||||
self.otel_exporter_otlp_traces_protocol = None
|
self.otel_exporter_otlp_traces_protocol = None
|
||||||
|
|
||||||
if OTEL_LIBRARY_IMPORT_ERROR:
|
if OTEL_LIBRARY_IMPORT_ERROR:
|
||||||
raise_from(
|
raise AnsibleError(
|
||||||
AnsibleError('The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'),
|
'The `opentelemetry-api`, `opentelemetry-exporter-otlp` or `opentelemetry-sdk` must be installed to use this plugin'
|
||||||
OTEL_LIBRARY_IMPORT_ERROR)
|
) from OTEL_LIBRARY_IMPORT_ERROR
|
||||||
|
|
||||||
self.tasks_data = OrderedDict()
|
self.tasks_data = OrderedDict()
|
||||||
|
|
||||||
|
|||||||
@@ -75,11 +75,11 @@ import os
|
|||||||
import os.path
|
import os.path
|
||||||
import subprocess
|
import subprocess
|
||||||
import traceback
|
import traceback
|
||||||
|
from shlex import quote as shlex_quote
|
||||||
|
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.module_utils.basic import is_executable
|
from ansible.module_utils.basic import is_executable
|
||||||
from ansible.module_utils.common.process import get_bin_path
|
from ansible.module_utils.common.process import get_bin_path
|
||||||
from ansible.module_utils.six.moves import shlex_quote
|
|
||||||
from ansible.module_utils.common.text.converters import to_bytes
|
from ansible.module_utils.common.text.converters import to_bytes
|
||||||
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
|
|||||||
@@ -38,9 +38,9 @@ import os
|
|||||||
import os.path
|
import os.path
|
||||||
import subprocess
|
import subprocess
|
||||||
import traceback
|
import traceback
|
||||||
|
from shlex import quote as shlex_quote
|
||||||
|
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.module_utils.six.moves import shlex_quote
|
|
||||||
from ansible.module_utils.common.process import get_bin_path
|
from ansible.module_utils.common.process import get_bin_path
|
||||||
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
|
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
|
||||||
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
||||||
|
|||||||
@@ -31,9 +31,9 @@ import os
|
|||||||
import os.path
|
import os.path
|
||||||
import subprocess
|
import subprocess
|
||||||
import traceback
|
import traceback
|
||||||
|
from shlex import quote as shlex_quote
|
||||||
|
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.module_utils.six.moves import shlex_quote
|
|
||||||
from ansible.module_utils.common.process import get_bin_path
|
from ansible.module_utils.common.process import get_bin_path
|
||||||
from ansible.module_utils.common.text.converters import to_bytes
|
from ansible.module_utils.common.text.converters import to_bytes
|
||||||
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
from ansible.plugins.connection import ConnectionBase, BUFSIZE
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class ModuleDocFragment(object):
|
|||||||
options:
|
options:
|
||||||
venv:
|
venv:
|
||||||
description:
|
description:
|
||||||
- Use the the Python interpreter from this virtual environment.
|
- Use the Python interpreter from this virtual environment.
|
||||||
- Pass the path to the root of the virtualenv, not the C(bin/) directory nor the C(python) executable.
|
- Pass the path to the root of the virtualenv, not the C(bin/) directory nor the C(python) executable.
|
||||||
type: path
|
type: path
|
||||||
settings:
|
settings:
|
||||||
|
|||||||
@@ -45,10 +45,10 @@ _value:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
from io import StringIO
|
||||||
|
from configparser import ConfigParser
|
||||||
|
|
||||||
from ansible.errors import AnsibleFilterError
|
from ansible.errors import AnsibleFilterError
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
from ansible.module_utils.six.moves import StringIO
|
|
||||||
from ansible.module_utils.six.moves.configparser import ConfigParser
|
|
||||||
|
|
||||||
|
|
||||||
class IniParser(ConfigParser):
|
class IniParser(ConfigParser):
|
||||||
@@ -73,7 +73,7 @@ class IniParser(ConfigParser):
|
|||||||
def from_ini(obj):
|
def from_ini(obj):
|
||||||
''' Read the given string as INI file and return a dict '''
|
''' Read the given string as INI file and return a dict '''
|
||||||
|
|
||||||
if not isinstance(obj, string_types):
|
if not isinstance(obj, str):
|
||||||
raise AnsibleFilterError(f'from_ini requires a str, got {type(obj)}')
|
raise AnsibleFilterError(f'from_ini requires a str, got {type(obj)}')
|
||||||
|
|
||||||
parser = IniParser()
|
parser = IniParser()
|
||||||
|
|||||||
@@ -196,7 +196,6 @@ _value:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from ansible.errors import AnsibleFilterError
|
from ansible.errors import AnsibleFilterError
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
from ansible.utils.vars import merge_hash
|
from ansible.utils.vars import merge_hash
|
||||||
|
|
||||||
@@ -257,7 +256,7 @@ def lists_mergeby(*terms, **kwargs):
|
|||||||
|
|
||||||
index = terms[-1]
|
index = terms[-1]
|
||||||
|
|
||||||
if not isinstance(index, string_types):
|
if not isinstance(index, str):
|
||||||
msg = ("First argument after the lists for community.general.lists_mergeby must be string. "
|
msg = ("First argument after the lists for community.general.lists_mergeby must be string. "
|
||||||
"%s is %s")
|
"%s is %s")
|
||||||
raise AnsibleFilterError(msg % (index, type(index)))
|
raise AnsibleFilterError(msg % (index, type(index)))
|
||||||
|
|||||||
@@ -45,14 +45,13 @@ import re
|
|||||||
from random import Random, SystemRandom
|
from random import Random, SystemRandom
|
||||||
|
|
||||||
from ansible.errors import AnsibleFilterError
|
from ansible.errors import AnsibleFilterError
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
|
|
||||||
|
|
||||||
def random_mac(value, seed=None):
|
def random_mac(value, seed=None):
|
||||||
''' takes string prefix, and return it completed with random bytes
|
''' takes string prefix, and return it completed with random bytes
|
||||||
to get a complete 6 bytes MAC address '''
|
to get a complete 6 bytes MAC address '''
|
||||||
|
|
||||||
if not isinstance(value, string_types):
|
if not isinstance(value, str):
|
||||||
raise AnsibleFilterError('Invalid value type (%s) for random_mac (%s)' %
|
raise AnsibleFilterError('Invalid value type (%s) for random_mac (%s)' %
|
||||||
(type(value), value))
|
(type(value), value))
|
||||||
|
|
||||||
|
|||||||
@@ -49,11 +49,10 @@ _value:
|
|||||||
type: string
|
type: string
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
from ansible.errors import AnsibleFilterError
|
|
||||||
from collections.abc import Mapping
|
from collections.abc import Mapping
|
||||||
from ansible.module_utils.six.moves import StringIO
|
from configparser import ConfigParser
|
||||||
from ansible.module_utils.six.moves.configparser import ConfigParser
|
from io import StringIO
|
||||||
|
from ansible.errors import AnsibleFilterError
|
||||||
|
|
||||||
|
|
||||||
class IniParser(ConfigParser):
|
class IniParser(ConfigParser):
|
||||||
|
|||||||
@@ -120,7 +120,6 @@ except ImportError:
|
|||||||
|
|
||||||
from ansible.errors import AnsibleFilterError
|
from ansible.errors import AnsibleFilterError
|
||||||
from ansible.module_utils.common.text.converters import to_text
|
from ansible.module_utils.common.text.converters import to_text
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
|
|
||||||
|
|
||||||
class TypeValidationError(AnsibleFilterError):
|
class TypeValidationError(AnsibleFilterError):
|
||||||
@@ -131,7 +130,7 @@ class TypeValidationError(AnsibleFilterError):
|
|||||||
expected: Description of expected type
|
expected: Description of expected type
|
||||||
"""
|
"""
|
||||||
def __init__(self, obj, expected):
|
def __init__(self, obj, expected):
|
||||||
type_name = "string" if isinstance(obj, string_types) else type(obj).__name__
|
type_name = "string" if isinstance(obj, str) else type(obj).__name__
|
||||||
super().__init__(f"Expected {expected}, got a {type_name}")
|
super().__init__(f"Expected {expected}, got a {type_name}")
|
||||||
|
|
||||||
|
|
||||||
@@ -160,7 +159,7 @@ def _validate_list_param(param, param_name, ensure_strings=True):
|
|||||||
|
|
||||||
if ensure_strings:
|
if ensure_strings:
|
||||||
for item in param:
|
for item in param:
|
||||||
if not isinstance(item, string_types):
|
if not isinstance(item, str):
|
||||||
# Maintain original error message format
|
# Maintain original error message format
|
||||||
if param_name == "column_order":
|
if param_name == "column_order":
|
||||||
error_msg = "a string for column name"
|
error_msg = "a string for column name"
|
||||||
@@ -186,7 +185,7 @@ def _match_key(item_dict, lookup_key):
|
|||||||
return lookup_key
|
return lookup_key
|
||||||
|
|
||||||
# Try boolean conversion for 'true'/'false' strings
|
# Try boolean conversion for 'true'/'false' strings
|
||||||
if isinstance(lookup_key, string_types):
|
if isinstance(lookup_key, str):
|
||||||
if lookup_key.lower() == 'true' and True in item_dict:
|
if lookup_key.lower() == 'true' and True in item_dict:
|
||||||
return True
|
return True
|
||||||
if lookup_key.lower() == 'false' and False in item_dict:
|
if lookup_key.lower() == 'false' and False in item_dict:
|
||||||
@@ -338,11 +337,11 @@ def to_prettytable(data, *args, **kwargs):
|
|||||||
# Validate column_alignments keys and values
|
# Validate column_alignments keys and values
|
||||||
for key, value in column_alignments.items():
|
for key, value in column_alignments.items():
|
||||||
# Check that keys are strings
|
# Check that keys are strings
|
||||||
if not isinstance(key, string_types):
|
if not isinstance(key, str):
|
||||||
raise TypeValidationError(key, "a string for column_alignments key")
|
raise TypeValidationError(key, "a string for column_alignments key")
|
||||||
|
|
||||||
# Check that values are strings
|
# Check that values are strings
|
||||||
if not isinstance(value, string_types):
|
if not isinstance(value, str):
|
||||||
raise TypeValidationError(value, "a string for column_alignments value")
|
raise TypeValidationError(value, "a string for column_alignments value")
|
||||||
|
|
||||||
# Check that values are valid alignments
|
# Check that values are valid alignments
|
||||||
@@ -394,7 +393,7 @@ def to_prettytable(data, *args, **kwargs):
|
|||||||
row.append(item.get(matched_key, ""))
|
row.append(item.get(matched_key, ""))
|
||||||
else:
|
else:
|
||||||
# Try case-insensitive lookup as last resort
|
# Try case-insensitive lookup as last resort
|
||||||
lower_col = col.lower() if isinstance(col, string_types) else str(col).lower()
|
lower_col = col.lower() if isinstance(col, str) else str(col).lower()
|
||||||
if lower_col in reverse_key_map:
|
if lower_col in reverse_key_map:
|
||||||
row.append(item.get(reverse_key_map[lower_col], ""))
|
row.append(item.get(reverse_key_map[lower_col], ""))
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ _value:
|
|||||||
from unicodedata import normalize
|
from unicodedata import normalize
|
||||||
|
|
||||||
from ansible.errors import AnsibleFilterError
|
from ansible.errors import AnsibleFilterError
|
||||||
from ansible.module_utils.six import text_type
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from ansible.errors import AnsibleTypeError
|
from ansible.errors import AnsibleTypeError
|
||||||
@@ -69,7 +68,7 @@ def unicode_normalize(data, form='NFC'):
|
|||||||
A normalized unicode string of the specified 'form'.
|
A normalized unicode string of the specified 'form'.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not isinstance(data, text_type):
|
if not isinstance(data, str):
|
||||||
raise AnsibleTypeError("%s is not a valid input type" % type(data))
|
raise AnsibleTypeError("%s is not a valid input type" % type(data))
|
||||||
|
|
||||||
if form not in ('NFC', 'NFD', 'NFKC', 'NFKD'):
|
if form not in ('NFC', 'NFD', 'NFKC', 'NFKD'):
|
||||||
|
|||||||
@@ -131,7 +131,6 @@ import socket
|
|||||||
|
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, to_safe_group_name
|
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, to_safe_group_name
|
||||||
from ansible.module_utils.six import text_type
|
|
||||||
|
|
||||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||||
|
|
||||||
@@ -260,7 +259,7 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
|
|||||||
self.cobbler = xmlrpc_client.Server(self.cobbler_url, allow_none=True)
|
self.cobbler = xmlrpc_client.Server(self.cobbler_url, allow_none=True)
|
||||||
self.token = None
|
self.token = None
|
||||||
if self.get_option('user') is not None:
|
if self.get_option('user') is not None:
|
||||||
self.token = self.cobbler.login(text_type(self.get_option('user')), text_type(self.get_option('password')))
|
self.token = self.cobbler.login(str(self.get_option('user')), str(self.get_option('password')))
|
||||||
|
|
||||||
self.cache_key = self.get_cache_key(path)
|
self.cache_key = self.get_cache_key(path)
|
||||||
self.use_cache = cache and self.get_option('cache')
|
self.use_cache = cache and self.get_option('cache')
|
||||||
|
|||||||
@@ -96,11 +96,11 @@ compose:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
from urllib.error import HTTPError
|
||||||
|
|
||||||
from ansible.errors import AnsibleParserError
|
from ansible.errors import AnsibleParserError
|
||||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||||
from ansible.module_utils.urls import open_url
|
from ansible.module_utils.urls import open_url
|
||||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
|
||||||
|
|
||||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||||
|
|
||||||
|
|||||||
@@ -171,12 +171,12 @@ import json
|
|||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
from ansible.plugins.inventory import BaseInventoryPlugin
|
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||||
from ansible.module_utils.common.text.converters import to_native, to_text
|
from ansible.module_utils.common.text.converters import to_native, to_text
|
||||||
from ansible.module_utils.common.dict_transformations import dict_merge
|
from ansible.module_utils.common.dict_transformations import dict_merge
|
||||||
from ansible.module_utils.six import raise_from
|
|
||||||
from ansible.errors import AnsibleError, AnsibleParserError
|
from ansible.errors import AnsibleError, AnsibleParserError
|
||||||
from ansible.module_utils.six.moves.urllib.parse import urlencode
|
|
||||||
from ansible_collections.community.general.plugins.module_utils.lxd import LXDClient, LXDClientException
|
from ansible_collections.community.general.plugins.module_utils.lxd import LXDClient, LXDClientException
|
||||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||||
|
|
||||||
@@ -1094,9 +1094,7 @@ class InventoryModule(BaseInventoryPlugin):
|
|||||||
Returns:
|
Returns:
|
||||||
None"""
|
None"""
|
||||||
if IPADDRESS_IMPORT_ERROR:
|
if IPADDRESS_IMPORT_ERROR:
|
||||||
raise_from(
|
raise AnsibleError('another_library must be installed to use this plugin') from IPADDRESS_IMPORT_ERROR
|
||||||
AnsibleError('another_library must be installed to use this plugin'),
|
|
||||||
IPADDRESS_IMPORT_ERROR)
|
|
||||||
|
|
||||||
super(InventoryModule, self).parse(inventory, loader, path, cache=False)
|
super(InventoryModule, self).parse(inventory, loader, path, cache=False)
|
||||||
# Read the inventory YAML file
|
# Read the inventory YAML file
|
||||||
|
|||||||
@@ -62,13 +62,13 @@ groups:
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
from sys import version as python_version
|
from sys import version as python_version
|
||||||
|
from urllib.parse import urljoin
|
||||||
|
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.module_utils.urls import open_url
|
from ansible.module_utils.urls import open_url
|
||||||
from ansible.plugins.inventory import BaseInventoryPlugin
|
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||||
from ansible.module_utils.common.text.converters import to_text
|
from ansible.module_utils.common.text.converters import to_text
|
||||||
from ansible.module_utils.ansible_release import __version__ as ansible_version
|
from ansible.module_utils.ansible_release import __version__ as ansible_version
|
||||||
from ansible.module_utils.six.moves.urllib.parse import urljoin
|
|
||||||
|
|
||||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||||
|
|
||||||
|
|||||||
@@ -224,13 +224,12 @@ want_proxmox_nodes_ansible_host: true
|
|||||||
|
|
||||||
import itertools
|
import itertools
|
||||||
import re
|
import re
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
from ansible.module_utils.common._collections_compat import MutableMapping
|
from ansible.module_utils.common._collections_compat import MutableMapping
|
||||||
|
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
from ansible.module_utils.six.moves.urllib.parse import urlencode
|
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
|
|
||||||
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
|
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
|
||||||
@@ -498,7 +497,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
|||||||
out_val[k] = v
|
out_val[k] = v
|
||||||
value = out_val
|
value = out_val
|
||||||
|
|
||||||
if config not in plaintext_configs and isinstance(value, string_types) \
|
if config not in plaintext_configs and isinstance(value, str) \
|
||||||
and all("=" in v for v in value.split(",")):
|
and all("=" in v for v in value.split(",")):
|
||||||
# split off strings with commas to a dict
|
# split off strings with commas to a dict
|
||||||
# skip over any keys that cannot be processed
|
# skip over any keys that cannot be processed
|
||||||
|
|||||||
@@ -128,9 +128,8 @@ from ansible_collections.community.general.plugins.module_utils.scaleway import
|
|||||||
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
from ansible_collections.community.general.plugins.plugin_utils.unsafe import make_unsafe
|
||||||
from ansible.module_utils.urls import open_url
|
from ansible.module_utils.urls import open_url
|
||||||
from ansible.module_utils.common.text.converters import to_text
|
from ansible.module_utils.common.text.converters import to_text
|
||||||
from ansible.module_utils.six import raise_from
|
|
||||||
|
|
||||||
import ansible.module_utils.six.moves.urllib.parse as urllib_parse
|
import urllib.parse as urllib_parse
|
||||||
|
|
||||||
|
|
||||||
def _fetch_information(token, url):
|
def _fetch_information(token, url):
|
||||||
@@ -334,7 +333,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
|||||||
|
|
||||||
def parse(self, inventory, loader, path, cache=True):
|
def parse(self, inventory, loader, path, cache=True):
|
||||||
if YAML_IMPORT_ERROR:
|
if YAML_IMPORT_ERROR:
|
||||||
raise_from(AnsibleError('PyYAML is probably missing'), YAML_IMPORT_ERROR)
|
raise AnsibleError('PyYAML is probably missing') from YAML_IMPORT_ERROR
|
||||||
super(InventoryModule, self).parse(inventory, loader, path)
|
super(InventoryModule, self).parse(inventory, loader, path)
|
||||||
self._read_config_data(path=path)
|
self._read_config_data(path=path)
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,8 @@ _raw:
|
|||||||
type: dict
|
type: dict
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from ansible.module_utils.six.moves.urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
from ansible.errors import AnsibleError, AnsibleAssertionError
|
from ansible.errors import AnsibleError, AnsibleAssertionError
|
||||||
from ansible.plugins.lookup import LookupBase
|
from ansible.plugins.lookup import LookupBase
|
||||||
from ansible.module_utils.common.text.converters import to_text
|
from ansible.module_utils.common.text.converters import to_text
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ _list:
|
|||||||
|
|
||||||
from ansible.errors import AnsibleLookupError
|
from ansible.errors import AnsibleLookupError
|
||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
from ansible.plugins.lookup import LookupBase
|
from ansible.plugins.lookup import LookupBase
|
||||||
from ansible.release import __version__ as ansible_version
|
from ansible.release import __version__ as ansible_version
|
||||||
from ansible.template import Templar
|
from ansible.template import Templar
|
||||||
@@ -225,7 +224,7 @@ class LookupModule(LookupBase):
|
|||||||
raise AnsibleLookupError(
|
raise AnsibleLookupError(
|
||||||
f'The variable {k!r} appears more than once')
|
f'The variable {k!r} appears more than once')
|
||||||
vars_so_far.add(k)
|
vars_so_far.add(k)
|
||||||
if isinstance(v, string_types):
|
if isinstance(v, str):
|
||||||
data.append((k, v, None))
|
data.append((k, v, None))
|
||||||
elif isinstance(v, (Sequence, Mapping)):
|
elif isinstance(v, (Sequence, Mapping)):
|
||||||
data.append((k, None, v))
|
data.append((k, None, v))
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ _raw:
|
|||||||
type: list
|
type: list
|
||||||
"""
|
"""
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
from ansible.plugins.lookup import LookupBase
|
from ansible.plugins.lookup import LookupBase
|
||||||
from ansible.utils.listify import listify_lookup_plugin_terms
|
from ansible.utils.listify import listify_lookup_plugin_terms
|
||||||
|
|
||||||
@@ -65,7 +64,7 @@ class LookupModule(LookupBase):
|
|||||||
# ignore undefined items
|
# ignore undefined items
|
||||||
break
|
break
|
||||||
|
|
||||||
if isinstance(term, string_types):
|
if isinstance(term, str):
|
||||||
# convert a variable to a list
|
# convert a variable to a list
|
||||||
try:
|
try:
|
||||||
term2 = listify_lookup_plugin_terms(term, templar=self._templar)
|
term2 = listify_lookup_plugin_terms(term, templar=self._templar)
|
||||||
|
|||||||
@@ -75,8 +75,9 @@ except ImportError:
|
|||||||
|
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
|
from urllib.error import HTTPError
|
||||||
|
|
||||||
from ansible.module_utils.urls import open_url
|
from ansible.module_utils.urls import open_url
|
||||||
from ansible.module_utils.six.moves.urllib.error import HTTPError
|
|
||||||
from ansible.errors import AnsibleError, AnsibleOptionsError
|
from ansible.errors import AnsibleError, AnsibleOptionsError
|
||||||
from ansible.plugins.lookup import LookupBase
|
from ansible.plugins.lookup import LookupBase
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ short_description: fetch data from LMDB
|
|||||||
description:
|
description:
|
||||||
- This lookup returns a list of results from an LMDB DB corresponding to a list of items given to it.
|
- This lookup returns a list of results from an LMDB DB corresponding to a list of items given to it.
|
||||||
requirements:
|
requirements:
|
||||||
- lmdb (Python library U(https://lmdb.readthedocs.io/en/release/))
|
- lmdb (Python library U(https://lmdb.readthedocs.io/en/latest/))
|
||||||
options:
|
options:
|
||||||
_terms:
|
_terms:
|
||||||
description: List of keys to query.
|
description: List of keys to query.
|
||||||
@@ -46,8 +46,8 @@ EXAMPLES = r"""
|
|||||||
ansible.builtin.assert:
|
ansible.builtin.assert:
|
||||||
that:
|
that:
|
||||||
- item == 'Belgium'
|
- item == 'Belgium'
|
||||||
vars:
|
vars:
|
||||||
- lmdb_kv_db: jp.mdb
|
- lmdb_kv_db: jp.mdb
|
||||||
with_community.general.lmdb_kv:
|
with_community.general.lmdb_kv:
|
||||||
- be
|
- be
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -63,16 +63,18 @@ RETURN = '''
|
|||||||
the same environment variable(s), the last one returned by the Manifold API will take precedence.
|
the same environment variable(s), the last one returned by the Manifold API will take precedence.
|
||||||
type: dict
|
type: dict
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
from traceback import format_exception
|
||||||
|
from urllib.error import HTTPError, URLError
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.plugins.lookup import LookupBase
|
from ansible.plugins.lookup import LookupBase
|
||||||
from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
|
from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
|
||||||
from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
|
|
||||||
from ansible.module_utils.six.moves.urllib.parse import urlencode
|
|
||||||
from ansible.module_utils import six
|
from ansible.module_utils import six
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
from traceback import format_exception
|
|
||||||
import json
|
|
||||||
import sys
|
|
||||||
|
|
||||||
display = Display()
|
display = Display()
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ from ansible.plugins.lookup import LookupBase
|
|||||||
from ansible.errors import AnsibleLookupError, AnsibleOptionsError
|
from ansible.errors import AnsibleLookupError, AnsibleOptionsError
|
||||||
from ansible.module_utils.common.process import get_bin_path
|
from ansible.module_utils.common.process import get_bin_path
|
||||||
from ansible.module_utils.common.text.converters import to_bytes, to_text
|
from ansible.module_utils.common.text.converters import to_bytes, to_text
|
||||||
from ansible.module_utils.six import with_metaclass
|
|
||||||
|
|
||||||
from ansible_collections.community.general.plugins.module_utils.onepassword import OnePasswordConfig
|
from ansible_collections.community.general.plugins.module_utils.onepassword import OnePasswordConfig
|
||||||
|
|
||||||
@@ -99,7 +98,7 @@ def _lower_if_possible(value):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
class OnePassCLIBase(with_metaclass(abc.ABCMeta, object)):
|
class OnePassCLIBase(object, metaclass=abc.ABCMeta):
|
||||||
bin = "op"
|
bin = "op"
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
@@ -611,7 +610,8 @@ class OnePass(object):
|
|||||||
|
|
||||||
def _get_cli_class(self, cli_class=None):
|
def _get_cli_class(self, cli_class=None):
|
||||||
if cli_class is not None:
|
if cli_class is not None:
|
||||||
return cli_class(self.subdomain, self.domain, self.username, self.secret_key, self.master_password, self.service_account_token)
|
return cli_class(self.subdomain, self.domain, self.username, self.secret_key, self.master_password, self.service_account_token,
|
||||||
|
self.account_id, self.connect_host, self.connect_token)
|
||||||
|
|
||||||
version = OnePassCLIBase.get_current_version()
|
version = OnePassCLIBase.get_current_version()
|
||||||
for cls in OnePassCLIBase.__subclasses__():
|
for cls in OnePassCLIBase.__subclasses__():
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ short_description: Generates random string
|
|||||||
version_added: '3.2.0'
|
version_added: '3.2.0'
|
||||||
description:
|
description:
|
||||||
- Generates random string based upon the given constraints.
|
- Generates random string based upon the given constraints.
|
||||||
- Uses L(random.SystemRandom,https://docs.python.org/3/library/random.html#random.SystemRandom), so should be strong enough
|
- Uses L(secrets.SystemRandom,https://docs.python.org/3/library/secrets.html#secrets.SystemRandom), so should be strong enough
|
||||||
for cryptographic purposes.
|
for cryptographic purposes.
|
||||||
options:
|
options:
|
||||||
length:
|
length:
|
||||||
@@ -149,6 +149,7 @@ _raw:
|
|||||||
|
|
||||||
import base64
|
import base64
|
||||||
import random
|
import random
|
||||||
|
import secrets
|
||||||
import string
|
import string
|
||||||
|
|
||||||
from ansible.errors import AnsibleLookupError
|
from ansible.errors import AnsibleLookupError
|
||||||
@@ -178,7 +179,7 @@ class LookupModule(LookupBase):
|
|||||||
lower_chars = string.ascii_lowercase
|
lower_chars = string.ascii_lowercase
|
||||||
upper_chars = string.ascii_uppercase
|
upper_chars = string.ascii_uppercase
|
||||||
special_chars = string.punctuation
|
special_chars = string.punctuation
|
||||||
random_generator = random.SystemRandom()
|
random_generator = secrets.SystemRandom()
|
||||||
|
|
||||||
self.set_options(var_options=variables, direct=kwargs)
|
self.set_options(var_options=variables, direct=kwargs)
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ EXAMPLES = r"""
|
|||||||
from ansible.plugins.lookup import LookupBase
|
from ansible.plugins.lookup import LookupBase
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
from ansible.errors import AnsibleError
|
from ansible.errors import AnsibleError
|
||||||
from ansible.module_utils.six import raise_from
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from pam.revbits_ansible.server import SecretServer
|
from pam.revbits_ansible.server import SecretServer
|
||||||
@@ -87,10 +86,7 @@ class LookupModule(LookupBase):
|
|||||||
|
|
||||||
def run(self, terms, variables, **kwargs):
|
def run(self, terms, variables, **kwargs):
|
||||||
if ANOTHER_LIBRARY_IMPORT_ERROR:
|
if ANOTHER_LIBRARY_IMPORT_ERROR:
|
||||||
raise_from(
|
raise AnsibleError('revbits_ansible must be installed to use this plugin') from ANOTHER_LIBRARY_IMPORT_ERROR
|
||||||
AnsibleError('revbits_ansible must be installed to use this plugin'),
|
|
||||||
ANOTHER_LIBRARY_IMPORT_ERROR
|
|
||||||
)
|
|
||||||
self.set_options(var_options=variables, direct=kwargs)
|
self.set_options(var_options=variables, direct=kwargs)
|
||||||
secret_server = LookupModule.Client(
|
secret_server = LookupModule.Client(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -258,7 +258,6 @@ EXAMPLES = r"""
|
|||||||
import abc
|
import abc
|
||||||
import os
|
import os
|
||||||
from ansible.errors import AnsibleError, AnsibleOptionsError
|
from ansible.errors import AnsibleError, AnsibleOptionsError
|
||||||
from ansible.module_utils import six
|
|
||||||
from ansible.plugins.lookup import LookupBase
|
from ansible.plugins.lookup import LookupBase
|
||||||
from ansible.utils.display import Display
|
from ansible.utils.display import Display
|
||||||
|
|
||||||
@@ -289,8 +288,7 @@ except ImportError:
|
|||||||
display = Display()
|
display = Display()
|
||||||
|
|
||||||
|
|
||||||
@six.add_metaclass(abc.ABCMeta)
|
class TSSClient(object, metaclass=abc.ABCMeta):
|
||||||
class TSSClient(object):
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._client = None
|
self._client = None
|
||||||
|
|
||||||
|
|||||||
0
plugins/module_utils/__init__.py
Normal file
0
plugins/module_utils/__init__.py
Normal file
@@ -1626,7 +1626,7 @@ class KeycloakAPI(object):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
for p in name_chain[1:]:
|
for p in name_chain[1:]:
|
||||||
for sg in self.get_subgroups(tmp):
|
for sg in self.get_subgroups(tmp, realm):
|
||||||
pv, is_id = self._get_normed_group_parent(p)
|
pv, is_id = self._get_normed_group_parent(p)
|
||||||
|
|
||||||
if is_id:
|
if is_id:
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ notes:
|
|||||||
seealso:
|
seealso:
|
||||||
- name: C(ansible-galaxy) command manual page
|
- name: C(ansible-galaxy) command manual page
|
||||||
description: Manual page for the command.
|
description: Manual page for the command.
|
||||||
link: https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html
|
link: https://docs.ansible.com/projects/ansible/latest/cli/ansible-galaxy.html
|
||||||
|
|
||||||
requirements:
|
requirements:
|
||||||
- ansible-core 2.11 or newer
|
- ansible-core 2.11 or newer
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ module: consul_kv
|
|||||||
short_description: Manipulate entries in the key/value store of a Consul cluster
|
short_description: Manipulate entries in the key/value store of a Consul cluster
|
||||||
description:
|
description:
|
||||||
- Allows the retrieval, addition, modification and deletion of key/value entries in a Consul cluster using the agent. The
|
- Allows the retrieval, addition, modification and deletion of key/value entries in a Consul cluster using the agent. The
|
||||||
entire contents of the record, including the indices, flags and session are returned as C(value).
|
entire contents of the record, including the indices, flags and session are returned as RV(ignore:value).
|
||||||
- If the O(key) represents a prefix then note that when a value is removed, the existing value if any is returned as part
|
- If the O(key) represents a prefix then note that when a value is removed, the existing value if any is returned as part
|
||||||
of the results.
|
of the results.
|
||||||
- See http://www.consul.io/docs/agent/http.html#kv for more details.
|
- See http://www.consul.io/docs/agent/http.html#kv for more details.
|
||||||
@@ -36,11 +36,11 @@ options:
|
|||||||
state:
|
state:
|
||||||
description:
|
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
|
- 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.
|
is set to the value supplied and RV(ignore: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
|
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
|
V(absent) is used to remove the key/value pair, again RV(ignore: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
|
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)
|
states V(acquire) or V(release) respectively. A valid session must be supplied to make the attempt RV(ignore:changed) is V(true)
|
||||||
if the attempt is successful, V(false) otherwise.
|
if the attempt is successful, V(false) otherwise.
|
||||||
type: str
|
type: str
|
||||||
choices: [absent, acquire, present, release]
|
choices: [absent, acquire, present, release]
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ EXAMPLES = r"""
|
|||||||
webhook_token: "XXXYYY"
|
webhook_token: "XXXYYY"
|
||||||
content: "This is a message from ansible"
|
content: "This is a message from ansible"
|
||||||
username: Ansible
|
username: Ansible
|
||||||
avatar_url: "https://docs.ansible.com/ansible/latest/_static/images/logo_invert.png"
|
avatar_url: "https://docs.ansible.com/favicon/favicon-32x32.png"
|
||||||
|
|
||||||
- name: Send a embedded message to the Discord channel
|
- name: Send a embedded message to the Discord channel
|
||||||
community.general.discord:
|
community.general.discord:
|
||||||
@@ -92,7 +92,7 @@ EXAMPLES = r"""
|
|||||||
footer:
|
footer:
|
||||||
text: "Author: Ansible"
|
text: "Author: Ansible"
|
||||||
image:
|
image:
|
||||||
url: "https://docs.ansible.com/ansible/latest/_static/images/logo_invert.png"
|
url: "https://docs.ansible.com/favicon/favicon-32x32.png"
|
||||||
|
|
||||||
- name: Send two embedded messages
|
- name: Send two embedded messages
|
||||||
community.general.discord:
|
community.general.discord:
|
||||||
@@ -104,12 +104,12 @@ EXAMPLES = r"""
|
|||||||
footer:
|
footer:
|
||||||
text: "Author: Ansible"
|
text: "Author: Ansible"
|
||||||
image:
|
image:
|
||||||
url: "https://docs.ansible.com/ansible/latest/_static/images/logo_invert.png"
|
url: "https://docs.ansible.com/favicon/favicon-32x32.png"
|
||||||
- title: "Second message"
|
- title: "Second message"
|
||||||
description: "This is my first second message"
|
description: "This is my first second message"
|
||||||
footer:
|
footer:
|
||||||
text: "Author: Ansible"
|
text: "Author: Ansible"
|
||||||
icon_url: "https://docs.ansible.com/ansible/latest/_static/images/logo_invert.png"
|
icon_url: "https://docs.ansible.com/favicon/favicon-32x32.png"
|
||||||
fields:
|
fields:
|
||||||
- name: "Field 1"
|
- name: "Field 1"
|
||||||
value: "Value of my first field"
|
value: "Value of my first field"
|
||||||
|
|||||||
@@ -41,14 +41,14 @@ options:
|
|||||||
choices: [bcachefs, btrfs, ext2, ext3, ext4, ext4dev, f2fs, lvm, ocfs2, reiserfs, xfs, vfat, swap, ufs]
|
choices: [bcachefs, btrfs, ext2, ext3, ext4, ext4dev, f2fs, lvm, ocfs2, reiserfs, xfs, vfat, swap, ufs]
|
||||||
description:
|
description:
|
||||||
- Filesystem type to be created. This option is required with O(state=present) (or if O(state) is omitted).
|
- Filesystem type to be created. This option is required with O(state=present) (or if O(state) is omitted).
|
||||||
- Ufs support has been added in community.general 3.4.0.
|
- V(ufs) support has been added in community.general 3.4.0.
|
||||||
- Bcachefs support has been added in community.general 8.6.0.
|
- V(bcachefs) support has been added in community.general 8.6.0.
|
||||||
type: str
|
type: str
|
||||||
aliases: [type]
|
aliases: [type]
|
||||||
dev:
|
dev:
|
||||||
description:
|
description:
|
||||||
- Target path to block device (Linux) or character device (FreeBSD) or regular file (both).
|
- Target path to block device (Linux) or character device (FreeBSD) or regular file (both).
|
||||||
- When setting Linux-specific filesystem types on FreeBSD, this module only works when applying to regular files, aka
|
- When setting Linux-specific filesystem types on FreeBSD, this module only works when applying to regular files, also known as
|
||||||
disk images.
|
disk images.
|
||||||
- Currently V(lvm) (Linux-only) and V(ufs) (FreeBSD-only) do not support a regular file as their target O(dev).
|
- Currently V(lvm) (Linux-only) and V(ufs) (FreeBSD-only) do not support a regular file as their target O(dev).
|
||||||
- Support for character devices on FreeBSD has been added in community.general 3.4.0.
|
- Support for character devices on FreeBSD has been added in community.general 3.4.0.
|
||||||
@@ -63,8 +63,9 @@ options:
|
|||||||
resizefs:
|
resizefs:
|
||||||
description:
|
description:
|
||||||
- If V(true), if the block device and filesystem size differ, grow the filesystem into the space.
|
- 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.
|
Supported when O(fstype) is one of: V(bcachefs), V(btrfs), V(ext2), V(ext3), V(ext4), V(ext4dev), V(f2fs), V(lvm), V(xfs), V(ufs) and V(vfat).
|
||||||
|
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,
|
- XFS only grows 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.
|
so resizing of XFS is not supported on FreeBSD systems.
|
||||||
- VFAT is likely to fail if C(fatresize < 1.04).
|
- VFAT is likely to fail if C(fatresize < 1.04).
|
||||||
@@ -81,7 +82,7 @@ options:
|
|||||||
- The UUID options specified in O(opts) take precedence over this value.
|
- The UUID options specified in O(opts) take precedence over this value.
|
||||||
- See xfs_admin(8) (C(xfs)), tune2fs(8) (C(ext2), C(ext3), C(ext4), C(ext4dev)) for possible values.
|
- 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.
|
- 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).
|
- Supported for O(fstype) being one of V(bcachefs), V(ext2), V(ext3), V(ext4), V(ext4dev), V(lvm), or V(xfs).
|
||||||
- This is B(not idempotent). Specifying this option always results in a change.
|
- This is B(not idempotent). Specifying this option always results in a change.
|
||||||
- Mutually exclusive with O(resizefs).
|
- Mutually exclusive with O(resizefs).
|
||||||
type: str
|
type: str
|
||||||
@@ -93,7 +94,7 @@ requirements:
|
|||||||
- On FreeBSD, either C(util-linux) or C(e2fsprogs) package is required.
|
- On FreeBSD, either C(util-linux) or C(e2fsprogs) package is required.
|
||||||
notes:
|
notes:
|
||||||
- Potential filesystems on O(dev) are checked using C(blkid). In case C(blkid) is unable to detect a filesystem (and in
|
- Potential filesystems on O(dev) are checked using C(blkid). In case C(blkid) is unable to detect a filesystem (and in
|
||||||
case C(fstyp) on FreeBSD is also unable to detect a filesystem), this filesystem is overwritten even if O(force) is V(false).
|
case C(fstyp) on FreeBSD is also unable to detect a filesystem), this filesystem is overwritten even if O(force=false).
|
||||||
- On FreeBSD systems, both C(e2fsprogs) and C(util-linux) packages provide a C(blkid) command that is compatible with this
|
- On FreeBSD systems, both C(e2fsprogs) and C(util-linux) packages provide a C(blkid) command that is compatible with this
|
||||||
module. However, these packages conflict with each other, and only the C(util-linux) package provides the command required
|
module. However, these packages conflict with each other, and only the C(util-linux) package provides the command required
|
||||||
to not fail when O(state=absent).
|
to not fail when O(state=absent).
|
||||||
|
|||||||
@@ -284,6 +284,8 @@ class GithubDeployKey(object):
|
|||||||
body = info.get('body')
|
body = info.get('body')
|
||||||
if body:
|
if body:
|
||||||
err = self.module.from_json(body)['message']
|
err = self.module.from_json(body)['message']
|
||||||
|
else:
|
||||||
|
err = None
|
||||||
|
|
||||||
if status_code == 401:
|
if status_code == 401:
|
||||||
self.module.fail_json(msg="Failed to connect to {0} due to invalid credentials".format(self.github_url), http_status_code=status_code, error=err)
|
self.module.fail_json(msg="Failed to connect to {0} due to invalid credentials".format(self.github_url), http_status_code=status_code, error=err)
|
||||||
|
|||||||
@@ -345,7 +345,10 @@ class GitLabRunner(object):
|
|||||||
'''
|
'''
|
||||||
def create_runner(self, arguments):
|
def create_runner(self, arguments):
|
||||||
if self._module.check_mode:
|
if self._module.check_mode:
|
||||||
return True
|
class MockRunner:
|
||||||
|
def __init__(self):
|
||||||
|
self._attrs = {}
|
||||||
|
return MockRunner()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if arguments.get('token') is not None:
|
if arguments.get('token') is not None:
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ options:
|
|||||||
type: str
|
type: str
|
||||||
required: false
|
required: false
|
||||||
description:
|
description:
|
||||||
- Sets the the assignee when O(operation) is V(create), V(transition), or V(edit).
|
- Sets the assignee when O(operation) is V(create), V(transition), or V(edit).
|
||||||
- Recent versions of JIRA no longer accept a user name as a user identifier. In that case, use O(account_id) instead.
|
- Recent versions of JIRA no longer accept a user name as a user identifier. In that case, use O(account_id) instead.
|
||||||
- Note that JIRA may not allow changing field values on specific transitions or states.
|
- Note that JIRA may not allow changing field values on specific transitions or states.
|
||||||
account_id:
|
account_id:
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ EXAMPLES = r"""
|
|||||||
auth_realm: "master"
|
auth_realm: "master"
|
||||||
auth_username: "admin"
|
auth_username: "admin"
|
||||||
realm: "master"
|
realm: "master"
|
||||||
required_action:
|
required_actions:
|
||||||
- alias: "TERMS_AND_CONDITIONS"
|
- alias: "TERMS_AND_CONDITIONS"
|
||||||
name: "Terms and conditions"
|
name: "Terms and conditions"
|
||||||
providerId: "TERMS_AND_CONDITIONS"
|
providerId: "TERMS_AND_CONDITIONS"
|
||||||
@@ -108,7 +108,7 @@ EXAMPLES = r"""
|
|||||||
auth_realm: "master"
|
auth_realm: "master"
|
||||||
auth_username: "admin"
|
auth_username: "admin"
|
||||||
realm: "master"
|
realm: "master"
|
||||||
required_action:
|
required_actions:
|
||||||
- alias: "TERMS_AND_CONDITIONS"
|
- alias: "TERMS_AND_CONDITIONS"
|
||||||
enabled: false
|
enabled: false
|
||||||
state: "present"
|
state: "present"
|
||||||
@@ -121,7 +121,7 @@ EXAMPLES = r"""
|
|||||||
auth_realm: "master"
|
auth_realm: "master"
|
||||||
auth_username: "admin"
|
auth_username: "admin"
|
||||||
realm: "master"
|
realm: "master"
|
||||||
required_action:
|
required_actions:
|
||||||
- alias: "TERMS_AND_CONDITIONS"
|
- alias: "TERMS_AND_CONDITIONS"
|
||||||
state: "absent"
|
state: "absent"
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ EXAMPLES = r"""
|
|||||||
- name: Retrive info of a UserStorageProvider named myldap
|
- name: Retrive info of a UserStorageProvider named myldap
|
||||||
community.general.keycloak_component_info:
|
community.general.keycloak_component_info:
|
||||||
auth_keycloak_url: http://localhost:8080/auth
|
auth_keycloak_url: http://localhost:8080/auth
|
||||||
auth_sername: admin
|
auth_username: admin
|
||||||
auth_password: password
|
auth_password: password
|
||||||
auth_realm: master
|
auth_realm: master
|
||||||
realm: myrealm
|
realm: myrealm
|
||||||
@@ -67,7 +67,7 @@ EXAMPLES = r"""
|
|||||||
- name: Retrive key info component
|
- name: Retrive key info component
|
||||||
community.general.keycloak_component_info:
|
community.general.keycloak_component_info:
|
||||||
auth_keycloak_url: http://localhost:8080/auth
|
auth_keycloak_url: http://localhost:8080/auth
|
||||||
auth_sername: admin
|
auth_username: admin
|
||||||
auth_password: password
|
auth_password: password
|
||||||
auth_realm: master
|
auth_realm: master
|
||||||
realm: myrealm
|
realm: myrealm
|
||||||
@@ -77,7 +77,7 @@ EXAMPLES = r"""
|
|||||||
- name: Retrive all component from realm master
|
- name: Retrive all component from realm master
|
||||||
community.general.keycloak_component_info:
|
community.general.keycloak_component_info:
|
||||||
auth_keycloak_url: http://localhost:8080/auth
|
auth_keycloak_url: http://localhost:8080/auth
|
||||||
auth_sername: admin
|
auth_username: admin
|
||||||
auth_password: password
|
auth_password: password
|
||||||
auth_realm: master
|
auth_realm: master
|
||||||
realm: myrealm
|
realm: myrealm
|
||||||
@@ -85,7 +85,7 @@ EXAMPLES = r"""
|
|||||||
- name: Retrive all sub components of parent component filter by type
|
- name: Retrive all sub components of parent component filter by type
|
||||||
community.general.keycloak_component_info:
|
community.general.keycloak_component_info:
|
||||||
auth_keycloak_url: http://localhost:8080/auth
|
auth_keycloak_url: http://localhost:8080/auth
|
||||||
auth_sername: admin
|
auth_username: admin
|
||||||
auth_password: password
|
auth_password: password
|
||||||
auth_realm: master
|
auth_realm: master
|
||||||
realm: myrealm
|
realm: myrealm
|
||||||
|
|||||||
@@ -364,7 +364,7 @@ def main():
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
if state == 'present':
|
if state == 'present':
|
||||||
compare_exclude = []
|
compare_exclude = ['clientId']
|
||||||
if 'composites' in desired_role and isinstance(desired_role['composites'], list) and len(desired_role['composites']) > 0:
|
if 'composites' in desired_role and isinstance(desired_role['composites'], list) and len(desired_role['composites']) > 0:
|
||||||
composites = kc.get_role_composites(rolerep=before_role, clientid=clientid, realm=realm)
|
composites = kc.get_role_composites(rolerep=before_role, clientid=clientid, realm=realm)
|
||||||
before_role['composites'] = []
|
before_role['composites'] = []
|
||||||
|
|||||||
@@ -357,7 +357,7 @@ def main():
|
|||||||
argument_spec['auth_username']['aliases'] = []
|
argument_spec['auth_username']['aliases'] = []
|
||||||
credential_spec = dict(
|
credential_spec = dict(
|
||||||
type=dict(type='str', required=True),
|
type=dict(type='str', required=True),
|
||||||
value=dict(type='str', required=True),
|
value=dict(type='str', required=True, no_log=True),
|
||||||
temporary=dict(type='bool', default=False)
|
temporary=dict(type='bool', default=False)
|
||||||
)
|
)
|
||||||
client_consents_spec = dict(
|
client_consents_spec = dict(
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ options:
|
|||||||
- Use O(cache_name) as the ticket cache name and location.
|
- 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.
|
- If this option is not used, the default cache name and location are used.
|
||||||
- The default credentials cache may vary between systems.
|
- The default credentials cache may vary between systems.
|
||||||
- If not set the the value of E(KRB5CCNAME) environment variable will be used instead, its value is used to name the
|
- If not set the value of E(KRB5CCNAME) environment variable will be used instead, its value is used to name the
|
||||||
default ticket cache.
|
default ticket cache.
|
||||||
type: str
|
type: str
|
||||||
lifetime:
|
lifetime:
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ options:
|
|||||||
type: str
|
type: str
|
||||||
description:
|
description:
|
||||||
- URL for the message sender's icon.
|
- URL for the message sender's icon.
|
||||||
default: https://docs.ansible.com/favicon.ico
|
default: https://docs.ansible.com/favicon/favicon.ico
|
||||||
priority:
|
priority:
|
||||||
type: str
|
type: str
|
||||||
description:
|
description:
|
||||||
@@ -139,7 +139,7 @@ def main():
|
|||||||
text=dict(type='str'),
|
text=dict(type='str'),
|
||||||
channel=dict(type='str', default=None),
|
channel=dict(type='str', default=None),
|
||||||
username=dict(type='str', default='Ansible'),
|
username=dict(type='str', default='Ansible'),
|
||||||
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
|
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
|
||||||
priority=dict(type='str', default=None, choices=['important', 'urgent']),
|
priority=dict(type='str', default=None, choices=['important', 'urgent']),
|
||||||
validate_certs=dict(default=True, type='bool'),
|
validate_certs=dict(default=True, type='bool'),
|
||||||
attachments=dict(type='list', elements='dict'),
|
attachments=dict(type='list', elements='dict'),
|
||||||
|
|||||||
@@ -259,6 +259,9 @@ class Monit(object):
|
|||||||
def change_state(self, state, expected_status, invert_expected=None):
|
def change_state(self, state, expected_status, invert_expected=None):
|
||||||
current_status = self.get_status()
|
current_status = self.get_status()
|
||||||
self.run_command(STATE_COMMAND_MAP[state])
|
self.run_command(STATE_COMMAND_MAP[state])
|
||||||
|
# Give monit daemon a moment to process the command before checking status
|
||||||
|
# to avoid race condition where HTTP interface may be temporarily unresponsive
|
||||||
|
time.sleep(0.5)
|
||||||
status = self.wait_for_status_change(current_status)
|
status = self.wait_for_status_change(current_status)
|
||||||
status = self.wait_for_monit_to_stop_pending(status)
|
status = self.wait_for_monit_to_stop_pending(status)
|
||||||
status_match = status.value == expected_status.value
|
status_match = status.value == expected_status.value
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ author:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
EXAMPLES = r"""
|
EXAMPLES = r"""
|
||||||
|
# fmt: console
|
||||||
|
|
||||||
ansible webservers -m ohai --tree=/tmp/ohaidata
|
ansible webservers -m ohai --tree=/tmp/ohaidata
|
||||||
...
|
...
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ except ImportError:
|
|||||||
pureomapi_found = False
|
pureomapi_found = False
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||||
from ansible.module_utils.common.text.converters import to_bytes, to_native
|
from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text
|
||||||
|
|
||||||
|
|
||||||
class OmapiHostManager:
|
class OmapiHostManager:
|
||||||
@@ -178,15 +178,18 @@ class OmapiHostManager:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def unpack_facts(obj):
|
def unpack_facts(obj):
|
||||||
result = dict(obj)
|
result = {}
|
||||||
|
for k, v in dict(obj).items():
|
||||||
|
result[to_text(k)] = v
|
||||||
|
|
||||||
if 'hardware-address' in result:
|
if 'hardware-address' in result:
|
||||||
result['hardware-address'] = to_native(unpack_mac(result[to_bytes('hardware-address')]))
|
result['hardware-address'] = to_native(unpack_mac(result['hardware-address']))
|
||||||
|
|
||||||
if 'ip-address' in result:
|
if 'ip-address' in result:
|
||||||
result['ip-address'] = to_native(unpack_ip(result[to_bytes('ip-address')]))
|
result['ip-address'] = to_native(unpack_ip(result['ip-address']))
|
||||||
|
|
||||||
if 'hardware-type' in result:
|
if 'hardware-type' in result:
|
||||||
result['hardware-type'] = struct.unpack("!I", result[to_bytes('hardware-type')])
|
result['hardware-type'] = struct.unpack("!I", result['hardware-type'])
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@@ -234,8 +237,8 @@ class OmapiHostManager:
|
|||||||
response_obj = self.unpack_facts(host_response.obj)
|
response_obj = self.unpack_facts(host_response.obj)
|
||||||
fields_to_update = {}
|
fields_to_update = {}
|
||||||
|
|
||||||
if to_bytes('ip-address', errors='surrogate_or_strict') not in response_obj or \
|
if 'ip-address' not in response_obj or \
|
||||||
unpack_ip(response_obj[to_bytes('ip-address', errors='surrogate_or_strict')]) != self.module.params['ip']:
|
response_obj['ip-address'] != self.module.params['ip']:
|
||||||
fields_to_update['ip-address'] = pack_ip(self.module.params['ip'])
|
fields_to_update['ip-address'] = pack_ip(self.module.params['ip'])
|
||||||
|
|
||||||
# Name cannot be changed
|
# Name cannot be changed
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ EXAMPLES = r"""
|
|||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Create volume
|
- name: Create volume
|
||||||
packet_volume:
|
community.general.packet_volume:
|
||||||
description: "{{ volname }}"
|
description: "{{ volname }}"
|
||||||
project_id: "{{ project_id }}"
|
project_id: "{{ project_id }}"
|
||||||
facility: ewr1
|
facility: ewr1
|
||||||
@@ -98,7 +98,7 @@ EXAMPLES = r"""
|
|||||||
snapshot_frequency: 1day
|
snapshot_frequency: 1day
|
||||||
|
|
||||||
- name: Create a device
|
- name: Create a device
|
||||||
packet_device:
|
community.general.packet_device:
|
||||||
project_id: "{{ project_id }}"
|
project_id: "{{ project_id }}"
|
||||||
hostnames: "{{ devname }}"
|
hostnames: "{{ devname }}"
|
||||||
operating_system: ubuntu_16_04
|
operating_system: ubuntu_16_04
|
||||||
|
|||||||
@@ -128,7 +128,8 @@ notes:
|
|||||||
- To use an AUR helper (O(executable) option), a few extra setup steps might be required beforehand. For example, a dedicated
|
- 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.
|
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:
|
- '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: <pkg>).'
|
C(error: target not found: <pkg>). This is caused by an incompatibility of yay with the arguments passed by this module.
|
||||||
|
See L(yay bug #1744 report for details, https://github.com/Jguer/yay/issues/1744).'
|
||||||
- The common return values `stdout` and `stderr` are returned upon success, when needed, since community.general 4.1.0.
|
- The common return values `stdout` and `stderr` are returned upon success, when needed, since community.general 4.1.0.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -210,16 +210,18 @@ def add_or_update_pritunl_user(module):
|
|||||||
for key in user_params.keys():
|
for key in user_params.keys():
|
||||||
# When a param is not specified grab existing ones to prevent from changing it with the PUT request
|
# When a param is not specified grab existing ones to prevent from changing it with the PUT request
|
||||||
if user_params[key] is None:
|
if user_params[key] is None:
|
||||||
user_params[key] = users[0][key]
|
user_params[key] = users[0].get(key)
|
||||||
|
|
||||||
# 'groups' and 'mac_addresses' are list comparison
|
# 'groups' and 'mac_addresses' are list comparison
|
||||||
if key == "groups" or key == "mac_addresses":
|
if key == "groups" or key == "mac_addresses":
|
||||||
if set(users[0][key]) != set(user_params[key]):
|
remote_list = users[0].get(key) or []
|
||||||
|
local_list = user_params[key] or []
|
||||||
|
if set(remote_list) != set(local_list):
|
||||||
user_params_changed = True
|
user_params_changed = True
|
||||||
|
|
||||||
# otherwise it is either a boolean or a string
|
# otherwise it is either a boolean or a string
|
||||||
else:
|
else:
|
||||||
if users[0][key] != user_params[key]:
|
if users[0].get(key) != user_params[key]:
|
||||||
user_params_changed = True
|
user_params_changed = True
|
||||||
|
|
||||||
# Trigger a PUT on the API to update the current user if settings have changed
|
# Trigger a PUT on the API to update the current user if settings have changed
|
||||||
|
|||||||
@@ -123,15 +123,25 @@ import re
|
|||||||
import sys
|
import sys
|
||||||
import operator
|
import operator
|
||||||
|
|
||||||
HAS_DISTUTILS = False
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
|
|
||||||
|
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
|
||||||
|
|
||||||
|
HAS_IMPORTLIB_METADATA = False
|
||||||
try:
|
try:
|
||||||
import pkg_resources
|
import importlib.metadata
|
||||||
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
|
|
||||||
HAS_DISTUTILS = True
|
HAS_IMPORTLIB_METADATA = True
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
HAS_DISTUTILS = False
|
||||||
|
try:
|
||||||
|
import pkg_resources
|
||||||
|
|
||||||
|
HAS_DISTUTILS = True
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
|
||||||
operations = {
|
operations = {
|
||||||
'<=': operator.le,
|
'<=': operator.le,
|
||||||
@@ -157,9 +167,9 @@ def main():
|
|||||||
),
|
),
|
||||||
supports_check_mode=True,
|
supports_check_mode=True,
|
||||||
)
|
)
|
||||||
if not HAS_DISTUTILS:
|
if not HAS_DISTUTILS and not HAS_IMPORTLIB_METADATA:
|
||||||
module.fail_json(
|
module.fail_json(
|
||||||
msg='Could not import "distutils" and "pkg_resources" libraries to introspect python environment.',
|
msg='Could not import "pkg_resources" or "importlib.metadata" libraries to introspect Python environment.',
|
||||||
python=sys.executable,
|
python=sys.executable,
|
||||||
python_version=sys.version,
|
python_version=sys.version,
|
||||||
python_version_info=python_version_info,
|
python_version_info=python_version_info,
|
||||||
@@ -180,12 +190,20 @@ def main():
|
|||||||
pkg, op, version = match.groups()
|
pkg, op, version = match.groups()
|
||||||
if op is not None and op not in operations:
|
if op is not None and op not in operations:
|
||||||
module.fail_json(msg="Failed to parse version requirement '{0}'. Operator must be one of >, <, <=, >=, or ==".format(dep))
|
module.fail_json(msg="Failed to parse version requirement '{0}'. Operator must be one of >, <, <=, >=, or ==".format(dep))
|
||||||
try:
|
if HAS_DISTUTILS:
|
||||||
existing = pkg_resources.get_distribution(pkg).version
|
try:
|
||||||
except pkg_resources.DistributionNotFound:
|
existing = pkg_resources.get_distribution(pkg).version
|
||||||
# not there
|
except pkg_resources.DistributionNotFound:
|
||||||
results['not_found'].append(pkg)
|
# not there
|
||||||
continue
|
results['not_found'].append(pkg)
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
existing = importlib.metadata.version(pkg)
|
||||||
|
except importlib.metadata.PackageNotFoundError:
|
||||||
|
# not there
|
||||||
|
results['not_found'].append(pkg)
|
||||||
|
continue
|
||||||
if op is None and version is None:
|
if op is None and version is None:
|
||||||
results['valid'][pkg] = {
|
results['valid'][pkg] = {
|
||||||
'installed': existing,
|
'installed': existing,
|
||||||
|
|||||||
@@ -1111,7 +1111,7 @@ def main():
|
|||||||
module.fail_json(msg=to_native(result['msg']))
|
module.fail_json(msg=to_native(result['msg']))
|
||||||
|
|
||||||
for command in command_list:
|
for command in command_list:
|
||||||
# standardize on the Power* commands, but allow the the legacy
|
# standardize on the Power* commands, but allow the legacy
|
||||||
# GracefulRestart command
|
# GracefulRestart command
|
||||||
if command == 'GracefulRestart':
|
if command == 'GracefulRestart':
|
||||||
command = 'PowerGracefulRestart'
|
command = 'PowerGracefulRestart'
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ notes:
|
|||||||
- It is possible to interact with C(subscription-manager) only as root, so root permissions are required to successfully
|
- It is possible to interact with C(subscription-manager) only as root, so root permissions are required to successfully
|
||||||
run this module.
|
run this module.
|
||||||
- Since community.general 6.5.0, credentials (that is, O(username) and O(password), O(activationkey), or O(token)) are needed
|
- Since community.general 6.5.0, credentials (that is, O(username) and O(password), O(activationkey), or O(token)) are needed
|
||||||
only in case the the system is not registered, or O(force_register) is specified; this makes it possible to use the module
|
only in case the system is not registered, or O(force_register) is specified; this makes it possible to use the module
|
||||||
to tweak an already registered system, for example attaching pools to it (using O(pool_ids)), and modifying the C(syspurpose)
|
to tweak an already registered system, for example attaching pools to it (using O(pool_ids)), and modifying the C(syspurpose)
|
||||||
attributes (using O(syspurpose)).
|
attributes (using O(syspurpose)).
|
||||||
requirements:
|
requirements:
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ options:
|
|||||||
type: str
|
type: str
|
||||||
description:
|
description:
|
||||||
- URL for the message sender's icon.
|
- URL for the message sender's icon.
|
||||||
default: "https://docs.ansible.com/favicon.ico"
|
default: "https://docs.ansible.com/favicon/favicon.ico"
|
||||||
icon_emoji:
|
icon_emoji:
|
||||||
type: str
|
type: str
|
||||||
description:
|
description:
|
||||||
@@ -203,14 +203,17 @@ def build_payload_for_rocketchat(module, text, channel, username, icon_url, icon
|
|||||||
return payload
|
return payload
|
||||||
|
|
||||||
|
|
||||||
def do_notify_rocketchat(module, domain, token, protocol, payload):
|
def do_notify_rocketchat(module, domain, token, protocol, payload, is_pre740):
|
||||||
|
|
||||||
if token.count('/') < 1:
|
if token.count('/') < 1:
|
||||||
module.fail_json(msg="Invalid Token specified, provide a valid token")
|
module.fail_json(msg="Invalid Token specified, provide a valid token")
|
||||||
|
|
||||||
rocketchat_incoming_webhook = ROCKETCHAT_INCOMING_WEBHOOK % (protocol, domain, token)
|
rocketchat_incoming_webhook = ROCKETCHAT_INCOMING_WEBHOOK % (protocol, domain, token)
|
||||||
|
|
||||||
response, info = fetch_url(module, rocketchat_incoming_webhook, data=payload)
|
headers = None
|
||||||
|
if not is_pre740:
|
||||||
|
headers = {'Content-type': 'application/json'}
|
||||||
|
response, info = fetch_url(module, rocketchat_incoming_webhook, data=payload, headers=headers)
|
||||||
if info['status'] != 200:
|
if info['status'] != 200:
|
||||||
module.fail_json(msg="failed to send message, return status=%s" % str(info['status']))
|
module.fail_json(msg="failed to send message, return status=%s" % str(info['status']))
|
||||||
|
|
||||||
@@ -224,7 +227,7 @@ def main():
|
|||||||
msg=dict(type='str', required=False),
|
msg=dict(type='str', required=False),
|
||||||
channel=dict(type='str'),
|
channel=dict(type='str'),
|
||||||
username=dict(type='str', default='Ansible'),
|
username=dict(type='str', default='Ansible'),
|
||||||
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
|
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
|
||||||
icon_emoji=dict(type='str'),
|
icon_emoji=dict(type='str'),
|
||||||
link_names=dict(type='int', default=1, choices=[0, 1]),
|
link_names=dict(type='int', default=1, choices=[0, 1]),
|
||||||
validate_certs=dict(default=True, type='bool'),
|
validate_certs=dict(default=True, type='bool'),
|
||||||
@@ -248,7 +251,7 @@ def main():
|
|||||||
is_pre740 = module.params['is_pre740']
|
is_pre740 = module.params['is_pre740']
|
||||||
|
|
||||||
payload = build_payload_for_rocketchat(module, text, channel, username, icon_url, icon_emoji, link_names, color, attachments, is_pre740)
|
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)
|
do_notify_rocketchat(module, domain, token, protocol, payload, is_pre740)
|
||||||
|
|
||||||
module.exit_json(msg="OK")
|
module.exit_json(msg="OK")
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ options:
|
|||||||
|
|
||||||
EXAMPLES = r"""
|
EXAMPLES = r"""
|
||||||
- name: Create an private network
|
- name: Create an private network
|
||||||
community.general.scaleway_vpc:
|
community.general.scaleway_private_network:
|
||||||
project: '{{ scw_project }}'
|
project: '{{ scw_project }}'
|
||||||
name: 'vpc_one'
|
name: 'vpc_one'
|
||||||
state: present
|
state: present
|
||||||
@@ -81,7 +81,7 @@ EXAMPLES = r"""
|
|||||||
register: vpc_creation_task
|
register: vpc_creation_task
|
||||||
|
|
||||||
- name: Make sure private network with name 'foo' is deleted in region par1
|
- name: Make sure private network with name 'foo' is deleted in region par1
|
||||||
community.general.scaleway_vpc:
|
community.general.scaleway_private_network:
|
||||||
name: 'foo'
|
name: 'foo'
|
||||||
state: absent
|
state: absent
|
||||||
region: par1
|
region: par1
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ options:
|
|||||||
type: str
|
type: str
|
||||||
description:
|
description:
|
||||||
- URL for the message sender's icon.
|
- URL for the message sender's icon.
|
||||||
default: https://docs.ansible.com/favicon.ico
|
default: https://docs.ansible.com/favicon/favicon.ico
|
||||||
icon_emoji:
|
icon_emoji:
|
||||||
type: str
|
type: str
|
||||||
description:
|
description:
|
||||||
@@ -445,7 +445,7 @@ def main():
|
|||||||
channel=dict(type='str'),
|
channel=dict(type='str'),
|
||||||
thread_id=dict(type='str'),
|
thread_id=dict(type='str'),
|
||||||
username=dict(type='str', default='Ansible'),
|
username=dict(type='str', default='Ansible'),
|
||||||
icon_url=dict(type='str', default='https://docs.ansible.com/favicon.ico'),
|
icon_url=dict(type='str', default='https://docs.ansible.com/favicon/favicon.ico'),
|
||||||
icon_emoji=dict(type='str'),
|
icon_emoji=dict(type='str'),
|
||||||
link_names=dict(type='int', default=1, choices=[0, 1]),
|
link_names=dict(type='int', default=1, choices=[0, 1]),
|
||||||
parse=dict(type='str', choices=['none', 'full']),
|
parse=dict(type='str', choices=['none', 'full']),
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ short_description: Retrieve facts for a device using SNMP
|
|||||||
description:
|
description:
|
||||||
- Retrieve facts for a device using SNMP, the facts will be inserted to the C(ansible_facts) key.
|
- Retrieve facts for a device using SNMP, the facts will be inserted to the C(ansible_facts) key.
|
||||||
requirements:
|
requirements:
|
||||||
- pysnmp
|
- pysnmp < 6.2.4 - that version removed components used by this module.
|
||||||
extends_documentation_fragment:
|
extends_documentation_fragment:
|
||||||
- community.general.attributes
|
- community.general.attributes
|
||||||
- community.general.attributes.facts
|
- community.general.attributes.facts
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ options:
|
|||||||
signal:
|
signal:
|
||||||
type: str
|
type: str
|
||||||
description:
|
description:
|
||||||
- The signal to send to the program/group, when combined with the 'signalled' state. Required when l(state=signalled).
|
- The signal to send to the program/group, when combined with the V(signalled) state. Required when l(state=signalled).
|
||||||
supervisorctl_path:
|
supervisorctl_path:
|
||||||
type: path
|
type: path
|
||||||
description:
|
description:
|
||||||
@@ -116,6 +116,7 @@ EXAMPLES = r"""
|
|||||||
state: restarted
|
state: restarted
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from ansible.module_utils.basic import AnsibleModule, is_executable
|
from ansible.module_utils.basic import AnsibleModule, is_executable
|
||||||
|
|
||||||
|
|||||||
@@ -548,7 +548,9 @@ def main():
|
|||||||
command.append('-parallelism=%d' % module.params.get('parallelism'))
|
command.append('-parallelism=%d' % module.params.get('parallelism'))
|
||||||
|
|
||||||
def format_args(vars):
|
def format_args(vars):
|
||||||
if isinstance(vars, str):
|
if vars is None:
|
||||||
|
return 'null'
|
||||||
|
elif isinstance(vars, str):
|
||||||
return '"{string}"'.format(string=vars.replace('\\', '\\\\').replace('"', '\\"')).replace('\n', '\\n')
|
return '"{string}"'.format(string=vars.replace('\\', '\\\\').replace('"', '\\"')).replace('\n', '\\n')
|
||||||
elif isinstance(vars, bool):
|
elif isinstance(vars, bool):
|
||||||
if vars:
|
if vars:
|
||||||
@@ -565,7 +567,7 @@ def main():
|
|||||||
ret_out.append('{0}={{{1}}}'.format(k, process_complex_args(v)))
|
ret_out.append('{0}={{{1}}}'.format(k, process_complex_args(v)))
|
||||||
elif isinstance(v, list):
|
elif isinstance(v, list):
|
||||||
ret_out.append("{0}={1}".format(k, process_complex_args(v)))
|
ret_out.append("{0}={1}".format(k, process_complex_args(v)))
|
||||||
elif isinstance(v, (integer_types, float, str, bool)):
|
elif isinstance(v, (integer_types, float, str, bool)) or v is None:
|
||||||
ret_out.append('{0}={1}'.format(k, format_args(v)))
|
ret_out.append('{0}={1}'.format(k, format_args(v)))
|
||||||
else:
|
else:
|
||||||
# only to handle anything unforeseen
|
# only to handle anything unforeseen
|
||||||
@@ -577,7 +579,7 @@ def main():
|
|||||||
l_out.append("{{{0}}}".format(process_complex_args(item)))
|
l_out.append("{{{0}}}".format(process_complex_args(item)))
|
||||||
elif isinstance(item, list):
|
elif isinstance(item, list):
|
||||||
l_out.append("{0}".format(process_complex_args(item)))
|
l_out.append("{0}".format(process_complex_args(item)))
|
||||||
elif isinstance(item, (str, integer_types, float, bool)):
|
elif isinstance(item, (str, integer_types, float, bool)) or item is None:
|
||||||
l_out.append(format_args(item))
|
l_out.append(format_args(item))
|
||||||
else:
|
else:
|
||||||
# only to handle anything unforeseen
|
# only to handle anything unforeseen
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ options:
|
|||||||
aliases: [rtc]
|
aliases: [rtc]
|
||||||
choices: [local, UTC]
|
choices: [local, UTC]
|
||||||
notes:
|
notes:
|
||||||
- On Ubuntu 24.04 the C(util-linux-extra) package is required to provide the C(hwclock) command.
|
- On Ubuntu 24.04 and Debian 13 (Trixie), the C(util-linux-extra) package is required to provide the C(hwclock) command.
|
||||||
- On SmartOS the C(sm-set-timezone) utility (part of the smtools package) is required to set the zone timezone.
|
- On SmartOS the C(sm-set-timezone) utility (part of the smtools package) is required to set the zone timezone.
|
||||||
- On AIX only Olson/tz database timezones are usable (POSIX is not supported). An OS reboot is also required on AIX for
|
- On AIX only Olson/tz database timezones are usable (POSIX is not supported). An OS reboot is also required on AIX for
|
||||||
the new timezone setting to take effect. Note that AIX 6.1+ is needed (OS level 61 or newer).
|
the new timezone setting to take effect. Note that AIX 6.1+ is needed (OS level 61 or newer).
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ __metaclass__ = type
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from ansible.errors import AnsibleFilterError
|
from ansible.errors import AnsibleFilterError
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
|
|
||||||
|
|
||||||
@@ -32,7 +31,7 @@ def _keys_filter_params(data, matching_parameter):
|
|||||||
raise AnsibleFilterError(msg % (elem, type(elem)))
|
raise AnsibleFilterError(msg % (elem, type(elem)))
|
||||||
|
|
||||||
for elem in data:
|
for elem in data:
|
||||||
if not all(isinstance(item, string_types) for item in elem.keys()):
|
if not all(isinstance(item, str) for item in elem.keys()):
|
||||||
msg = "Top level keys must be strings. keys: %s"
|
msg = "Top level keys must be strings. keys: %s"
|
||||||
raise AnsibleFilterError(msg % elem.keys())
|
raise AnsibleFilterError(msg % elem.keys())
|
||||||
|
|
||||||
@@ -65,12 +64,12 @@ def _keys_filter_target_str(target, matching_parameter):
|
|||||||
|
|
||||||
if isinstance(target, list):
|
if isinstance(target, list):
|
||||||
for elem in target:
|
for elem in target:
|
||||||
if not isinstance(elem, string_types):
|
if not isinstance(elem, str):
|
||||||
msg = "The target items must be strings. %s is %s"
|
msg = "The target items must be strings. %s is %s"
|
||||||
raise AnsibleFilterError(msg % (elem, type(elem)))
|
raise AnsibleFilterError(msg % (elem, type(elem)))
|
||||||
|
|
||||||
if matching_parameter == 'regex':
|
if matching_parameter == 'regex':
|
||||||
if isinstance(target, string_types):
|
if isinstance(target, str):
|
||||||
r = target
|
r = target
|
||||||
else:
|
else:
|
||||||
if len(target) > 1:
|
if len(target) > 1:
|
||||||
@@ -83,7 +82,7 @@ def _keys_filter_target_str(target, matching_parameter):
|
|||||||
except re.error:
|
except re.error:
|
||||||
msg = "The target must be a valid regex if matching_parameter=regex. target is %s"
|
msg = "The target must be a valid regex if matching_parameter=regex. target is %s"
|
||||||
raise AnsibleFilterError(msg % r)
|
raise AnsibleFilterError(msg % r)
|
||||||
elif isinstance(target, string_types):
|
elif isinstance(target, str):
|
||||||
tt = (target, )
|
tt = (target, )
|
||||||
else:
|
else:
|
||||||
tt = tuple(set(target))
|
tt = tuple(set(target))
|
||||||
@@ -117,10 +116,10 @@ def _keys_filter_target_dict(target, matching_parameter):
|
|||||||
if not all(k in elem for k in ('before', 'after')):
|
if not all(k in elem for k in ('before', 'after')):
|
||||||
msg = "All dictionaries in target must include attributes: after, before."
|
msg = "All dictionaries in target must include attributes: after, before."
|
||||||
raise AnsibleFilterError(msg)
|
raise AnsibleFilterError(msg)
|
||||||
if not isinstance(elem['before'], string_types):
|
if not isinstance(elem['before'], str):
|
||||||
msg = "The attributes before must be strings. %s is %s"
|
msg = "The attributes before must be strings. %s is %s"
|
||||||
raise AnsibleFilterError(msg % (elem['before'], type(elem['before'])))
|
raise AnsibleFilterError(msg % (elem['before'], type(elem['before'])))
|
||||||
if not isinstance(elem['after'], string_types):
|
if not isinstance(elem['after'], str):
|
||||||
msg = "The attributes after must be strings. %s is %s"
|
msg = "The attributes after must be strings. %s is %s"
|
||||||
raise AnsibleFilterError(msg % (elem['after'], type(elem['after'])))
|
raise AnsibleFilterError(msg % (elem['after'], type(elem['after'])))
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ __metaclass__ = type
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from ansible.module_utils.six import binary_type, text_type
|
|
||||||
from collections.abc import Mapping, Set
|
from collections.abc import Mapping, Set
|
||||||
from ansible.module_utils.common.collections import is_sequence
|
from ansible.module_utils.common.collections import is_sequence
|
||||||
from ansible.utils.unsafe_proxy import (
|
from ansible.utils.unsafe_proxy import (
|
||||||
@@ -29,11 +28,11 @@ def make_unsafe(value):
|
|||||||
return set(make_unsafe(elt) for elt in value)
|
return set(make_unsafe(elt) for elt in value)
|
||||||
elif is_sequence(value):
|
elif is_sequence(value):
|
||||||
return type(value)(make_unsafe(elt) for elt in value)
|
return type(value)(make_unsafe(elt) for elt in value)
|
||||||
elif isinstance(value, binary_type):
|
elif isinstance(value, bytes):
|
||||||
if _RE_TEMPLATE_CHARS_BYTES.search(value):
|
if _RE_TEMPLATE_CHARS_BYTES.search(value):
|
||||||
value = _make_unsafe(value)
|
value = _make_unsafe(value)
|
||||||
return value
|
return value
|
||||||
elif isinstance(value, text_type):
|
elif isinstance(value, str):
|
||||||
if _RE_TEMPLATE_CHARS.search(value):
|
if _RE_TEMPLATE_CHARS.search(value):
|
||||||
value = _make_unsafe(value)
|
value = _make_unsafe(value)
|
||||||
return value
|
return value
|
||||||
|
|||||||
@@ -223,8 +223,9 @@ _value:
|
|||||||
type: bool
|
type: bool
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
from collections.abc import Sequence
|
||||||
|
|
||||||
from ansible.errors import AnsibleFilterError
|
from ansible.errors import AnsibleFilterError
|
||||||
from ansible.module_utils.six.moves.collections_abc import Sequence
|
|
||||||
from ansible_collections.community.general.plugins.plugin_utils.ansible_type import _ansible_type
|
from ansible_collections.community.general.plugins.plugin_utils.ansible_type import _ansible_type
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,16 +5,6 @@
|
|||||||
from __future__ import (absolute_import, division, print_function)
|
from __future__ import (absolute_import, division, print_function)
|
||||||
__metaclass__ = type
|
__metaclass__ = type
|
||||||
|
|
||||||
from ansible.errors import AnsibleError
|
|
||||||
from ansible.module_utils.six import raise_from
|
|
||||||
|
|
||||||
try:
|
|
||||||
from fqdn import FQDN
|
|
||||||
except ImportError as imp_exc:
|
|
||||||
ANOTHER_LIBRARY_IMPORT_ERROR = imp_exc
|
|
||||||
else:
|
|
||||||
ANOTHER_LIBRARY_IMPORT_ERROR = None
|
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION = '''
|
DOCUMENTATION = '''
|
||||||
name: fqdn_valid
|
name: fqdn_valid
|
||||||
@@ -74,6 +64,15 @@ _value:
|
|||||||
type: bool
|
type: bool
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
from ansible.errors import AnsibleError
|
||||||
|
|
||||||
|
try:
|
||||||
|
from fqdn import FQDN
|
||||||
|
except ImportError as imp_exc:
|
||||||
|
ANOTHER_LIBRARY_IMPORT_ERROR = imp_exc
|
||||||
|
else:
|
||||||
|
ANOTHER_LIBRARY_IMPORT_ERROR = None
|
||||||
|
|
||||||
|
|
||||||
def fqdn_valid(name, min_labels=1, allow_underscores=False):
|
def fqdn_valid(name, min_labels=1, allow_underscores=False):
|
||||||
"""
|
"""
|
||||||
@@ -83,10 +82,7 @@ def fqdn_valid(name, min_labels=1, allow_underscores=False):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if ANOTHER_LIBRARY_IMPORT_ERROR:
|
if ANOTHER_LIBRARY_IMPORT_ERROR:
|
||||||
raise_from(
|
raise AnsibleError('Python package fqdn must be installed to use this test.') from ANOTHER_LIBRARY_IMPORT_ERROR
|
||||||
AnsibleError('Python package fqdn must be installed to use this test.'),
|
|
||||||
ANOTHER_LIBRARY_IMPORT_ERROR
|
|
||||||
)
|
|
||||||
|
|
||||||
fobj = FQDN(name, min_labels=min_labels, allow_underscores=allow_underscores)
|
fobj = FQDN(name, min_labels=min_labels, allow_underscores=allow_underscores)
|
||||||
return (fobj.is_valid)
|
return (fobj.is_valid)
|
||||||
|
|||||||
@@ -8,35 +8,35 @@
|
|||||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
# 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
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
- name: Install build-tools;34.0.0
|
- name: Install skiaparser;1
|
||||||
android_sdk:
|
android_sdk:
|
||||||
accept_licenses: true
|
accept_licenses: true
|
||||||
name: build-tools;34.0.0
|
name: skiaparser;1
|
||||||
state: present
|
state: present
|
||||||
register: build_tools_installed
|
register: skiaparser_1_installed
|
||||||
|
|
||||||
- name: Install build-tools;34.0.0 second time
|
- name: Install skiaparser;1 second time
|
||||||
android_sdk:
|
android_sdk:
|
||||||
name: build-tools;34.0.0
|
name: skiaparser;1
|
||||||
state: present
|
state: present
|
||||||
register: build_tools_installed2
|
register: skiaparser_1_installed_2
|
||||||
|
|
||||||
- name: Stat build-tools
|
- name: Stat skiaparser;1
|
||||||
stat:
|
stat:
|
||||||
path: "{{ android_sdk_location }}/build-tools/34.0.0"
|
path: "{{ android_sdk_location }}/skiaparser/1"
|
||||||
register: build_tools_34_0_0
|
register: skiaparser_1_stat
|
||||||
|
|
||||||
- name: Delete build-tools;34.0.0
|
- name: Delete skiaparser;1
|
||||||
android_sdk:
|
android_sdk:
|
||||||
name: build-tools;34.0.0
|
name: skiaparser;1
|
||||||
state: absent
|
state: absent
|
||||||
register: build_tools_deleted
|
register: skiaparser_1_deleted
|
||||||
|
|
||||||
- name: Delete build-tools;34.0.0 second time
|
- name: Delete skiaparser;1 second time
|
||||||
android_sdk:
|
android_sdk:
|
||||||
name: build-tools;34.0.0
|
name: skiaparser;1
|
||||||
state: absent
|
state: absent
|
||||||
register: build_tools_deleted2
|
register: skiaparser_1_deleted_2
|
||||||
|
|
||||||
- name: Download old platform-tools
|
- name: Download old platform-tools
|
||||||
unarchive:
|
unarchive:
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
- name: Install a package to a new root
|
- name: Install a package to a new root
|
||||||
android_sdk:
|
android_sdk:
|
||||||
name: build-tools;34.0.0
|
name: skiaparser;1
|
||||||
accept_licenses: true
|
accept_licenses: true
|
||||||
state: present
|
state: present
|
||||||
sdk_root: "{{ remote_tmp_dir }}"
|
sdk_root: "{{ remote_tmp_dir }}"
|
||||||
@@ -67,12 +67,12 @@
|
|||||||
|
|
||||||
- name: Check package is installed
|
- name: Check package is installed
|
||||||
stat:
|
stat:
|
||||||
path: "{{ remote_tmp_dir }}/build-tools/34.0.0"
|
path: "{{ remote_tmp_dir }}/skiaparser/1"
|
||||||
register: new_root_package_stat
|
register: new_root_package_stat
|
||||||
|
|
||||||
- name: Install a package from canary channel
|
- name: Install a package from canary channel
|
||||||
android_sdk:
|
android_sdk:
|
||||||
name: build-tools;33.0.0
|
name: skiaparser;1
|
||||||
state: present
|
state: present
|
||||||
channel: canary
|
channel: canary
|
||||||
register: package_canary
|
register: package_canary
|
||||||
@@ -80,11 +80,11 @@
|
|||||||
- name: Run tests
|
- name: Run tests
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- build_tools_34_0_0.stat.exists
|
- skiaparser_1_stat.stat.exists
|
||||||
- build_tools_installed is changed
|
- skiaparser_1_installed is changed
|
||||||
- build_tools_installed2 is not changed
|
- skiaparser_1_installed_2 is not changed
|
||||||
- build_tools_deleted is changed
|
- skiaparser_1_deleted is changed
|
||||||
- build_tools_deleted2 is not changed
|
- skiaparser_1_deleted_2 is not changed
|
||||||
- platform_tools_present is not changed
|
- platform_tools_present is not changed
|
||||||
- platform_tools_updated is changed
|
- platform_tools_updated is changed
|
||||||
- new_root_package is changed
|
- new_root_package is changed
|
||||||
|
|||||||
@@ -52,9 +52,11 @@
|
|||||||
- name: Symlink java
|
- name: Symlink java
|
||||||
become: true
|
become: true
|
||||||
file:
|
file:
|
||||||
src: "/usr/local/opt/openjdk@17/libexec/openjdk.jdk"
|
src: "{{ brew_prefix }}/opt/openjdk@17/libexec/openjdk.jdk"
|
||||||
dest: "/Library/Java/JavaVirtualMachines/openjdk-17.jdk"
|
dest: "/Library/Java/JavaVirtualMachines/openjdk-17.jdk"
|
||||||
state: link
|
state: link
|
||||||
|
vars:
|
||||||
|
brew_prefix: "{{ lookup('pipe', 'brew --prefix') }}"
|
||||||
when:
|
when:
|
||||||
- ansible_os_family == 'Darwin'
|
- ansible_os_family == 'Darwin'
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
from __future__ import (absolute_import, division, print_function)
|
from __future__ import (absolute_import, division, print_function)
|
||||||
__metaclass__ = type
|
__metaclass__ = type
|
||||||
|
|
||||||
from ansible.module_utils.six import string_types
|
|
||||||
|
|
||||||
|
|
||||||
def callback_results_extractor(outputs_results):
|
def callback_results_extractor(outputs_results):
|
||||||
results = []
|
results = []
|
||||||
@@ -18,7 +16,7 @@ def callback_results_extractor(outputs_results):
|
|||||||
line = "line_%s" % (i + 1)
|
line = "line_%s" % (i + 1)
|
||||||
test_line = stdout_lines[i] if i < len(stdout_lines) else None
|
test_line = stdout_lines[i] if i < len(stdout_lines) else None
|
||||||
expected_lines = expected_output[i] if i < len(expected_output) else None
|
expected_lines = expected_output[i] if i < len(expected_output) else None
|
||||||
if not isinstance(expected_lines, string_types) and expected_lines is not None:
|
if not isinstance(expected_lines, str) and expected_lines is not None:
|
||||||
if test_line not in expected_lines:
|
if test_line not in expected_lines:
|
||||||
differences.append({
|
differences.append({
|
||||||
'line': {
|
'line': {
|
||||||
|
|||||||
@@ -8,3 +8,4 @@ skip/macos
|
|||||||
skip/osx
|
skip/osx
|
||||||
skip/freebsd
|
skip/freebsd
|
||||||
skip/rhel10.0 # FIXME
|
skip/rhel10.0 # FIXME
|
||||||
|
skip/rhel10.1 # FIXME
|
||||||
|
|||||||
@@ -21,4 +21,6 @@ skip/rhel9.3
|
|||||||
skip/rhel9.4
|
skip/rhel9.4
|
||||||
skip/rhel9.5
|
skip/rhel9.5
|
||||||
skip/rhel9.6
|
skip/rhel9.6
|
||||||
|
skip/rhel9.7
|
||||||
skip/rhel10.0
|
skip/rhel10.0
|
||||||
|
skip/rhel10.1
|
||||||
|
|||||||
@@ -21,4 +21,6 @@ skip/rhel9.3
|
|||||||
skip/rhel9.4
|
skip/rhel9.4
|
||||||
skip/rhel9.5
|
skip/rhel9.5
|
||||||
skip/rhel9.6
|
skip/rhel9.6
|
||||||
|
skip/rhel9.7
|
||||||
skip/rhel10.0
|
skip/rhel10.0
|
||||||
|
skip/rhel10.1
|
||||||
|
|||||||
5
tests/integration/targets/filter_from_ini/aliases
Normal file
5
tests/integration/targets/filter_from_ini/aliases
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# 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/1
|
||||||
5
tests/integration/targets/filter_json_patch/aliases
Normal file
5
tests/integration/targets/filter_json_patch/aliases
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# 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/1
|
||||||
@@ -126,12 +126,18 @@
|
|||||||
input |
|
input |
|
||||||
community.general.json_diff(target) |
|
community.general.json_diff(target) |
|
||||||
sort(attribute='path')
|
sort(attribute='path')
|
||||||
==
|
in [expected_1, expected_2]
|
||||||
[
|
|
||||||
{"op": "add", "path": "/baq", "value": {"baz": 2}},
|
|
||||||
{"op": "remove", "path": "/baw/1"},
|
|
||||||
{"op": "replace", "path": "/hello", "value": "night"},
|
|
||||||
]
|
|
||||||
vars:
|
vars:
|
||||||
input: {"foo": 1, "bar":{"baz": 2}, "baw": [1, 2, 3], "hello": "day"}
|
input: {"foo": 1, "bar":{"baz": 2}, "baw": [1, 2, 3], "hello": "day"}
|
||||||
target: {"foo": 1, "bar": {"baz": 2}, "baw": [1, 3], "baq": {"baz": 2}, "hello": "night"}
|
target: {"foo": 1, "bar": {"baz": 2}, "baw": [1, 3], "baq": {"baz": 2}, "hello": "night"}
|
||||||
|
expected_1:
|
||||||
|
# Older jsonpatch version
|
||||||
|
- {"op": "add", "path": "/baq", "value": {"baz": 2}}
|
||||||
|
- {"op": "remove", "path": "/baw/1"}
|
||||||
|
- {"op": "replace", "path": "/hello", "value": "night"}
|
||||||
|
expected_2:
|
||||||
|
# Newer jsonpatch version
|
||||||
|
- {"op": "add", "path": "/baq", "value": {"baz": 2}}
|
||||||
|
- {"op": "remove", "path": "/baw/1"}
|
||||||
|
- {"op": "move", "path": "/baw/1", "from": "/baw/2"}
|
||||||
|
- {"op": "replace", "path": "/hello", "value": "night"}
|
||||||
|
|||||||
5
tests/integration/targets/filter_to_ini/aliases
Normal file
5
tests/integration/targets/filter_to_ini/aliases
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# 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/1
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user