Compare commits

..

81 Commits
4.8.2 ... 4.8.8

Author SHA1 Message Date
Felix Fontein
ec2efb26d0 Release 4.8.8. 2022-10-24 21:03:23 +02:00
Felix Fontein
150495a15f Fix broken changelog fragment.
(cherry picked from commit c88f0f4ca0)
2022-10-24 21:02:44 +02:00
patchback[bot]
b2b3c056ca clarify jc filter usage in the example (#5396) (#5419)
* Update jc.py

##### SUMMARY
<!— Your description here –>

##### ISSUE TYPE
- Docs Pull Request

+label: docsite_pr

* Update jc.py

* Update plugins/filter/jc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update jc.py

* Update plugins/filter/jc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update jc.py

* Update jc.py

* Update jc.py

* Update plugins/filter/jc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/filter/jc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* change all of the tags to be FQMN

FQMN = fully qualified module name

* Update jc.py

* Update plugins/filter/jc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update jc.py

* Update jc.py

* Update plugins/filter/jc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update jc.py

* Update plugins/filter/jc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/filter/jc.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 70c57dcb6a)

Co-authored-by: Ron Green <11993626+georgettica@users.noreply.github.com>
2022-10-24 20:59:45 +02:00
patchback[bot]
557594c392 pkgng: fix error-handling when upgrading all (#5369) (#5410)
* pkgng: fix error-handling when upgrading all

* provide for rc=1 in check_mode + test

* fix name of task in test

* add changelog fragment

(cherry picked from commit baa8bd52ab)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-10-23 20:56:12 +02:00
Felix Fontein
b6a6edd403 Prepare 4.8.8 release. 2022-10-23 16:43:35 +02:00
patchback[bot]
e42770d4bf archive: better expose requirements (#5392) (#5401)
* Better expose requirements.

* Move sentence back to notes.

* Update plugins/modules/files/archive.py

Co-authored-by: Maxwell G <gotmax@e.email>

* Break line.

Co-authored-by: Maxwell G <gotmax@e.email>
(cherry picked from commit a023f2a344)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-10-21 07:21:49 +02:00
patchback[bot]
1b78f18bf4 Do not crash when lzma is not around. (#5393) (#5397)
(cherry picked from commit 5aa1e58749)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-10-20 20:45:27 +02:00
patchback[bot]
ec11d13825 Fix module. (#5383) (#5387)
(cherry picked from commit c3bdc4b394)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-10-19 10:30:49 +02:00
patchback[bot]
eb066335f8 [opentelemetry][callback] support opentelemetry-api 1.13 (#5342) (#5378)
* [opentelemetry][callback] support opentelemetry-api 1.13

* [opentelemetry][callback] changelog fragment

* Update changelogs/fragments/5342-opentelemetry_bug_fix_opentelemetry-api-1.13.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* [opentelemetry-callback] refactor time_ns in a function

* fix linting

* change branch outside of the function

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>

* [opentelemetry]: remove options from suggestion

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
(cherry picked from commit 5732023aa2)

Co-authored-by: Victor Martinez <victormartinezrubio@gmail.com>
2022-10-18 10:38:22 +02:00
patchback[bot]
cb26897b3e Make pfexec become usable for illumos (#3889) (#5338)
* Experimental change from OpenIndiana

* resolve pfexec problem, by removing superfluous quotes

* reimplement "wrap_exe"

* remove spaces arround keyword argument assignment

* adapted pfexec unit test

* Try to fix quoting of test expression

* Fix quoting of test expression by replacing ' with "

* Add changelog fragment

(cherry picked from commit dc2d3c24fa)

Co-authored-by: manschwetusCS <30724946+manschwetusCS@users.noreply.github.com>
2022-10-05 11:03:32 +00:00
patchback[bot]
b7b5c1852e keycloak_user_federation: add explanation and example to vendor option (#4893) (#5335)
* Add explanation and example to vendor option

##### SUMMARY
<!— Your description here –>

##### ISSUE TYPE
- Docs Pull Request

+label: docsite_pr

* Update plugins/modules/identity/keycloak/keycloak_user_federation.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 7b86fa6a7d)

Co-authored-by: clovis-monmousseau <58973012+clovis-monmousseau@users.noreply.github.com>
2022-10-05 08:18:45 +02:00
patchback[bot]
97dce1f621 Fix #5313: redhat_subscription module is not idempotent when pool_ids (#5319) (#5329)
This fix ensures the idempotency of the redhat_subscription module when pool_ids are used. The main problem was, that a 'None' quantity was not properly handled and that the quantity check compared a string with an integer.

Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>

Signed-off-by: Christoph Fiehe <c.fiehe@eurodata.de>
Co-authored-by: Christoph Fiehe <c.fiehe@eurodata.de>
(cherry picked from commit 6fe2a84e87)

Co-authored-by: cfiehe <cfiehe@users.noreply.github.com>
2022-10-03 20:36:32 +02:00
Felix Fontein
0618af9b1e Next expected release is 4.8.8. 2022-10-03 07:00:06 +02:00
Felix Fontein
bd5f7197d6 Release 4.8.7. 2022-10-03 06:29:30 +02:00
Felix Fontein
8532e0e086 Prepare 4.8.7 release. 2022-10-02 22:06:22 +02:00
patchback[bot]
096f8bed3b locale_gen: fix UbuntuMode (#5282) (#5309)
* Fix UbuntuMode

* Fix indentation

* Create 5281-locale_gen.yaml

* Update and rename 5281-locale_gen.yaml to 5282-locale_gen.yaml

* apply suggested changes

* apply suggested change

(cherry picked from commit fb1cf91ebd)

Co-authored-by: Bartosz-lab <73119351+Bartosz-lab@users.noreply.github.com>
2022-09-25 21:07:25 +02:00
Felix Fontein
725d16d835 Replace devel with stable-2.14 in CI. (#5299) 2022-09-21 08:07:16 +02:00
patchback[bot]
5462773827 gitlab modules: improved imports (#5259) (#5276)
* gitlab modules: improved imports

* add changelog fragment

* refactored the import check to its sole function

(cherry picked from commit 6b463e6fa6)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-09-12 21:14:02 +02:00
patchback[bot]
f798d914e1 Fix pkgng tests (#5266) (#5269)
* Now there are problems with 13.0 as well. But maybe 13.1 works again?

* 13.1 still does not work, maybe 13.2 will (not yet available in CI)...

(cherry picked from commit b371bd6a5b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-09-10 11:39:58 +02:00
patchback[bot]
c3d5a7b1b8 Restrict Python packages for nomad tests. (#5262) (#5264)
(cherry picked from commit dde0b55f1a)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-09-10 11:16:36 +02:00
patchback[bot]
9bd160d989 ali_instance: fixed markups in doc (#5226) (#5231)
* ali_instance: fixed markups in doc

* Update plugins/modules/cloud/alicloud/ali_instance.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/alicloud/ali_instance.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/alicloud/ali_instance.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/cloud/alicloud/ali_instance.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit ac8b034061)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-09-04 15:59:43 +02:00
patchback[bot]
1b800273ef ipwcli_dns: fixed markups in doc (#5225) (#5229)
* ipwcli_dns: fixed markups in doc

* added punctuation

(cherry picked from commit a481f8356e)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-09-04 15:59:34 +02:00
patchback[bot]
61306b579e Update BOTMETA.yml (#5165) (#5216)
* Update BOTMETA.yml

Removing Endlesstrax and Amigus as maintainers.

* Update .github/BOTMETA.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update BOTMETA.yml

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 86f4d798a9)

Co-authored-by: tylerezimmerman <100804646+tylerezimmerman@users.noreply.github.com>
2022-09-03 11:46:29 +02:00
patchback[bot]
107a1729a4 Catch more broader error messages. (#5212) (#5214)
(cherry picked from commit fa49051912)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-09-03 11:35:03 +02:00
patchback[bot]
895ae3b73e [TEMP] Fix RHEL 8 issues by restricting bcrypt to < 4.0.0 (#5183) (#5186)
(cherry picked from commit 8e59e52525)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-08-25 08:21:26 +02:00
patchback[bot]
aa737429de filesystem: create temp directory outside /tmp to avoid problems with tmpfs. (#5182) (#5184)
(cherry picked from commit 8027bc5335)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-08-25 06:58:56 +02:00
patchback[bot]
28830d8ca5 adding nested try block for tss.py to import new Delinea library (#5151) (#5163)
* adding nested try block to import delinea library

* whitespace

* Update plugins/lookup/tss.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* adding changelog fragment

* Update changelogs/fragments/5151-add-delinea-support-tss-lookup.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Tom Reeb <Thomas.Reeb_e@morganlewis.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 9f39294f50)

Co-authored-by: Tom Reeb <tomreeb@users.noreply.github.com>
2022-08-23 22:10:49 +02:00
Felix Fontein
3825264260 Next expected release is 4.8.7. 2022-08-22 16:04:10 +02:00
Felix Fontein
9e319610c3 Release 4.8.6. 2022-08-22 14:04:41 +02:00
Felix Fontein
92db683b08 Prepare 4.8.6 release. 2022-08-21 22:10:53 +02:00
patchback[bot]
81966e8900 Increase xfs size to 300 MB. This seems to be new minimal size. (#5133) (#5135)
(cherry picked from commit 98ea27847f)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-08-20 14:18:51 +02:00
patchback[bot]
465b0c72a6 Fix nsupdate when updating NS record (#5112) (#5131)
* Fix nsupdate when updating NS record

* Changelog fragment

* Update changelogs/fragments/5112-fix-nsupdate-ns-entry.yaml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Switch to fallback to AUTHORITY instead of using with NS type.

* Update plugins/modules/net_tools/nsupdate.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/net_tools/nsupdate.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: jonathan lung <lungj@heresjono.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit ad8965218d)

Co-authored-by: Jonathan Lung <lungj@users.noreply.github.com>
2022-08-20 13:34:16 +02:00
patchback[bot]
37fc85b03a Remove Fedora 35 from devel CI runs. (#5121) (#5122)
(cherry picked from commit ad0c7095d4)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-08-16 22:21:18 +02:00
patchback[bot]
efcaf57da8 Try to install virtualenv via pip on Arch. (#5116) (#5118)
ci_complete

(cherry picked from commit 3dcff121c4)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-08-13 12:50:41 +02:00
Felix Fontein
e4eead189b Fix linting errors; fix some real bugs (#5111) (#5115)
* Fix linting errors.

* Fix bugs.

* Another linter error ignored.

* More fixes.

* Ignore sanity errors with older versions.

ci_complete

* Forgot to commit more changes.

(cherry picked from commit a54af8909c)
2022-08-12 14:37:34 +02:00
Felix Fontein
54bf6ef6de Add MIT-license.txt (#5072)
(partially cherry picked from commit b5eae69e36)
2022-08-05 12:47:18 +02:00
patchback[bot]
a63b8b14bc aix_filesystem: Fix examples (#5067) (#5070)
`community.general.filesystem` is not a valid argument to
aix_filesystem.

(cherry picked from commit 8f37638480)

Co-authored-by: Maxwell G <9920591+gotmax23@users.noreply.github.com>
2022-08-05 12:46:54 +02:00
patchback[bot]
2e335f3876 Set CARGO_NET_GIT_FETCH_WITH_CLI=true for cargo on Alpine. (#5053) (#5054)
(cherry picked from commit b5eae69e36)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-08-01 23:18:10 +02:00
Felix Fontein
9d770169cc Next release will be 4.8.6. 2022-08-01 20:52:50 +02:00
Felix Fontein
d6c9c0c49a Release 4.8.5. 2022-08-01 09:30:30 +02:00
patchback[bot]
9f1e976b9f Slack: Add support for (some) groups (#5019) (#5043)
* Slack: Add support for (some) groups

Some of the older private channels in the workspace I'm working in have channel ID's starting with `G0` and `GF` and this resulted to false positive `channel_not_found` errors.
I've added these prefixes to the list to maintain as much backwards compatibility as possible.

Ideally the auto-prefix of the channel name with `#` is dropped entirely, given the Channel ID's have become more dominant in the Slack API over the past years.

* Add changelog fragment for slack channel prefix fix

* Update changelogs/fragments/5019-slack-support-more-groups.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 3fe9592cf1)

Co-authored-by: Richard Tuin <richardtuin@gmail.com>
2022-07-31 23:52:45 +02:00
Felix Fontein
e309707e22 Prepare 4.8.5 release. 2022-07-31 22:56:31 +02:00
patchback[bot]
7503c69b53 Pacman: Improve url integrity test (#4968) (#5010)
* Fix typo

* Host url package

* Delete cached files

* Add cases for cached url package

* Rename file_pkg for clarification

* Change port to 8080, as 80 is already used in pipeline

* Added fragment

* Change port to 8000, as 8080 is already used in pipeline

* Fixed changelog fragment

* Change port to 53280, as 8000 is already used in pipeline

* Change port to 27617 (copied from get_url), as 53280 is already used in pipeline

* Also download the signature of url package

Co-authored-by: Jean Raby <jean@raby.sh>

* Fix duplication errors

Co-authored-by: Jean Raby <jean@raby.sh>

* Copied waiting from get_url; applyed output redirection from jraby

* Fix signature filename

* Use correct cache dir

* Add missing assertions for uninstall_1c

* Fix typo

* Delete changelog fragment

* Make python server true async with 90 sec timeout

Copied from ainsible.builtin.get_url

Co-authored-by: Jean Raby <jean@raby.sh>
(cherry picked from commit 76b235c6b3)

Co-authored-by: Minei3oat <Minei3oat@users.noreply.github.com>
2022-07-27 07:41:37 +02:00
patchback[bot]
34d7369293 fixing minor documentation flaws (#5000) (#5003)
Co-authored-by: Thomas Blaesing <thomas.blaesing@erwinhymergroup.com>
(cherry picked from commit 037c75db4f)

Co-authored-by: Thomas <3999809+tehtbl@users.noreply.github.com>
2022-07-26 12:48:45 +02:00
patchback[bot]
91c37a79f4 Update to new Github account for notifications (#4986) (#4988)
* Update to new Github account for notifications

* Update to new Github account for notifications

(cherry picked from commit 3204905e5c)

Co-authored-by: Florian <100365291+florianpaulhoberg@users.noreply.github.com>
2022-07-23 14:23:31 +02:00
patchback[bot]
24c706ca1b python-daemon 2.3.1 requires Python 3+. (#4977) (#4980)
(cherry picked from commit e1cfa13a1b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-07-23 13:32:59 +02:00
patchback[bot]
851dec44c5 Temporarily disable the yum_versionlock tests. (#4978) (#4984)
(cherry picked from commit 8f5a8cf4ba)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-07-23 12:22:49 +02:00
patchback[bot]
22773418d2 Pacman: Fix name of URL packages (#4959) (#4970)
* Strip downloading... of unseen URLs

* Added changelog fragment

* Added integration tests for reason and reason_for

Inspired by the integration tests for url packages

* Revert "Added integration tests for reason and reason_for"

This reverts commit f60d92f0d7.

Accidentally commited to the wrong branch.

(cherry picked from commit 788cfb624a)

Co-authored-by: Minei3oat <Minei3oat@users.noreply.github.com>
2022-07-21 20:16:24 +02:00
patchback[bot]
8854f4d948 proxmox module_utils: fix get_vm int parse handling (#4945) (#4966)
* add int parse handling

* Revert "add int parse handling"

This reverts commit db2aac4254.

* fix: vmid check if state is absent

* add changelogs fragments

* Update changelogs/fragments/4945-fix-get_vm-int-parse-handling.yaml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit c57204f9a9)

Co-authored-by: miyuk <enough7531@gmail.com>
2022-07-21 08:14:36 +02:00
patchback[bot]
35092aa7f9 Adjust to b1dd2af4ca. (#4949) (#4951)
(cherry picked from commit ade54bceb8)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-07-12 17:17:08 +02:00
patchback[bot]
5bbcfa5644 proxmox inventory: fix for agent enabled (#4910) (#4946)
* Update proxmox.py

* Forgot a debug print.

* pep

* Check if int, old school way.

* pep, once again.

* Create 4910-fix-for-agent-enabled.yml

* Must check the first listentry for enabled=1

* Update changelogs/fragments/4910-fix-for-agent-enabled.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit aa03c71267)

Co-authored-by: ube <ube@alienautopsy.net>
2022-07-12 11:17:44 +02:00
Felix Fontein
8f6a4e0028 Next release will be 4.8.5. 2022-07-12 08:56:49 +02:00
Felix Fontein
1a185608bd Release 4.8.4. 2022-07-12 06:59:54 +02:00
Felix Fontein
69ba89db0d Prepare 4.8.4 release. 2022-07-11 22:07:57 +02:00
patchback[bot]
07798c3169 Fix syntax in rax_clb_nodes that breaks in Python3 (#4933) (#4936)
* Use syntax that works in both Python 2 and 3 when iterating through a
    dict that's going to be mutated during iteration
  * Fixes `dictionary changed size during iteration` error
  * Fixes #4932

(cherry picked from commit 9a928d5ffb)

Co-authored-by: Teddy Caddy <tcaddy@users.noreply.github.com>
2022-07-07 22:37:04 +02:00
patchback[bot]
44009a72d3 fix lxd connection plugin inventory_hostname (#4912) (#4934)
* fixes lxd connection plugin issue #4886

remote_addr value was set to literal string 'inventory_hostname' instead
of the value for inventory_hostname variable. solution found in PR
ansible/ansible#77894

* changelog fragment - bugfix - lxd connection plugin

* correct changelog fragment

* Update changelogs/fragments/4886-fix-lxd-inventory-hostname.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* replace _host instance variable with calls to get 'remote_addr' option

suggested by felixfontein

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 905f9ec399)

Co-authored-by: antonc42 <antonc42@users.noreply.github.com>
2022-07-07 22:36:55 +02:00
patchback[bot]
ab176acacf Fix license filenames. (#4923) (#4924)
(cherry picked from commit 1c06e237c8)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-07-04 20:12:07 +00:00
patchback[bot]
0372fdf150 Do not ignore tld option in DSV lookup plugin (#4911) (#4920)
* Do not ignore tld option in DSV lookup plugin

* add changelog fragment

* Update changelogs/fragments/4911-dsv-honor-tld-option.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 7ffa2b525c)

Co-authored-by: andrii-zakurenyi <85106843+andrii-zakurenyi@users.noreply.github.com>
2022-07-04 20:59:28 +02:00
patchback[bot]
96c80fe478 Fix GetChassisPower when multiple chassis are present (#4902) (#4914)
* Fix GetChassisPower when multiple chassis are present

When multiple chassis are present, and one or more of those chassis do _not_
report power information, the GetChassisPower command will fail. To address
that, only report a failure if _all_ of the Chassis objects lack power
power reporting functionality.

Fixes #4901

* Update changelogs/fragments/4901-fix-redfish-chassispower.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit f60d12cf2d)

Co-authored-by: Jacob Yundt <jyundt@gmail.com>
2022-06-30 21:01:40 +02:00
patchback[bot]
bf42b48d5d Improve hwclock support test. (#4904) (#4908)
(cherry picked from commit 674b1da8bf)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-06-30 07:41:59 +02:00
patchback[bot]
29145b15de Fix command variable usage in CmdRunner (#4903) (#4905)
* Fix command variable usage

* Add changelog fragment for cmd-runner bugfix (#4903)

(cherry picked from commit 265c052c27)

Co-authored-by: Álvaro García Jaén <garciajaenalvaro@gmail.com>
2022-06-30 07:18:38 +02:00
Felix Fontein
35c4de1e80 Fix various module docs. (#4887) (#4889)
(cherry picked from commit 2dcdd2faca)
2022-06-22 23:01:49 +02:00
patchback[bot]
37d25436e8 Fix docs. (#4881) (#4883)
(cherry picked from commit aa4c994dfd)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-06-22 14:44:30 +02:00
patchback[bot]
2a36e20465 Added additional maintainers for TSS and DSV lookup plugins (#4870) (#4874)
(cherry picked from commit cb58867b57)

Co-authored-by: Ricky White <ricky@migusgroup.com>
2022-06-21 22:55:53 +02:00
patchback[bot]
b5fb390274 Disable opentelemetry installation for unit tests. (#4871) (#4872)
(cherry picked from commit 1eee35dffb)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-06-21 21:39:30 +02:00
patchback[bot]
bc0bb0cfc5 Fix CI due to pycdlib dropping Python 2 support. (#4865) (#4868)
(cherry picked from commit 297de3011c)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-06-21 15:03:49 +02:00
Felix Fontein
b85107e289 Next expected release is 4.8.4. 2022-06-20 21:42:25 +02:00
Felix Fontein
aa877fe0fb Release 4.8.3. 2022-06-20 20:37:43 +02:00
Felix Fontein
86f06cac4c Prepare 4.8.3 release. 2022-06-20 20:28:30 +02:00
patchback[bot]
b97737affd Remove myself from team_suse (#4860) (#4861)
I do not use `zypper` anymore and can thus not help with issues regarding the zypper module.

(cherry picked from commit 652392be27)

Co-authored-by: Dan Čermák <45594031+dcermak@users.noreply.github.com>
2022-06-20 19:04:28 +02:00
patchback[bot]
f8650f8d85 sudoers: fix handling of state: absent (#4852) (#4853) (#4857)
* sudoers: fix handling of state: absent (#4852)

* typo fixes

(cherry picked from commit 44e21dd407)

Co-authored-by: s-hamann <10639154+s-hamann@users.noreply.github.com>
2022-06-19 15:48:53 +02:00
Felix Fontein
48fbd69835 Skip Ansible 2.9 coverage reporting with new AZP container. (#4841)
ci_coverage
2022-06-14 21:31:43 +02:00
patchback[bot]
141f32c78b redhat_subscription: call 'remove' instead of 'unsubscribe' (#4809) (#4837)
The 'unsubscribe' command of 'subscription-manager' was deprecated
already in subscription-manager 1.11.3, shipped with RHEL 5.11.
As it was removed in subscription-manager 1.29.x, unsubscribing from
pools was thus broken.

The simple fix is to call the proper command, 'remove'.

(cherry picked from commit a45b90e93f)

Co-authored-by: Pino Toscano <ptoscano@redhat.com>
2022-06-14 07:53:46 +02:00
patchback[bot]
b3c99aea72 Bump AZP container version. (#4819) (#4825)
(cherry picked from commit 42c5024b0b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-06-13 21:16:31 +02:00
patchback[bot]
3356c77f81 proxmox_kvm: fix typos (#4798) (#4831)
* Typofix

* Update plugins/modules/cloud/misc/proxmox_kvm.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit e51221896b)

Co-authored-by: Wouter Schoot <wouter@schoot.org>
2022-06-13 12:13:13 +02:00
patchback[bot]
23859e0ec3 nmcli: do not convert undefined lists to empty strings (#4813) (#4833)
* do not convert undefined lists to empty strings

* add changelog fragment (#4813)

(cherry picked from commit 72faebffc6)

Co-authored-by: geichelberger <35195803+geichelberger@users.noreply.github.com>
2022-06-13 12:13:02 +02:00
patchback[bot]
79d85cc83c Ensure managed sudoers config files have 0440 permissions (#4814) (#4827)
* Ensure sudoers config files are created with 0440 permissions to appease visudo validation

* Remove change not required by the bugfix

* Add changelog fragment for 4814 sudoers file permissions

* Update changelogs/fragments/4814-sudoers-file-permissions.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Have less oct casting

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 2d1e58663c)

Co-authored-by: Jon Ellis <ellis.jp@gmail.com>
2022-06-12 08:59:48 +02:00
patchback[bot]
a11b8fd517 requests drops support for older Python (#4818) (#4821)
* requests drops support for older Python.

* Work around CentOS 6 pip bugs.

(cherry picked from commit c8a2c5d375)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-06-12 08:15:10 +02:00
patchback[bot]
8a6b673fce CI: Disable repo URL test for OpenSuSE 15.4 (#4805) (#4807)
* Disable repo URL test for OpenSuSE 15.4.

* Forgot some places.

(cherry picked from commit dd24c98fe5)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-06-08 22:21:44 +02:00
patchback[bot]
7ec8b50361 ModuleHelperException module utils - improved exception initialization (#4755) (#4785)
* ModuleHelperException module utils - improved exception initialization

* added changelog fragment

* Update plugins/module_utils/mh/exceptions.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit b87edda3c7)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
2022-06-06 10:58:28 +02:00
Felix Fontein
d91c6fedc2 Next expected release is 4.8.3. 2022-06-06 10:26:45 +02:00
157 changed files with 1143 additions and 560 deletions

View File

@@ -47,20 +47,20 @@ variables:
resources:
containers:
- container: default
image: quay.io/ansible/azure-pipelines-test-container:1.9.0
image: quay.io/ansible/azure-pipelines-test-container:3.0.0
pool: Standard
stages:
### Sanity
- stage: Sanity_devel
displayName: Sanity devel
- stage: Sanity_2_14
displayName: Sanity 2.14
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: devel/sanity/{0}
testFormat: 2.14/sanity/{0}
targets:
- test: 1
- test: 2
@@ -133,14 +133,14 @@ stages:
- test: 3
- test: 4
### Units
- stage: Units_devel
displayName: Units devel
- stage: Units_2_14
displayName: Units 2.14
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: devel/units/{0}/1
testFormat: 2.14/units/{0}/1
targets:
- test: 2.7
- test: 3.5
@@ -211,13 +211,13 @@ stages:
- test: 3.5
## Remote
- stage: Remote_devel
displayName: Remote devel
- stage: Remote_2_14
displayName: Remote 2.14
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/{0}
testFormat: 2.14/{0}
targets:
- name: macOS 12.0
test: macos/12.0
@@ -317,18 +317,16 @@ stages:
- 2
### Docker
- stage: Docker_devel
displayName: Docker devel
- stage: Docker_2_14
displayName: Docker 2.14
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux/{0}
testFormat: 2.14/linux/{0}
targets:
- name: CentOS 7
test: centos7
- name: Fedora 35
test: fedora35
- name: Fedora 36
test: fedora36
- name: openSUSE 15
@@ -424,13 +422,13 @@ stages:
- 3
### Community Docker
- stage: Docker_community_devel
displayName: Docker (community images) devel
- stage: Docker_community_2_14
displayName: Docker (community images) 2.14
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux-community/{0}
testFormat: 2.14/linux-community/{0}
targets:
- name: Debian Bullseye
test: debian-bullseye/3.9
@@ -444,14 +442,14 @@ stages:
- 3
### Cloud
- stage: Cloud_devel
displayName: Cloud devel
- stage: Cloud_2_14
displayName: Cloud 2.14
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: devel/cloud/{0}/1
testFormat: 2.14/cloud/{0}/1
targets:
- test: 2.7
- test: '3.10'
@@ -508,32 +506,32 @@ stages:
- stage: Summary
condition: succeededOrFailed()
dependsOn:
- Sanity_devel
- Sanity_2_14
- Sanity_2_9
- Sanity_2_10
- Sanity_2_11
- Sanity_2_12
- Sanity_2_13
- Units_devel
- Units_2_14
- Units_2_9
- Units_2_10
- Units_2_11
- Units_2_12
- Units_2_13
- Remote_devel
- Remote_2_14
- Remote_2_9
- Remote_2_10
- Remote_2_11
- Remote_2_12
- Remote_2_13
- Docker_devel
- Docker_2_14
- Docker_2_9
- Docker_2_10
- Docker_2_11
- Docker_2_12
- Docker_2_13
- Docker_community_devel
- Cloud_devel
- Docker_community_2_14
- Cloud_2_14
- Cloud_2_9
- Cloud_2_10
- Cloud_2_11

View File

@@ -9,6 +9,10 @@ PATH="${PWD}/bin:${PATH}"
mkdir "${agent_temp_directory}/coverage/"
if [[ "$(ansible --version)" =~ \ 2\.9\. ]]; then
exit
fi
options=(--venv --venv-system-site-packages --color -v)
ansible-test coverage combine --group-by command --export "${agent_temp_directory}/coverage/" "${options[@]}"

View File

@@ -5,6 +5,10 @@ set -o pipefail -eu
PATH="${PWD}/bin:${PATH}"
if [[ "$(ansible --version)" =~ \ 2\.9\. ]]; then
exit
fi
if ! ansible-test --help >/dev/null 2>&1; then
# Install the devel version of ansible-test for generating code coverage reports.
# This is only used by Ansible Collections, which are typically tested against multiple Ansible versions (in separate jobs).

10
.github/BOTMETA.yml vendored
View File

@@ -220,7 +220,8 @@ files:
$lookups/dnstxt.py:
maintainers: jpmens
$lookups/dsv.py:
maintainers: amigus endlesstrax
maintainers: delineaKrehl tylerezimmerman
ignore: amigus
$lookups/etcd3.py:
maintainers: eric-belhomme
$lookups/etcd.py:
@@ -257,7 +258,8 @@ files:
maintainers: RevBits
$lookups/shelvefile.py: {}
$lookups/tss.py:
maintainers: amigus endlesstrax
maintainers: delineaKrehl tylerezimmerman
ignore: amigus
$module_utils/:
labels: module_utils
$module_utils/gitlab.py:
@@ -921,7 +923,7 @@ files:
$modules/packaging/os/xbps.py:
maintainers: dinoocch the-maldridge
$modules/packaging/os/yum_versionlock.py:
maintainers: florianpaulhoberg aminvakil
maintainers: gyptazy aminvakil
$modules/packaging/os/zypper.py:
maintainers: $team_suse
labels: zypper
@@ -1287,5 +1289,5 @@ macros:
team_rhn: FlossWare alikins barnabycourt vritant
team_scaleway: remyleone abarbare
team_solaris: bcoca fishman jasperla jpdasma mator scathatheworm troy2914 xen0l
team_suse: commel dcermak evrardjp lrupp toabctl AnderEnder alxgu andytom sealor
team_suse: commel evrardjp lrupp toabctl AnderEnder alxgu andytom sealor
team_virt: joshainglis karmab tleguern Thulium-Drake Ajpantuso

View File

@@ -6,6 +6,134 @@ Community General Release Notes
This changelog describes changes after version 3.0.0.
v4.8.8
======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- archive - avoid crash when ``lzma`` is not present and ``format`` is not ``xz`` (https://github.com/ansible-collections/community.general/pull/5393).
- opentelemetry callback plugin - support opentelemetry-api 1.13.0 that removed support for ``_time_ns`` (https://github.com/ansible-collections/community.general/pull/5342).
- pfexec become plugin - remove superflous quotes preventing exe wrap from working as expected (https://github.com/ansible-collections/community.general/issues/3671, https://github.com/ansible-collections/community.general/pull/3889).
- pkgng - fix case when ``pkg`` fails when trying to upgrade all packages (https://github.com/ansible-collections/community.general/issues/5363).
- redhat_subscription - make module idempotent when ``pool_ids`` are used (https://github.com/ansible-collections/community.general/issues/5313).
- xenserver_facts - fix broken ``AnsibleModule`` call that prevented the module from working at all (https://github.com/ansible-collections/community.general/pull/5383).
v4.8.7
======
Release Summary
---------------
Regular bugfix release.
Minor Changes
-------------
- gitlab module util - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_branch - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_deploy_key - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_group - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_group_members - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_group_variable - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_hook - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_project - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_project_members - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_project_variable - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_protected_branch - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_runner - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_user - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
Bugfixes
--------
- locale_gen - fix support for Ubuntu (https://github.com/ansible-collections/community.general/issues/5281).
- tss lookup plugin - adding support for updated Delinea library (https://github.com/DelineaXPM/python-tss-sdk/issues/9, https://github.com/ansible-collections/community.general/pull/5151).
v4.8.6
======
Release Summary
---------------
Bugfix and maintenance release.
Minor Changes
-------------
- Added MIT license as ``MIT-license.txt`` for ``tests/unit/plugins/modules/packaging/language/test_gem.py`` (https://github.com/ansible-collections/community.general/pull/5065, https://github.com/ansible-collections/community.general/pull/5072).
Bugfixes
--------
- apache2_mod_proxy - avoid crash when reporting inability to parse balancer_member_page HTML caused by using an undefined variable in the error message (https://github.com/ansible-collections/community.general/pull/5111).
- dnsimple_info - correctly report missing library as ``requests`` and not ``another_library`` (https://github.com/ansible-collections/community.general/pull/5111).
- funcd connection plugin - fix signature of ``exec_command`` (https://github.com/ansible-collections/community.general/pull/5111).
- manageiq_alert_profiles - avoid crash when reporting unknown profile caused by trying to return an undefined variable (https://github.com/ansible-collections/community.general/pull/5111).
- nsupdate - compatibility with NS records (https://github.com/ansible-collections/community.general/pull/5112).
- packet_ip_subnet - fix error reporting in case of invalid CIDR prefix lengths (https://github.com/ansible-collections/community.general/pull/5111).
- pip_package_info - remove usage of global variable (https://github.com/ansible-collections/community.general/pull/5111).
v4.8.5
======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- pacman - fixed name resolution of URL packages (https://github.com/ansible-collections/community.general/pull/4959).
- proxmox - fix error handling when getting VM by name when ``state=absent`` (https://github.com/ansible-collections/community.general/pull/4945).
- proxmox inventory plugin - fix crash when ``enabled=1`` is used in agent config string (https://github.com/ansible-collections/community.general/pull/4910).
- proxmox_kvm - fix error handling when getting VM by name when ``state=absent`` (https://github.com/ansible-collections/community.general/pull/4945).
- slack - fix incorrect channel prefix ``#`` caused by incomplete pattern detection by adding ``G0`` and ``GF`` as channel ID patterns (https://github.com/ansible-collections/community.general/pull/5019).
v4.8.4
======
Release Summary
---------------
Regular bugfix release.
Bugfixes
--------
- cmd_runner module utils - fix bug caused by using the ``command`` variable instead of ``self.command`` when looking for binary path (https://github.com/ansible-collections/community.general/pull/4903).
- dsv lookup plugin - do not ignore the ``tld`` parameter (https://github.com/ansible-collections/community.general/pull/4911).
- lxd connection plugin - fix incorrect ``inventory_hostname`` in ``remote_addr``. This is needed for compatibility with ansible-core 2.13 (https://github.com/ansible-collections/community.general/issues/4886).
- rax_clb_nodes - fix code to be compatible with Python 3 (https://github.com/ansible-collections/community.general/pull/4933).
- redfish_info - fix to ``GetChassisPower`` to correctly report power information when multiple chassis exist, but not all chassis report power information (https://github.com/ansible-collections/community.general/issues/4901).
v4.8.3
======
Release Summary
---------------
Bugfix release.
Minor Changes
-------------
- ModuleHelper module utils - improved ``ModuleHelperException``, using ``to_native()`` for the exception message (https://github.com/ansible-collections/community.general/pull/4755).
Bugfixes
--------
- nmcli - fix error caused by adding undefined module arguments for list options (https://github.com/ansible-collections/community.general/issues/4373, https://github.com/ansible-collections/community.general/pull/4813).
- redhat_subscription - fix unsubscribing on RHEL 9 (https://github.com/ansible-collections/community.general/issues/4741).
- sudoers - ensure sudoers config files are created with the permissions requested by sudoers (0440) (https://github.com/ansible-collections/community.general/pull/4814).
- sudoers - fix incorrect handling of ``state: absent`` (https://github.com/ansible-collections/community.general/issues/4852).
v4.8.2
======

9
MIT-license.txt Normal file
View File

@@ -0,0 +1,9 @@
MIT License
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -17,7 +17,7 @@ If you encounter abusive behavior violating the [Ansible Code of Conduct](https:
## Tested with Ansible
Tested with the current Ansible 2.9, ansible-base 2.10, ansible-core 2.11, ansible-core 2.12, ansible-core 2.13 releases and the current development version of ansible-core. Ansible versions before 2.9.10 are not supported.
Tested with the current Ansible 2.9, ansible-base 2.10, ansible-core 2.11, ansible-core 2.12, ansible-core 2.13, and ansible-core 2.14 releases of ansible-core. Ansible versions before 2.9.10 are not supported.
## External requirements

View File

@@ -1835,3 +1835,147 @@ releases:
- 4733-redis-fail.yml
- simplified-bsd-license.yml
release_date: '2022-06-06'
4.8.3:
changes:
bugfixes:
- nmcli - fix error caused by adding undefined module arguments for list options
(https://github.com/ansible-collections/community.general/issues/4373, https://github.com/ansible-collections/community.general/pull/4813).
- redhat_subscription - fix unsubscribing on RHEL 9 (https://github.com/ansible-collections/community.general/issues/4741).
- sudoers - ensure sudoers config files are created with the permissions requested
by sudoers (0440) (https://github.com/ansible-collections/community.general/pull/4814).
- 'sudoers - fix incorrect handling of ``state: absent`` (https://github.com/ansible-collections/community.general/issues/4852).'
minor_changes:
- ModuleHelper module utils - improved ``ModuleHelperException``, using ``to_native()``
for the exception message (https://github.com/ansible-collections/community.general/pull/4755).
release_summary: Bugfix release.
fragments:
- 4.8.3.yml
- 4755-mhexception-improvement.yml
- 4809-redhat_subscription-unsubscribe.yaml
- 4813-fix-nmcli-convert-list.yaml
- 4814-sudoers-file-permissions.yml
- 4852-sudoers-state-absent.yml
release_date: '2022-06-20'
4.8.4:
changes:
bugfixes:
- cmd_runner module utils - fix bug caused by using the ``command`` variable
instead of ``self.command`` when looking for binary path (https://github.com/ansible-collections/community.general/pull/4903).
- dsv lookup plugin - do not ignore the ``tld`` parameter (https://github.com/ansible-collections/community.general/pull/4911).
- lxd connection plugin - fix incorrect ``inventory_hostname`` in ``remote_addr``.
This is needed for compatibility with ansible-core 2.13 (https://github.com/ansible-collections/community.general/issues/4886).
- rax_clb_nodes - fix code to be compatible with Python 3 (https://github.com/ansible-collections/community.general/pull/4933).
- redfish_info - fix to ``GetChassisPower`` to correctly report power information
when multiple chassis exist, but not all chassis report power information
(https://github.com/ansible-collections/community.general/issues/4901).
release_summary: Regular bugfix release.
fragments:
- 4.8.4.yml
- 4886-fix-lxd-inventory-hostname.yml
- 4901-fix-redfish-chassispower.yml
- 4903-cmdrunner-bugfix.yaml
- 4911-dsv-honor-tld-option.yml
- 4933-fix-rax-clb-nodes.yaml
release_date: '2022-07-12'
4.8.5:
changes:
bugfixes:
- pacman - fixed name resolution of URL packages (https://github.com/ansible-collections/community.general/pull/4959).
- proxmox - fix error handling when getting VM by name when ``state=absent``
(https://github.com/ansible-collections/community.general/pull/4945).
- proxmox inventory plugin - fix crash when ``enabled=1`` is used in agent config
string (https://github.com/ansible-collections/community.general/pull/4910).
- proxmox_kvm - fix error handling when getting VM by name when ``state=absent``
(https://github.com/ansible-collections/community.general/pull/4945).
- slack - fix incorrect channel prefix ``#`` caused by incomplete pattern detection
by adding ``G0`` and ``GF`` as channel ID patterns (https://github.com/ansible-collections/community.general/pull/5019).
release_summary: Regular bugfix release.
fragments:
- 4.8.5.yml
- 4910-fix-for-agent-enabled.yml
- 4945-fix-get_vm-int-parse-handling.yaml
- 4959-pacman-fix-url-packages-name.yaml
- 5019-slack-support-more-groups.yml
release_date: '2022-08-01'
4.8.6:
changes:
bugfixes:
- apache2_mod_proxy - avoid crash when reporting inability to parse balancer_member_page
HTML caused by using an undefined variable in the error message (https://github.com/ansible-collections/community.general/pull/5111).
- dnsimple_info - correctly report missing library as ``requests`` and not ``another_library``
(https://github.com/ansible-collections/community.general/pull/5111).
- funcd connection plugin - fix signature of ``exec_command`` (https://github.com/ansible-collections/community.general/pull/5111).
- manageiq_alert_profiles - avoid crash when reporting unknown profile caused
by trying to return an undefined variable (https://github.com/ansible-collections/community.general/pull/5111).
- nsupdate - compatibility with NS records (https://github.com/ansible-collections/community.general/pull/5112).
- packet_ip_subnet - fix error reporting in case of invalid CIDR prefix lengths
(https://github.com/ansible-collections/community.general/pull/5111).
- pip_package_info - remove usage of global variable (https://github.com/ansible-collections/community.general/pull/5111).
minor_changes:
- Added MIT license as ``MIT-license.txt`` for ``tests/unit/plugins/modules/packaging/language/test_gem.py``
(https://github.com/ansible-collections/community.general/pull/5065, https://github.com/ansible-collections/community.general/pull/5072).
release_summary: Bugfix and maintenance release.
fragments:
- 4.8.6.yml
- 5111-fixes.yml
- 5112-fix-nsupdate-ns-entry.yaml
- licenses.yml
release_date: '2022-08-22'
4.8.7:
changes:
bugfixes:
- locale_gen - fix support for Ubuntu (https://github.com/ansible-collections/community.general/issues/5281).
- tss lookup plugin - adding support for updated Delinea library (https://github.com/DelineaXPM/python-tss-sdk/issues/9,
https://github.com/ansible-collections/community.general/pull/5151).
minor_changes:
- gitlab module util - minor refactor when checking for installed dependency
(https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_branch - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_deploy_key - minor refactor when checking for installed dependency
(https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_group - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_group_members - minor refactor when checking for installed dependency
(https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_group_variable - minor refactor when checking for installed dependency
(https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_hook - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_project - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_project_members - minor refactor when checking for installed dependency
(https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_project_variable - minor refactor when checking for installed dependency
(https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_protected_branch - minor refactor when checking for installed dependency
(https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_runner - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
- gitlab_user - minor refactor when checking for installed dependency (https://github.com/ansible-collections/community.general/pull/5259).
release_summary: Regular bugfix release.
fragments:
- 4.8.7.yml
- 5151-add-delinea-support-tss-lookup.yml
- 5259-gitlab-imports.yaml
- 5282-locale_gen.yaml
release_date: '2022-10-03'
4.8.8:
changes:
bugfixes:
- archive - avoid crash when ``lzma`` is not present and ``format`` is not ``xz``
(https://github.com/ansible-collections/community.general/pull/5393).
- opentelemetry callback plugin - support opentelemetry-api 1.13.0 that removed
support for ``_time_ns`` (https://github.com/ansible-collections/community.general/pull/5342).
- pfexec become plugin - remove superflous quotes preventing exe wrap from working
as expected (https://github.com/ansible-collections/community.general/issues/3671,
https://github.com/ansible-collections/community.general/pull/3889).
- pkgng - fix case when ``pkg`` fails when trying to upgrade all packages (https://github.com/ansible-collections/community.general/issues/5363).
- redhat_subscription - make module idempotent when ``pool_ids`` are used (https://github.com/ansible-collections/community.general/issues/5313).
- xenserver_facts - fix broken ``AnsibleModule`` call that prevented the module
from working at all (https://github.com/ansible-collections/community.general/pull/5383).
release_summary: Regular bugfix release.
fragments:
- 3671-illumos-pfexec.yml
- 4.8.8.yml
- 5313-fix-redhat_subscription-idempotency-pool_ids.yml
- 5342-opentelemetry_bug_fix_opentelemetry-api-1.13.yml
- 5369-pkgng-fix-update-all.yaml
- 5383-xenserver_facts.yml
- 5393-archive.yml
release_date: '2022-10-24'

View File

@@ -1,6 +1,6 @@
namespace: community
name: general
version: 4.8.2
version: 4.8.8
readme: README.md
authors:
- Ansible (https://github.com/ansible)

View File

@@ -101,4 +101,4 @@ class BecomeModule(BecomeBase):
flags = self.get_option('become_flags')
noexe = not self.get_option('wrap_exe')
return '%s %s "%s"' % (exe, flags, self._build_success_command(cmd, shell, noexe=noexe))
return '%s %s %s' % (exe, flags, self._build_success_command(cmd, shell, noexe=noexe))

View File

@@ -8,9 +8,9 @@ DOCUMENTATION = """
name: sudosu
short_description: Run tasks using sudo su -
description:
- This become plugins allows your remote/login user to execute commands as another user via the C(sudo) and C(su) utilities combined.
- This become plugin allows your remote/login user to execute commands as another user via the C(sudo) and C(su) utilities combined.
author:
- Dag Wieers (@dagwieers)
- Dag Wieers (@dagwieers)
version_added: 2.4.0
options:
become_user:

View File

@@ -232,13 +232,13 @@ class CallbackModule(CallbackModule_default):
# Remove non-essential attributes
for attr in self.removed_attributes:
if attr in result:
del(result[attr])
del result[attr]
# Remove empty attributes (list, dict, str)
for attr in result.copy():
if isinstance(result[attr], (MutableSequence, MutableMapping, binary_type, text_type)):
if not result[attr]:
del(result[attr])
del result[attr]
def _handle_exceptions(self, result):
if 'exception' in result:

View File

@@ -12,7 +12,7 @@ DOCUMENTATION = '''
type: notification
short_description: write playbook output to log file
description:
- This callback writes playbook output to a file per host in the `/var/log/ansible/hosts` directory
- This callback writes playbook output to a file per host in the C(/var/log/ansible/hosts) directory
requirements:
- Whitelist in configuration
- A writeable /var/log/ansible/hosts directory by the user executing Ansible on the controller

View File

@@ -94,13 +94,32 @@ try:
from opentelemetry.sdk.trace.export import (
BatchSpanProcessor
)
from opentelemetry.util._time import _time_ns
# Support for opentelemetry-api <= 1.12
try:
from opentelemetry.util._time import _time_ns
except ImportError as imp_exc:
OTEL_LIBRARY_TIME_NS_ERROR = imp_exc
else:
OTEL_LIBRARY_TIME_NS_ERROR = None
except ImportError as imp_exc:
OTEL_LIBRARY_IMPORT_ERROR = imp_exc
OTEL_LIBRARY_TIME_NS_ERROR = imp_exc
else:
OTEL_LIBRARY_IMPORT_ERROR = None
if sys.version_info >= (3, 7):
time_ns = time.time_ns
elif not OTEL_LIBRARY_TIME_NS_ERROR:
time_ns = _time_ns
else:
def time_ns():
# Support versions older than 3.7 with opentelemetry-api > 1.12
return int(time.time() * 1e9)
class TaskData:
"""
Data about an individual task.
@@ -112,10 +131,7 @@ class TaskData:
self.path = path
self.play = play
self.host_data = OrderedDict()
if sys.version_info >= (3, 7):
self.start = time.time_ns()
else:
self.start = _time_ns()
self.start = time_ns()
self.action = action
self.args = args
@@ -140,10 +156,7 @@ class HostData:
self.name = name
self.status = status
self.result = result
if sys.version_info >= (3, 7):
self.finish = time.time_ns()
else:
self.finish = _time_ns()
self.finish = time_ns()
class OpenTelemetrySource(object):

View File

@@ -14,9 +14,9 @@ DOCUMENTATION = '''
- set as main display callback
short_description: only print certain tasks
description:
- This callback only prints tasks that have been tagged with `print_action` or that have failed.
- This callback only prints tasks that have been tagged with C(print_action) or that have failed.
This allows operators to focus on the tasks that provide value only.
- Tasks that are not printed are placed with a '.'.
- Tasks that are not printed are placed with a C(.).
- If you increase verbosity all tasks are printed.
options:
nocolor:

View File

@@ -63,7 +63,7 @@ class Connection(ConnectionBase):
self.client = fc.Client(self.host)
return self
def exec_command(self, cmd, become_user=None, sudoable=False, executable='/bin/sh', in_data=None):
def exec_command(self, cmd, in_data=None, sudoable=True):
""" run a command on the remote minion """
if in_data:

View File

@@ -18,6 +18,7 @@ DOCUMENTATION = '''
- Container identifier.
default: inventory_hostname
vars:
- name: inventory_hostname
- name: ansible_host
- name: ansible_lxd_host
executable:
@@ -61,7 +62,6 @@ class Connection(ConnectionBase):
def __init__(self, play_context, new_stdin, *args, **kwargs):
super(Connection, self).__init__(play_context, new_stdin, *args, **kwargs)
self._host = self._play_context.remote_addr
try:
self._lxc_cmd = get_bin_path("lxc")
except ValueError:
@@ -75,14 +75,14 @@ class Connection(ConnectionBase):
super(Connection, self)._connect()
if not self._connected:
self._display.vvv(u"ESTABLISH LXD CONNECTION FOR USER: root", host=self._host)
self._display.vvv(u"ESTABLISH LXD CONNECTION FOR USER: root", host=self.get_option('remote_addr'))
self._connected = True
def exec_command(self, cmd, in_data=None, sudoable=True):
""" execute a command on the lxd host """
super(Connection, self).exec_command(cmd, in_data=in_data, sudoable=sudoable)
self._display.vvv(u"EXEC {0}".format(cmd), host=self._host)
self._display.vvv(u"EXEC {0}".format(cmd), host=self.get_option('remote_addr'))
local_cmd = [self._lxc_cmd]
if self.get_option("project"):
@@ -104,10 +104,10 @@ class Connection(ConnectionBase):
stderr = to_text(stderr)
if stderr == "error: Container is not running.\n":
raise AnsibleConnectionFailure("container not running: %s" % self._host)
raise AnsibleConnectionFailure("container not running: %s" % self.get_option('remote_addr'))
if stderr == "error: not found\n":
raise AnsibleConnectionFailure("container not found: %s" % self._host)
raise AnsibleConnectionFailure("container not found: %s" % self.get_option('remote_addr'))
return process.returncode, stdout, stderr
@@ -115,7 +115,7 @@ class Connection(ConnectionBase):
""" put a file from local to lxd """
super(Connection, self).put_file(in_path, out_path)
self._display.vvv(u"PUT {0} TO {1}".format(in_path, out_path), host=self._host)
self._display.vvv(u"PUT {0} TO {1}".format(in_path, out_path), host=self.get_option('remote_addr'))
if not os.path.isfile(to_bytes(in_path, errors='surrogate_or_strict')):
raise AnsibleFileNotFound("input path is not a file: %s" % in_path)
@@ -138,7 +138,7 @@ class Connection(ConnectionBase):
""" fetch a file from lxd to local """
super(Connection, self).fetch_file(in_path, out_path)
self._display.vvv(u"FETCH {0} TO {1}".format(in_path, out_path), host=self._host)
self._display.vvv(u"FETCH {0} TO {1}".format(in_path, out_path), host=self.get_option('remote_addr'))
local_cmd = [self._lxc_cmd]
if self.get_option("project"):

View File

@@ -51,10 +51,16 @@ DOCUMENTATION = '''
type: boolean
default: false
requirements:
- jc (https://github.com/kellyjonbrazil/jc)
- jc installed as a Python library (U(https://pypi.org/project/jc/))
'''
EXAMPLES = '''
- name: Install the prereqs of the jc filter (jc Python package) on the Ansible controller
delegate_to: localhost
ansible.builtin.pip:
name: jc
state: present
- name: Run command
ansible.builtin.command: uname -a
register: result
@@ -107,15 +113,19 @@ def jc(data, parser, quiet=True, raw=False):
dictionary or list of dictionaries
Example:
- name: run date command
hosts: ubuntu
tasks:
- shell: date
- name: install the prereqs of the jc filter (jc Python package) on the Ansible controller
delegate_to: localhost
ansible.builtin.pip:
name: jc
state: present
- ansible.builtin.shell: date
register: result
- set_fact:
- ansible.builtin.set_fact:
myvar: "{{ result.stdout | community.general.jc('date') }}"
- debug:
- ansible.builtin.debug:
msg: "{{ myvar }}"
produces:
@@ -137,7 +147,7 @@ def jc(data, parser, quiet=True, raw=False):
"""
if not HAS_LIB:
raise AnsibleError('You need to install "jc" prior to running jc filter')
raise AnsibleError('You need to install "jc" as a Python library on the Ansible controller prior to running jc filter')
try:
jc_parser = importlib.import_module('jc.parsers.' + parser)

View File

@@ -400,12 +400,20 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
properties[parsed_key] = [tag.strip() for tag in stripped_value.split(",")]
# The first field in the agent string tells you whether the agent is enabled
# the rest of the comma separated string is extra config for the agent
if config == 'agent' and int(value.split(',')[0]):
agent_iface_value = self._get_agent_network_interfaces(node, vmid, vmtype)
if agent_iface_value:
agent_iface_key = self.to_safe('%s%s' % (key, "_interfaces"))
properties[agent_iface_key] = agent_iface_value
# the rest of the comma separated string is extra config for the agent.
# In some (newer versions of proxmox) instances it can be 'enabled=1'.
if config == 'agent':
agent_enabled = 0
try:
agent_enabled = int(value.split(',')[0])
except ValueError:
if value.split(',')[0] == "enabled=1":
agent_enabled = 1
if agent_enabled:
agent_iface_value = self._get_agent_network_interfaces(node, vmid, vmtype)
if agent_iface_value:
agent_iface_key = self.to_safe('%s%s' % (key, "_interfaces"))
properties[agent_iface_key] = agent_iface_value
if config == 'lxc':
out_val = {}

View File

@@ -16,7 +16,7 @@ DOCUMENTATION = '''
The lookup order mirrors the one from Chef, all folders in the base path are walked back looking for the following configuration
file in order : .chef/knife.rb, ~/.chef/knife.rb, /etc/chef/client.rb"
requirements:
- "pychef (python library https://pychef.readthedocs.io `pip install pychef`)"
- "pychef (L(Python library, https://pychef.readthedocs.io), C(pip install pychef))"
options:
name:
description:

View File

@@ -122,6 +122,7 @@ class LookupModule(LookupBase):
"tenant": self.get_option("tenant"),
"client_id": self.get_option("client_id"),
"client_secret": self.get_option("client_secret"),
"tld": self.get_option("tld"),
"url_template": self.get_option("url_template"),
}
)

View File

@@ -170,19 +170,29 @@ try:
HAS_TSS_SDK = True
except ImportError:
SecretServer = None
SecretServerError = None
HAS_TSS_SDK = False
try:
from delinea.secrets.server import SecretServer, SecretServerError
HAS_TSS_SDK = True
except ImportError:
SecretServer = None
SecretServerError = None
HAS_TSS_SDK = False
try:
from thycotic.secrets.server import PasswordGrantAuthorizer, DomainPasswordGrantAuthorizer, AccessTokenAuthorizer
HAS_TSS_AUTHORIZER = True
except ImportError:
PasswordGrantAuthorizer = None
DomainPasswordGrantAuthorizer = None
AccessTokenAuthorizer = None
HAS_TSS_AUTHORIZER = False
try:
from delinea.secrets.server import PasswordGrantAuthorizer, DomainPasswordGrantAuthorizer, AccessTokenAuthorizer
HAS_TSS_AUTHORIZER = True
except ImportError:
PasswordGrantAuthorizer = None
DomainPasswordGrantAuthorizer = None
AccessTokenAuthorizer = None
HAS_TSS_AUTHORIZER = False
display = Display()

View File

@@ -191,7 +191,7 @@ class CmdRunner(object):
environ_update = {}
self.environ_update = environ_update
self.command[0] = module.get_bin_path(command[0], opt_dirs=path_prefix, required=True)
self.command[0] = module.get_bin_path(self.command[0], opt_dirs=path_prefix, required=True)
for mod_param_name, spec in iteritems(module.argument_spec):
if mod_param_name not in self.arg_formats:

View File

@@ -13,10 +13,9 @@ from ansible.module_utils.common.text.converters import to_native
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
try:
from urllib import quote_plus # Python 2.X
from urlparse import urljoin
except ImportError:
from urllib.parse import quote_plus, urljoin # Python 3+
from urllib.parse import urljoin # Python 3+
import traceback
@@ -26,6 +25,7 @@ try:
import requests
HAS_GITLAB_PACKAGE = True
except Exception:
gitlab = None
GITLAB_IMP_ERR = traceback.format_exc()
HAS_GITLAB_PACKAGE = False
@@ -63,6 +63,14 @@ def find_group(gitlab_instance, identifier):
return project
def ensure_gitlab_package(module):
if not HAS_GITLAB_PACKAGE:
module.fail_json(
msg=missing_required_lib("python-gitlab", url='https://python-gitlab.readthedocs.io/en/stable/'),
exception=GITLAB_IMP_ERR
)
def gitlab_authentication(module):
gitlab_url = module.params['api_url']
validate_certs = module.params['validate_certs']
@@ -72,8 +80,7 @@ def gitlab_authentication(module):
gitlab_oauth_token = module.params['api_oauth_token']
gitlab_job_token = module.params['api_job_token']
if not HAS_GITLAB_PACKAGE:
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
ensure_gitlab_package(module)
try:
# python-gitlab library remove support for username/password authentication since 1.13.0

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021-2022 Hewlett Packard Enterprise, Inc. All rights reserved.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type
@@ -91,7 +91,7 @@ class iLORedfishUtils(RedfishUtils):
data = response['data']
ntp_list = data[setkey]
if(len(ntp_list) == 2):
if len(ntp_list) == 2:
ntp_list.pop(0)
ntp_list.append(mgr_attributes['mgr_attr_value'])

View File

@@ -78,7 +78,7 @@ def memset_api_call(api_key, api_method, payload=None):
if msg is None:
msg = response.json()
return(has_failed, msg, response)
return has_failed, msg, response
def check_zone_domain(data, domain):
@@ -92,7 +92,7 @@ def check_zone_domain(data, domain):
if zone_domain['domain'] == domain:
exists = True
return(exists)
return exists
def check_zone(data, name):
@@ -109,7 +109,7 @@ def check_zone(data, name):
if counter == 1:
exists = True
return(exists, counter)
return exists, counter
def get_zone_id(zone_name, current_zones):
@@ -135,4 +135,4 @@ def get_zone_id(zone_name, current_zones):
zone_id = None
msg = 'Zone ID could not be returned as duplicate zone names were detected'
return(zone_exists, msg, counter, zone_id)
return zone_exists, msg, counter, zone_id

View File

@@ -6,17 +6,13 @@
from __future__ import absolute_import, division, print_function
__metaclass__ = type
from ansible.module_utils.common.text.converters import to_native
class ModuleHelperException(Exception):
@staticmethod
def _get_remove(key, kwargs):
if key in kwargs:
result = kwargs[key]
del kwargs[key]
return result
return None
def __init__(self, *args, **kwargs):
self.msg = self._get_remove('msg', kwargs) or "Module failed with exception: {0}".format(self)
self.update_output = self._get_remove('update_output', kwargs) or {}
def __init__(self, msg, update_output=None, *args, **kwargs):
self.msg = to_native(msg or "Module failed with exception: {0}".format(self))
if update_output is None:
update_output = {}
self.update_output = update_output
super(ModuleHelperException, self).__init__(*args)

View File

@@ -122,8 +122,7 @@ def rax_find_image(module, rax_module, image, exit=True):
except ValueError:
try:
image = cs.images.find(human_id=image)
except(cs.exceptions.NotFound,
cs.exceptions.NoUniqueMatch):
except (cs.exceptions.NotFound, cs.exceptions.NoUniqueMatch):
try:
image = cs.images.find(name=image)
except (cs.exceptions.NotFound,

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017-2018 Dell EMC Inc.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type
@@ -1883,14 +1883,13 @@ class RedfishUtils(object):
for property in properties:
if property in data:
chassis_power_result[property] = data[property]
else:
return {'ret': False, 'msg': 'Key PowerControl not found.'}
chassis_power_results.append(chassis_power_result)
else:
return {'ret': False, 'msg': 'Key Power not found.'}
result['entries'] = chassis_power_results
return result
if len(chassis_power_results) > 0:
result['entries'] = chassis_power_results
return result
else:
return {'ret': False, 'msg': 'Power information not found.'}
def get_chassis_thermals(self):
result = {}
@@ -2056,7 +2055,7 @@ class RedfishUtils(object):
if property in data:
nic[property] = data[property]
result['entries'] = nic
return(result)
return result
def get_nic_inventory(self, resource_uri):
result = {}

View File

@@ -15,6 +15,7 @@ try:
from redis import Redis
from redis import __version__ as redis_version
HAS_REDIS_PACKAGE = True
REDIS_IMP_ERR = None
except ImportError:
REDIS_IMP_ERR = traceback.format_exc()
HAS_REDIS_PACKAGE = False
@@ -22,6 +23,7 @@ except ImportError:
try:
import certifi
HAS_CERTIFI_PACKAGE = True
CERTIFI_IMPORT_ERROR = None
except ImportError:
CERTIFI_IMPORT_ERROR = traceback.format_exc()
HAS_CERTIFI_PACKAGE = False

View File

@@ -45,12 +45,12 @@ options:
type: str
image_id:
description:
- Image ID used to launch instances. Required when C(state=present) and creating new ECS instances.
- Image ID used to launch instances. Required when I(state=present) and creating new ECS instances.
aliases: ['image']
type: str
instance_type:
description:
- Instance type used to launch instances. Required when C(state=present) and creating new ECS instances.
- Instance type used to launch instances. Required when I(state=present) and creating new ECS instances.
aliases: ['type']
type: str
security_groups:
@@ -89,7 +89,7 @@ options:
max_bandwidth_out:
description:
- Maximum outgoing bandwidth to the public network, measured in Mbps (Megabits per second).
Required when C(allocate_public_ip=True). Ignored when C(allocate_public_ip=False).
Required when I(allocate_public_ip=true). Ignored when I(allocate_public_ip=false).
default: 0
type: int
host_name:
@@ -153,7 +153,7 @@ options:
type: str
period:
description:
- The charge duration of the instance, in month. Required when C(instance_charge_type=PrePaid).
- The charge duration of the instance, in months. Required when I(instance_charge_type=PrePaid).
- The valid value are [1-9, 12, 24, 36].
default: 1
type: int
@@ -164,7 +164,7 @@ options:
default: False
auto_renew_period:
description:
- The duration of the automatic renew the charge of the instance. Required when C(auto_renew=True).
- The duration of the automatic renew the charge of the instance. Required when I(auto_renew=true).
choices: [1, 2, 3, 6, 12]
type: int
instance_ids:
@@ -216,31 +216,31 @@ options:
version_added: '0.2.0'
spot_strategy:
description:
- The bidding mode of the pay-as-you-go instance. This parameter is valid when InstanceChargeType is set to PostPaid.
- The bidding mode of the pay-as-you-go instance. This parameter is valid when InstanceChargeType is set to PostPaid.
choices: ['NoSpot', 'SpotWithPriceLimit', 'SpotAsPriceGo']
default: 'NoSpot'
type: str
version_added: '0.2.0'
period_unit:
description:
- The duration unit that you will buy the resource. It is valid when C(instance_charge_type=PrePaid)
- The duration unit that you will buy the resource. It is valid when I(instance_charge_type=PrePaid).
choices: ['Month', 'Week']
default: 'Month'
type: str
version_added: '0.2.0'
dry_run:
description:
- Specifies whether to send a dry-run request.
- If I(dry_run=True), Only a dry-run request is sent and no instance is created. The system checks whether the
required parameters are set, and validates the request format, service permissions, and available ECS instances.
If the validation fails, the corresponding error code is returned. If the validation succeeds, the DryRunOperation error code is returned.
- If I(dry_run=False), A request is sent. If the validation succeeds, the instance is created.
- Specifies whether to send a dry-run request.
- If I(dry_run=true), Only a dry-run request is sent and no instance is created. The system checks whether the
required parameters are set, and validates the request format, service permissions, and available ECS instances.
If the validation fails, the corresponding error code is returned. If the validation succeeds, the DryRunOperation error code is returned.
- If I(dry_run=false), A request is sent. If the validation succeeds, the instance is created.
default: False
type: bool
version_added: '0.2.0'
include_data_disks:
description:
- Whether to change instance disks charge type when changing instance charge type.
- Whether to change instance disks charge type when changing instance charge type.
default: True
type: bool
version_added: '0.2.0'

View File

@@ -191,10 +191,10 @@ notes:
2.1, the later requires python to be installed in the instance which can
be done with the command module.
- You can copy a file from the host to the instance
with the Ansible M(ansible.builtin.copy) and M(ansible.builtin.template) module and the `lxd` connection plugin.
with the Ansible M(ansible.builtin.copy) and M(ansible.builtin.template) module and the C(community.general.lxd) connection plugin.
See the example below.
- You can copy a file in the created instance to the localhost
with `command=lxc file pull instance_name/dir/filename filename`.
with C(command=lxc file pull instance_name/dir/filename filename).
See the first example below.
'''

View File

@@ -111,7 +111,7 @@ def poll_reload_status(api_key=None, job_id=None, payload=None):
memset_api = response.json()
msg = None
return(memset_api, msg, stderr)
return memset_api, msg, stderr
def reload_dns(args=None):
@@ -133,7 +133,7 @@ def reload_dns(args=None):
retvals['failed'] = has_failed
retvals['memset_api'] = response.json()
retvals['msg'] = msg
return(retvals)
return retvals
# set changed to true if the reload request was accepted.
has_changed = True
@@ -153,7 +153,7 @@ def reload_dns(args=None):
if val is not None:
retvals[val] = eval(val)
return(retvals)
return retvals
def main():

View File

@@ -127,7 +127,7 @@ def get_facts(args=None):
retvals['failed'] = has_failed
retvals['msg'] = msg
retvals['stderr'] = "API returned an error: {0}" . format(response.status_code)
return(retvals)
return retvals
# we don't want to return the same thing twice
msg = None
@@ -139,7 +139,7 @@ def get_facts(args=None):
if val is not None:
retvals[val] = eval(val)
return(retvals)
return retvals
def main():

View File

@@ -252,7 +252,7 @@ def get_facts(args=None):
retvals['failed'] = has_failed
retvals['msg'] = msg
retvals['stderr'] = "API returned an error: {0}" . format(response.status_code)
return(retvals)
return retvals
# we don't want to return the same thing twice
msg = None
@@ -264,7 +264,7 @@ def get_facts(args=None):
if val is not None:
retvals[val] = eval(val)
return(retvals)
return retvals
def main():

View File

@@ -139,7 +139,7 @@ def check(args=None):
retvals['changed'] = has_changed
retvals['failed'] = has_failed
return(retvals)
return retvals
def create_zone(args=None, zone_exists=None, payload=None):
@@ -185,7 +185,7 @@ def create_zone(args=None, zone_exists=None, payload=None):
_has_failed, _msg, response = memset_api_call(api_key=args['api_key'], api_method=api_method, payload=payload)
memset_api = response.json()
return(has_failed, has_changed, memset_api, msg)
return has_failed, has_changed, memset_api, msg
def delete_zone(args=None, zone_exists=None, payload=None):
@@ -233,7 +233,7 @@ def delete_zone(args=None, zone_exists=None, payload=None):
else:
has_failed, has_changed = False, False
return(has_failed, has_changed, memset_api, msg)
return has_failed, has_changed, memset_api, msg
def create_or_delete(args=None):
@@ -255,7 +255,7 @@ def create_or_delete(args=None):
retvals['failed'] = _has_failed
retvals['msg'] = _msg
return(retvals)
return retvals
zone_exists, _msg, counter, _zone_id = get_zone_id(zone_name=args['name'], current_zones=response.json())
@@ -271,7 +271,7 @@ def create_or_delete(args=None):
if val is not None:
retvals[val] = eval(val)
return(retvals)
return retvals
def main():

View File

@@ -110,7 +110,7 @@ def check(args=None):
retvals['changed'] = has_changed
retvals['failed'] = has_failed
return(retvals)
return retvals
def create_zone_domain(args=None, zone_exists=None, zone_id=None, payload=None):
@@ -138,7 +138,7 @@ def create_zone_domain(args=None, zone_exists=None, zone_id=None, payload=None):
if not has_failed:
has_changed = True
return(has_failed, has_changed, msg)
return has_failed, has_changed, msg
def delete_zone_domain(args=None, payload=None):
@@ -165,7 +165,7 @@ def delete_zone_domain(args=None, payload=None):
# unset msg as we don't want to return unnecessary info to the user.
msg = None
return(has_failed, has_changed, memset_api, msg)
return has_failed, has_changed, memset_api, msg
def create_or_delete_domain(args=None):
@@ -188,7 +188,7 @@ def create_or_delete_domain(args=None):
retvals['failed'] = has_failed
retvals['msg'] = msg
retvals['stderr'] = "API returned an error: {0}" . format(response.status_code)
return(retvals)
return retvals
zone_exists, msg, counter, zone_id = get_zone_id(zone_name=args['zone'], current_zones=response.json())
@@ -203,7 +203,7 @@ def create_or_delete_domain(args=None):
retvals['failed'] = has_failed
retvals['msg'] = stderr
return(retvals)
return retvals
if args['state'] == 'present':
has_failed, has_changed, msg = create_zone_domain(args=args, zone_exists=zone_exists, zone_id=zone_id, payload=payload)
@@ -217,7 +217,7 @@ def create_or_delete_domain(args=None):
if val is not None:
retvals[val] = eval(val)
return(retvals)
return retvals
def main():

View File

@@ -221,7 +221,7 @@ def create_zone_record(args=None, zone_id=None, records=None, payload=None):
# nothing to do; record is already correct so we populate
# the return var with the existing record's details.
memset_api = zone_record
return(has_changed, has_failed, memset_api, msg)
return has_changed, has_failed, memset_api, msg
else:
# merge dicts ensuring we change any updated values
payload = zone_record.copy()
@@ -231,7 +231,7 @@ def create_zone_record(args=None, zone_id=None, records=None, payload=None):
has_changed = True
# return the new record to the user in the returned var.
memset_api = new_record
return(has_changed, has_failed, memset_api, msg)
return has_changed, has_failed, memset_api, msg
has_failed, msg, response = memset_api_call(api_key=args['api_key'], api_method=api_method, payload=payload)
if not has_failed:
has_changed = True
@@ -246,7 +246,7 @@ def create_zone_record(args=None, zone_id=None, records=None, payload=None):
has_changed = True
# populate the return var with the new record's details.
memset_api = new_record
return(has_changed, has_failed, memset_api, msg)
return has_changed, has_failed, memset_api, msg
has_failed, msg, response = memset_api_call(api_key=args['api_key'], api_method=api_method, payload=payload)
if not has_failed:
has_changed = True
@@ -254,7 +254,7 @@ def create_zone_record(args=None, zone_id=None, records=None, payload=None):
# empty msg as we don't want to return a boatload of json to the user.
msg = None
return(has_changed, has_failed, memset_api, msg)
return has_changed, has_failed, memset_api, msg
def delete_zone_record(args=None, records=None, payload=None):
@@ -270,7 +270,7 @@ def delete_zone_record(args=None, records=None, payload=None):
for zone_record in records:
if args['check_mode']:
has_changed = True
return(has_changed, has_failed, memset_api, msg)
return has_changed, has_failed, memset_api, msg
payload['id'] = zone_record['id']
api_method = 'dns.zone_record_delete'
has_failed, msg, response = memset_api_call(api_key=args['api_key'], api_method=api_method, payload=payload)
@@ -280,7 +280,7 @@ def delete_zone_record(args=None, records=None, payload=None):
# empty msg as we don't want to return a boatload of json to the user.
msg = None
return(has_changed, has_failed, memset_api, msg)
return has_changed, has_failed, memset_api, msg
def create_or_delete(args=None):
@@ -304,7 +304,7 @@ def create_or_delete(args=None):
retvals['failed'] = _has_failed
retvals['msg'] = msg
retvals['stderr'] = "API returned an error: {0}" . format(response.status_code)
return(retvals)
return retvals
zone_exists, _msg, counter, zone_id = get_zone_id(zone_name=args['zone'], current_zones=response.json())
@@ -317,7 +317,7 @@ def create_or_delete(args=None):
retvals['failed'] = has_failed
retvals['msg'] = stderr
retvals['stderr'] = stderr
return(retvals)
return retvals
# get a list of all records ( as we can't limit records by zone)
api_method = 'dns.zone_record_list'
@@ -339,7 +339,7 @@ def create_or_delete(args=None):
if val is not None:
retvals[val] = eval(val)
return(retvals)
return retvals
def main():

View File

@@ -743,6 +743,8 @@ def main():
module.fail_json(msg="restarting of VM %s failed with exception: %s" % (vmid, e))
elif state == 'absent':
if not vmid:
module.exit_json(changed=False, msg='VM with hostname = %s is already absent' % hostname)
try:
vm = proxmox.get_vm(vmid, ignore_missing=True)
if not vm:

View File

@@ -83,7 +83,7 @@ options:
version_added: 1.3.0
clone:
description:
- Name of VM to be cloned. If C(vmid) is setted, C(clone) can take arbitrary value but required for initiating the clone.
- Name of VM to be cloned. If I(vmid) is set, I(clone) can take an arbitrary value but is required for initiating the clone.
type: str
cores:
description:
@@ -1370,6 +1370,8 @@ def main():
elif state == 'absent':
status = {}
if not vmid:
module.exit_json(changed=False, msg='VM with name = %s is already absent' % name)
try:
vm = proxmox.get_vm(vmid, ignore_missing=True)
if not vm:

View File

@@ -1252,7 +1252,6 @@ def setChanged():
def setMsg(message):
global failed
msg.append(message)

View File

@@ -115,7 +115,7 @@ state:
returned: always
command:
type: str
description: Full `serverless` command run by this module, in case you want to re-run the command outside the module.
description: Full C(serverless) command run by this module, in case you want to re-run the command outside the module.
returned: always
sample: serverless deploy --stage production
'''

View File

@@ -67,7 +67,7 @@ options:
state_file:
description:
- The path to an existing Terraform state file to use when building plan.
If this is not specified, the default `terraform.tfstate` will be used.
If this is not specified, the default C(terraform.tfstate) will be used.
- This option is ignored when plan is specified.
type: path
variables_files:
@@ -103,7 +103,7 @@ options:
force_init:
description:
- To avoid duplicating infra, if a state file can't be found this will
force a `terraform init`. Generally, this should be turned off unless
force a C(terraform init). Generally, this should be turned off unless
you intend to provision an entirely new Terraform deployment.
default: false
type: bool
@@ -149,7 +149,7 @@ options:
type: int
version_added: '3.8.0'
notes:
- To just run a `terraform plan`, use check mode.
- To just run a C(terraform plan), use check mode.
requirements: [ "terraform" ]
author: "Ryan Scott Brown (@ryansb)"
'''
@@ -205,7 +205,7 @@ EXAMPLES = """
RETURN = """
outputs:
type: complex
description: A dictionary of all the TF outputs by their assigned name. Use `.outputs.MyOutputName.value` to access the value.
description: A dictionary of all the TF outputs by their assigned name. Use C(.outputs.MyOutputName.value) to access the value.
returned: on success
sample: '{"bukkit_arn": {"sensitive": false, "type": "string", "value": "arn:aws:s3:::tf-test-bukkit"}'
contains:
@@ -223,12 +223,12 @@ outputs:
description: The value of the output as interpolated by Terraform
stdout:
type: str
description: Full `terraform` command stdout, in case you want to display it or examine the event log
description: Full C(terraform) command stdout, in case you want to display it or examine the event log
returned: always
sample: ''
command:
type: str
description: Full `terraform` command built by this module, in case you want to re-run the command outside the module or debug a problem.
description: Full C(terraform) command built by this module, in case you want to re-run the command outside the module or debug a problem.
returned: always
sample: terraform apply ...
"""

View File

@@ -161,9 +161,7 @@ def get_srs(session):
def main():
module = AnsibleModule(
supports_check_mode=True,
)
module = AnsibleModule({}, supports_check_mode=True)
if not HAVE_XENAPI:
module.fail_json(changed=False, msg="python xen api required for this module")

View File

@@ -346,7 +346,7 @@ def get_connection_info(module):
if not password:
password = os.environ.get('ONE_PASSWORD')
if not(url and username and password):
if not (url and username and password):
module.fail_json(msg="One or more connection parameters (api_url, api_username, api_password) were not specified")
from collections import namedtuple

View File

@@ -240,7 +240,7 @@ def get_connection_info(module):
if not password:
password = os.environ.get('ONE_PASSWORD')
if not(url and username and password):
if not (url and username and password):
module.fail_json(msg="One or more connection parameters (api_url, api_username, api_password) were not specified")
from collections import namedtuple

View File

@@ -660,7 +660,7 @@ def get_connection_info(module):
if not password:
password = os.environ.get('ONEFLOW_PASSWORD')
if not(url and username and password):
if not (url and username and password):
module.fail_json(msg="One or more connection parameters (api_url, api_username, api_password) were not specified")
from collections import namedtuple

View File

@@ -216,7 +216,7 @@ def parse_subnet_cidr(cidr):
try:
prefixlen = int(prefixlen)
except ValueError:
raise("Wrong prefix length in CIDR expression {0}".format(cidr))
raise Exception("Wrong prefix length in CIDR expression {0}".format(cidr))
return addr, prefixlen

View File

@@ -183,7 +183,7 @@ def remove_datacenter(module, profitbricks):
name = module.params.get('name')
changed = False
if(uuid_match.match(name)):
if uuid_match.match(name):
_remove_datacenter(module, profitbricks, name)
changed = True
else:

View File

@@ -324,7 +324,7 @@ def delete_volume(module, profitbricks):
break
for n in instance_ids:
if(uuid_match.match(n)):
if uuid_match.match(n):
_delete_volume(module, profitbricks, datacenter, n)
changed = True
else:

View File

@@ -252,7 +252,8 @@ def main():
'weight': weight,
}
for name, value in mutable.items():
for name in list(mutable):
value = mutable[name]
if value is None or value == getattr(node, name):
mutable.pop(name)

View File

@@ -75,15 +75,15 @@ options:
target_hostname:
type: str
description:
- One of `target_hostname` and `target_alias` is required for remote.* checks,
- One of I(target_hostname) and I(target_alias) is required for remote.* checks,
but prohibited for agent.* checks. The hostname this check should target.
Must be a valid IPv4, IPv6, or FQDN.
target_alias:
type: str
description:
- One of `target_alias` and `target_hostname` is required for remote.* checks,
- One of I(target_alias) and I(target_hostname) is required for remote.* checks,
but prohibited for agent.* checks. Use the corresponding key in the entity's
`ip_addresses` hash to resolve an IP address to target.
I(ip_addresses) hash to resolve an IP address to target.
details:
type: dict
description:

View File

@@ -143,6 +143,7 @@ except ImportError:
IPADDRESS_IMP_ERR = traceback.format_exc()
HAS_IPADDRESS = False
else:
IPADDRESS_IMP_ERR = None
HAS_IPADDRESS = True

View File

@@ -35,7 +35,7 @@ options:
user_data:
type: dict
description:
- User defined data. Typically used with `cloud-init`.
- User defined data. Typically used with C(cloud-init).
- Pass your cloud-init script here as a string
required: false

View File

@@ -28,14 +28,14 @@ author:
options:
state:
description:
- The action to take with the supplied key and value. If the state is 'present' and `value` is set, the key
contents will be set to the value supplied and `changed` will be set to `true` only if the value was
different to the current contents. If the state is 'present' and `value` is not set, the existing value
associated to the key will be returned. The state 'absent' will remove the key/value pair,
again 'changed' will be set to true only if the key actually existed
- The action to take with the supplied key and value. If the state is C(present) and I(value) is set, the key
contents will be set to the value supplied and C(changed) will be set to C(true) only if the value was
different to the current contents. If the state is C(present) and I(value) is not set, the existing value
associated to the key will be returned. The state C(absent) will remove the key/value pair,
again C(changed) will be set to true only if the key actually existed
prior to the removal. An attempt can be made to obtain or free the
lock associated with a key/value pair with the states 'acquire' or
'release' respectively. a valid session must be supplied to make the
lock associated with a key/value pair with the states C(acquire) or
C(release) respectively. a valid session must be supplied to make the
attempt changed will be true if the attempt is successful, false
otherwise.
type: str

View File

@@ -126,6 +126,7 @@ from ansible.module_utils.common.text.converters import to_native
try:
import etcd3
HAS_ETCD = True
ETCD_IMP_ERR = None
except ImportError:
ETCD_IMP_ERR = traceback.format_exc()
HAS_ETCD = False

View File

@@ -65,13 +65,15 @@ options:
type: bool
default: no
notes:
- Requires tarfile, zipfile, gzip and bzip2 packages on target host.
- Requires lzma or backports.lzma if using xz format.
- Can produce I(gzip), I(bzip2), I(lzma) and I(zip) compressed files or archives.
- Can produce I(gzip), I(bzip2), I(lzma), and I(zip) compressed files or archives.
- This module uses C(tarfile), C(zipfile), C(gzip), and C(bz2) packages on the target host to create archives.
These are part of the Python standard library for Python 2 and 3.
requirements:
- Requires C(lzma) (standard library of Python 3) or L(backports.lzma, https://pypi.org/project/backports.lzma/) (Python 2) if using C(xz) format.
seealso:
- module: ansible.builtin.unarchive
- module: ansible.builtin.unarchive
author:
- Ben Doherty (@bendoh)
- Ben Doherty (@bendoh)
'''
EXAMPLES = r'''
@@ -581,6 +583,11 @@ class TarArchive(Archive):
self.file.add(path, archive_name, recursive=False, exclude=py26_filter)
def _get_checksums(self, path):
if HAS_LZMA:
LZMAError = lzma.LZMAError
else:
# Just picking another exception that's also listed below
LZMAError = tarfile.ReadError
try:
if self.format == 'xz':
with lzma.open(_to_native_ascii(path), 'r') as f:
@@ -591,7 +598,7 @@ class TarArchive(Archive):
archive = tarfile.open(_to_native_ascii(path), 'r|' + self.format)
checksums = set((info.name, info.chksum) for info in archive.getmembers())
archive.close()
except (lzma.LZMAError, tarfile.ReadError, tarfile.CompressionError):
except (LZMAError, tarfile.ReadError, tarfile.CompressionError):
try:
# The python implementations of gzip, bz2, and lzma do not support restoring compressed files
# to their original names so only file checksum is returned

View File

@@ -309,7 +309,7 @@ def do_ini(module, filename, section=None, option=None, values=None,
# override option with no value to option with value if not allow_no_value
if len(values) > 0:
for index, line in enumerate(section_lines):
if not changed_lines[index] and match_active_opt(option, section_lines[index]):
if not changed_lines[index] and match_active_opt(option, section_lines[index]): # pylint: disable=unnecessary-list-index-lookup
newline = assignment_format % (option, values.pop(0))
(changed, msg) = update_section_line(changed, section_lines, index, changed_lines, newline, msg)
if len(values) == 0:

View File

@@ -445,8 +445,8 @@ def ensure(module, client):
module_otptoken['all'] = True
ipa_otptoken = client.otptoken_add(name=uniqueid, item=module_otptoken)
else:
if not(validate_modifications(ansible_to_ipa, module, ipa_otptoken,
module_otptoken, unmodifiable_after_creation)):
if not validate_modifications(ansible_to_ipa, module, ipa_otptoken,
module_otptoken, unmodifiable_after_creation):
module.fail_json(msg="Modifications requested in module are not valid")
# IPA will reject 'modifications' that do not actually modify anything

View File

@@ -129,6 +129,7 @@ options:
vendor:
description:
- LDAP vendor (provider).
- Use short name. For instance, write C(rhds) for "Red Hat Directory Server".
type: str
usernameLDAPAttribute:

View File

@@ -20,7 +20,7 @@ description:
- "Allows to post events to Datadog (www.datadoghq.com) service."
- "Uses http://docs.datadoghq.com/api/#events API."
author:
- "Artūras `arturaz` Šlajus (@arturaz)"
- "Artūras 'arturaz' Šlajus (@arturaz)"
- "Naoya Nakazawa (@n0ts)"
options:
api_key:

View File

@@ -86,6 +86,7 @@ from os import path
try:
from pdpyras import APISession
HAS_PD_PY = True
PD_IMPORT_ERR = None
except ImportError:
HAS_PD_PY = False
PD_IMPORT_ERR = traceback.format_exc()
@@ -93,6 +94,7 @@ except ImportError:
try:
from pdpyras import PDClientError
HAS_PD_CLIENT_ERR = True
PD_CLIENT_ERR_IMPORT_ERR = None
except ImportError:
HAS_PD_CLIENT_ERR = False
PD_CLIENT_ERR_IMPORT_ERR = traceback.format_exc()

View File

@@ -233,10 +233,11 @@ import json
try:
from requests import Request, Session
except ImportError:
HAS_ANOTHER_LIBRARY = False
ANOTHER_LIBRARY_IMPORT_ERROR = traceback.format_exc()
HAS_REQUESTS = False
REQUESTS_IMPORT_ERROR = traceback.format_exc()
else:
HAS_ANOTHER_LIBRARY = True
HAS_REQUESTS = True
REQUESTS_IMPORT_ERROR = None
def build_url(account, key, is_sandbox):
@@ -261,7 +262,7 @@ def iterate_data(module, request_object):
request_object.url = base_url + '&page=' + str(page)
new_results = Session().send(request_object)
data = data + new_results.json()["data"]
return(data)
return data
else:
module.fail_json('API Call failed, check ID, key and sandbox values')
@@ -305,11 +306,10 @@ def main():
params['api_key'],
params['sandbox'])
if not HAS_ANOTHER_LIBRARY:
# Needs: from ansible.module_utils.basic import missing_required_lib
if not HAS_REQUESTS:
module.exit_json(
msg=missing_required_lib('another_library'),
exception=ANOTHER_LIBRARY_IMPORT_ERROR)
msg=missing_required_lib('requests'),
exception=REQUESTS_IMPORT_ERROR)
# At minimum we need account and key
if params['account_id'] and params['api_key']:

View File

@@ -99,7 +99,7 @@ options:
weight:
description:
- The value passed in argument.
- If the value ends with the `%` sign, then the new weight will be
- If the value ends with the C(%) sign, then the new weight will be
relative to the initially configured weight.
- Relative weights are only permitted between 0 and 100% and absolute
weights are permitted between 0 and 256.

View File

@@ -44,7 +44,7 @@ options:
address:
description:
- The IP address for the A or AAAA record.
- Required for C(type=A) or C(type=AAAA)
- Required for I(type=A) or I(type=AAAA).
type: str
ttl:
description:
@@ -70,38 +70,38 @@ options:
port:
description:
- Sets the port of the SRV record.
- Required for C(type=SRV)
- Required for I(type=SRV).
type: int
target:
description:
- Sets the target of the SRV record.
- Required for C(type=SRV)
- Required for I(type=SRV).
type: str
order:
description:
- Sets the order of the NAPTR record.
- Required for C(type=NAPTR)
- Required for I(type=NAPTR).
type: int
preference:
description:
- Sets the preference of the NAPTR record.
- Required for C(type=NAPTR)
- Required for I(type=NAPTR).
type: int
flags:
description:
- Sets one of the possible flags of NAPTR record.
- Required for C(type=NAPTR)
- Required for I(type=NAPTR).
type: str
choices: ['S', 'A', 'U', 'P']
service:
description:
- Sets the service of the NAPTR record.
- Required for C(type=NAPTR)
- Required for I(type=NAPTR).
type: str
replacement:
description:
- Sets the replacement of the NAPTR record.
- Required for C(type=NAPTR)
- Required for I(type=NAPTR).
type: str
username:
description:

View File

@@ -1742,7 +1742,10 @@ class Nmcli(object):
@staticmethod
def list_to_string(lst):
return ",".join(lst or [""])
if lst is None:
return None
else:
return ",".join(lst)
@staticmethod
def settings_type(setting):

View File

@@ -426,7 +426,10 @@ class RecordManager(object):
if lookup.rcode() != dns.rcode.NOERROR:
self.module.fail_json(msg='Failed to lookup TTL of existing matching record.')
current_ttl = lookup.answer[0].ttl
if self.module.params['type'] == 'NS':
current_ttl = lookup.answer[0].ttl if lookup.answer else lookup.authority[0].ttl
else:
current_ttl = lookup.answer[0].ttl
return current_ttl != self.module.params['ttl']

View File

@@ -293,7 +293,7 @@ def build_payload_for_slack(text, channel, thread_id, username, icon_url, icon_e
# With a custom color we have to set the message as attachment, and explicitly turn markdown parsing on for it.
payload = dict(attachments=[dict(text=escape_quotes(text), color=color, mrkdwn_in=["text"])])
if channel is not None:
if channel.startswith(('#', '@', 'C0')):
if channel.startswith(('#', '@', 'C0', 'GF', 'G0')):
payload['channel'] = channel
else:
payload['channel'] = '#' + channel

View File

@@ -17,7 +17,7 @@ options:
clients:
description:
- A list of the pip executables that will be used to get the packages.
They can be supplied with the full path or just the executable name, i.e `pip3.7`.
They can be supplied with the full path or just the executable name, for example C(pip3.7).
default: ['pip']
required: False
type: list
@@ -97,13 +97,13 @@ from ansible.module_utils.facts.packages import CLIMgr
class PIP(CLIMgr):
def __init__(self, pip):
def __init__(self, pip, module):
self.CLI = pip
self.module = module
def list_installed(self):
global module
rc, out, err = module.run_command([self._cli, 'list', '-l', '--format=json'])
rc, out, err = self.module.run_command([self._cli, 'list', '-l', '--format=json'])
if rc != 0:
raise Exception("Unable to list packages rc=%s : %s" % (rc, err))
return json.loads(out)
@@ -116,7 +116,6 @@ class PIP(CLIMgr):
def main():
# start work
global module
module = AnsibleModule(
argument_spec=dict(
clients=dict(type='list', elements='path', default=['pip']),
@@ -133,7 +132,7 @@ def main():
module.warn('Skipping invalid pip client: %s' % (pip))
continue
try:
pip_mgr = PIP(pip)
pip_mgr = PIP(pip, module)
if pip_mgr.is_available():
found += 1
packages[pip] = pip_mgr.get_packages()

View File

@@ -224,7 +224,7 @@ class Yarn(object):
rc, out, err = self.module.run_command(cmd, check_rc=check_rc, cwd=cwd)
return out, err
return(None, None)
return None, None
def list(self):
cmd = ['list', '--depth=0', '--json']

View File

@@ -62,8 +62,8 @@ options:
type: bool
default: no
notes:
- '"name" and "upgrade" are mutually exclusive.'
- When used with a `loop:` each package will be processed individually, it is much more efficient to pass the list directly to the `name` option.
- 'I(name) and I(upgrade) are mutually exclusive.'
- When used with a C(loop:) each package will be processed individually, it is much more efficient to pass the list directly to the I(name) option.
'''
EXAMPLES = '''

View File

@@ -84,6 +84,7 @@ try:
import dnf.repodict
from dnf.conf import Conf
HAS_DNF_PACKAGES = True
DNF_IMP_ERR = None
except ImportError:
DNF_IMP_ERR = traceback.format_exc()
HAS_DNF_PACKAGES = False

View File

@@ -162,7 +162,7 @@ OUTDATED_FLATPAK_VERSION_ERROR_MESSAGE = "Unknown option --columns=application"
def install_flat(module, binary, remote, names, method, no_dependencies):
"""Add new flatpaks."""
global result
global result # pylint: disable=global-variable-not-assigned
uri_names = []
id_names = []
for name in names:
@@ -189,7 +189,7 @@ def install_flat(module, binary, remote, names, method, no_dependencies):
def uninstall_flat(module, binary, names, method):
"""Remove existing flatpaks."""
global result
global result # pylint: disable=global-variable-not-assigned
installed_flat_names = [
_match_installed_flat_name(module, binary, name, method)
for name in names
@@ -224,7 +224,7 @@ def _match_installed_flat_name(module, binary, name, method):
# This is a difficult function, since if the user supplies a flatpakref url,
# we have to rely on a naming convention:
# The flatpakref file name needs to match the flatpak name
global result
global result # pylint: disable=global-variable-not-assigned
parsed_name = _parse_flatpak_name(name)
# Try running flatpak list with columns feature
command = [binary, "list", "--{0}".format(method), "--app", "--columns=application"]
@@ -248,7 +248,7 @@ def _match_installed_flat_name(module, binary, name, method):
def _match_flat_using_outdated_flatpak_format(module, binary, parsed_name, method):
global result
global result # pylint: disable=global-variable-not-assigned
command = [binary, "list", "--{0}".format(method), "--app", "--columns=application"]
output = _flatpak_command(module, False, command)
for row in output.split('\n'):
@@ -257,7 +257,7 @@ def _match_flat_using_outdated_flatpak_format(module, binary, parsed_name, metho
def _match_flat_using_flatpak_column_feature(module, binary, parsed_name, method):
global result
global result # pylint: disable=global-variable-not-assigned
command = [binary, "list", "--{0}".format(method), "--app"]
output = _flatpak_command(module, False, command)
for row in output.split('\n'):
@@ -276,7 +276,7 @@ def _parse_flatpak_name(name):
def _flatpak_version(module, binary):
global result
global result # pylint: disable=global-variable-not-assigned
command = [binary, "--version"]
output = _flatpak_command(module, False, command)
version_number = output.split()[1]
@@ -284,7 +284,7 @@ def _flatpak_version(module, binary):
def _flatpak_command(module, noop, command, ignore_failure=False):
global result
global result # pylint: disable=global-variable-not-assigned
result['command'] = ' '.join(command)
if noop:
result['rc'] = 0

View File

@@ -124,7 +124,7 @@ from ansible.module_utils.common.text.converters import to_bytes, to_native
def add_remote(module, binary, name, flatpakrepo_url, method):
"""Add a new remote."""
global result
global result # pylint: disable=global-variable-not-assigned
command = [binary, "remote-add", "--{0}".format(method), name, flatpakrepo_url]
_flatpak_command(module, module.check_mode, command)
result['changed'] = True
@@ -132,7 +132,7 @@ def add_remote(module, binary, name, flatpakrepo_url, method):
def remove_remote(module, binary, name, method):
"""Remove an existing remote."""
global result
global result # pylint: disable=global-variable-not-assigned
command = [binary, "remote-delete", "--{0}".format(method), "--force", name]
_flatpak_command(module, module.check_mode, command)
result['changed'] = True
@@ -153,7 +153,7 @@ def remote_exists(module, binary, name, method):
def _flatpak_command(module, noop, command):
global result
global result # pylint: disable=global-variable-not-assigned
result['command'] = ' '.join(command)
if noop:
result['rc'] = 0

View File

@@ -35,7 +35,7 @@ options:
elements: str
path:
description:
- "A ':' separated list of paths to search for 'brew' executable.
- "A C(:) separated list of paths to search for C(brew) executable.
Since a package (I(formula) in homebrew parlance) location is prefixed relative to the actual path of I(brew) command,
providing an alternative I(brew) path enables managing different set of packages in an alternative location in the system."
default: '/usr/local/bin:/opt/homebrew/bin'
@@ -72,8 +72,8 @@ options:
elements: str
version_added: '0.2.0'
notes:
- When used with a `loop:` each package will be processed individually,
it is much more efficient to pass the list directly to the `name` option.
- When used with a C(loop:) each package will be processed individually,
it is much more efficient to pass the list directly to the I(name) option.
'''
EXAMPLES = '''

View File

@@ -70,8 +70,8 @@ options:
type: bool
default: no
notes:
- When used with a `loop:` each package will be processed individually,
it is much more efficient to pass the list directly to the `name` option.
- When used with a C(loop:) each package will be processed individually,
it is much more efficient to pass the list directly to the I(name) option.
'''
EXAMPLES = '''

View File

@@ -636,8 +636,9 @@ class Pacman(object):
stderr=stderr,
rc=rc,
)
# With Pacman v6.0.1 - libalpm v13.0.1, --upgrade outputs "loading packages..." on stdout. strip that
stdout = stdout.replace("loading packages...\n", "")
# With Pacman v6.0.1 - libalpm v13.0.1, --upgrade outputs " filename_without_extension downloading..." if the URL is unseen.
# In all cases, pacman outputs "loading packages..." on stdout. strip both
stdout = stdout.splitlines()[-1]
is_URL = True
pkg_name = stdout.strip()
pkg_list.append(Package(name=pkg_name, source=pkg, source_is_URL=is_URL))

View File

@@ -37,7 +37,7 @@ options:
state:
description:
- State of the package.
- 'Note: "latest" added in 2.7'
- 'Note: C(latest) added in 2.7.'
choices: [ 'present', 'latest', 'absent' ]
required: false
default: present
@@ -102,8 +102,8 @@ options:
author: "bleader (@bleader)"
notes:
- When using pkgsite, be careful that already in cache packages won't be downloaded again.
- When used with a `loop:` each package will be processed individually,
it is much more efficient to pass the list directly to the `name` option.
- When used with a C(loop:) each package will be processed individually,
it is much more efficient to pass the list directly to the I(name) option.
'''
EXAMPLES = '''
@@ -148,10 +148,7 @@ def query_package(module, run_pkgng, name):
rc, out, err = run_pkgng('info', '-g', '-e', name)
if rc == 0:
return True
return False
return rc == 0
def query_update(module, run_pkgng, name):
@@ -161,10 +158,7 @@ def query_update(module, run_pkgng, name):
# rc = 1, updates available
rc, out, err = run_pkgng('upgrade', '-g', '-n', name)
if rc == 1:
return True
return False
return rc == 1
def pkgng_older_than(module, pkgng_path, compare_version):
@@ -190,7 +184,7 @@ def upgrade_packages(module, run_pkgng):
pkgng_args = ['upgrade']
pkgng_args.append('-n' if module.check_mode else '-y')
rc, out, err = run_pkgng(*pkgng_args)
rc, out, err = run_pkgng(*pkgng_args, check_rc=(not module.check_mode))
matches = re.findall('^Number of packages to be (?:upgraded|reinstalled): ([0-9]+)', out, re.MULTILINE)
for match in matches:

View File

@@ -119,7 +119,7 @@ options:
repoview:
description:
- Whether to generate repoview files for a published repository. Setting
this to "yes" automatically activates `generate_sqlite`.
this to "yes" automatically activates C(generate_sqlite).
required: false
type: bool
default: no

View File

@@ -468,7 +468,7 @@ class Rhsm(RegistrationBase):
items = ["--all"]
if items:
args = [SUBMAN_CMD, 'unsubscribe'] + items
args = [SUBMAN_CMD, 'remove'] + items
rc, stderr, stdout = self.module.run_command(args, check_rc=True)
return serials
@@ -592,15 +592,22 @@ class Rhsm(RegistrationBase):
consumed_pools = RhsmPools(self.module, consumed=True)
existing_pools = {}
serials_to_remove = []
for p in consumed_pools:
existing_pools[p.get_pool_id()] = p.QuantityUsed
pool_id = p.get_pool_id()
quantity_used = p.get_quantity_used()
existing_pools[pool_id] = quantity_used
quantity = pool_ids.get(pool_id, 0)
if quantity is not None and quantity != quantity_used:
serials_to_remove.append(p.Serial)
serials_to_remove = [p.Serial for p in consumed_pools if pool_ids.get(p.get_pool_id(), 0) != p.QuantityUsed]
serials = self.unsubscribe(serials=serials_to_remove)
missing_pools = {}
for pool_id, quantity in sorted(pool_ids.items()):
if existing_pools.get(pool_id, 0) != quantity:
quantity_used = existing_pools.get(pool_id, 0)
if quantity is None and quantity_used == 0 or quantity not in (None, 0, quantity_used):
missing_pools[pool_id] = quantity
self.subscribe_by_pool_ids(missing_pools)
@@ -634,6 +641,9 @@ class RhsmPool(object):
def get_pool_id(self):
return getattr(self, 'PoolId', getattr(self, 'PoolID'))
def get_quantity_used(self):
return int(getattr(self, 'QuantityUsed'))
def subscribe(self):
args = "subscription-manager attach --pool %s" % self.get_pool_id()
rc, stdout, stderr = self.module.run_command(args, check_rc=True)

View File

@@ -160,7 +160,7 @@ def upgrade(module, xbps_path):
rc, stdout, stderr = module.run_command(cmdneedupgrade, check_rc=False)
if rc == 0:
if(len(stdout.splitlines()) == 0):
if len(stdout.splitlines()) == 0:
module.exit_json(changed=False, msg='Nothing to upgrade')
elif module.check_mode:
module.exit_json(changed=True, msg='Would have performed upgrade')

View File

@@ -1,6 +1,6 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright: (c) 2018, Florian Paul Hoberg <florian.hoberg@credativ.de>
# Copyright: (c) 2018, Florian Paul Azim Hoberg <florian.hoberg@credativ.de>
#
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
@@ -35,7 +35,7 @@ requirements:
- yum
- yum-versionlock
author:
- Florian Paul Hoberg (@florianpaulhoberg)
- Florian Paul Azim Hoberg (@gyptazy)
- Amin Vakil (@aminvakil)
'''

View File

@@ -136,8 +136,8 @@ options:
- Adds C(--clean-deps) option to I(zypper) remove command.
version_added: '4.6.0'
notes:
- When used with a `loop:` each package will be processed individually,
it is much more efficient to pass the list directly to the `name` option.
- When used with a C(loop:) each package will be processed individually,
it is much more efficient to pass the list directly to the I(name) option.
# informational: requirements for nodes
requirements:
- "zypper >= 1.0 # included in openSUSE >= 11.1 or SUSE Linux Enterprise Server/Desktop >= 11.0"

View File

@@ -27,7 +27,7 @@ options:
required: false
executable:
description:
- Path to the hponcfg executable (`hponcfg` which uses $PATH).
- Path to the hponcfg executable (C(hponcfg) which uses $PATH).
default: hponcfg
verbose:
description:

View File

@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -238,7 +238,7 @@ class ManageIQAlertProfiles(object):
except Exception as e:
msg = "Updating profile '{name}' failed: {error}"
msg = msg.format(name=old_profile['name'], error=e)
self.module.fail_json(msg=msg, result=result)
self.module.fail_json(msg=msg)
if changed:
msg = "Profile {name} updated successfully".format(name=desired_profile['name'])

View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2018 Dell EMC Inc.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2019 Dell EMC Inc.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2019 Dell EMC Inc.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright (c) 2021-2022 Hewlett Packard Enterprise, Inc. All rights reserved.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright (c) 2021-2022 Hewlett Packard Enterprise, Inc. All rights reserved.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017-2018 Dell EMC Inc.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017-2018 Dell EMC Inc.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017-2018 Dell EMC Inc.
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type

View File

@@ -71,20 +71,13 @@ RETURN = '''
import traceback
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.api import basic_auth_argument_spec
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
GITLAB_IMP_ERR = None
try:
import gitlab
HAS_GITLAB_PACKAGE = True
except Exception:
GITLAB_IMP_ERR = traceback.format_exc()
HAS_GITLAB_PACKAGE = False
from ansible_collections.community.general.plugins.module_utils.gitlab import auth_argument_spec, gitlab_authentication
from ansible_collections.community.general.plugins.module_utils.gitlab import (
auth_argument_spec, gitlab_authentication, gitlab, ensure_gitlab_package
)
class GitlabBranch(object):
@@ -143,15 +136,13 @@ def main():
],
supports_check_mode=False
)
ensure_gitlab_package(module)
project = module.params['project']
branch = module.params['branch']
ref_branch = module.params['ref_branch']
state = module.params['state']
if not HAS_GITLAB_PACKAGE:
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
gitlab_version = gitlab.__version__
if LooseVersion(gitlab_version) < LooseVersion('2.3.0'):
module.fail_json(msg="community.general.gitlab_proteched_branch requires python-gitlab Python module >= 2.3.0 (installed version: [%s])."

View File

@@ -108,22 +108,13 @@ deploy_key:
type: dict
'''
import re
import traceback
GITLAB_IMP_ERR = None
try:
import gitlab
HAS_GITLAB_PACKAGE = True
except Exception:
GITLAB_IMP_ERR = traceback.format_exc()
HAS_GITLAB_PACKAGE = False
from ansible.module_utils.api import basic_auth_argument_spec
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.text.converters import to_native
from ansible_collections.community.general.plugins.module_utils.gitlab import auth_argument_spec, find_project, gitlab_authentication
from ansible_collections.community.general.plugins.module_utils.gitlab import (
auth_argument_spec, find_project, gitlab_authentication, gitlab, ensure_gitlab_package
)
class GitLabDeployKey(object):
@@ -261,6 +252,7 @@ def main():
],
supports_check_mode=True,
)
ensure_gitlab_package(module)
state = module.params['state']
project_identifier = module.params['project']
@@ -268,9 +260,6 @@ def main():
key_keyfile = module.params['key']
key_can_push = module.params['can_push']
if not HAS_GITLAB_PACKAGE:
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
gitlab_instance = gitlab_authentication(module)
gitlab_deploy_key = GitLabDeployKey(module, gitlab_instance)

View File

@@ -158,21 +158,13 @@ group:
type: dict
'''
import traceback
GITLAB_IMP_ERR = None
try:
import gitlab
HAS_GITLAB_PACKAGE = True
except Exception:
GITLAB_IMP_ERR = traceback.format_exc()
HAS_GITLAB_PACKAGE = False
from ansible.module_utils.api import basic_auth_argument_spec
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.text.converters import to_native
from ansible_collections.community.general.plugins.module_utils.gitlab import auth_argument_spec, find_group, gitlab_authentication
from ansible_collections.community.general.plugins.module_utils.gitlab import (
auth_argument_spec, find_group, gitlab_authentication, gitlab, ensure_gitlab_package
)
class GitLabGroup(object):
@@ -338,6 +330,7 @@ def main():
],
supports_check_mode=True,
)
ensure_gitlab_package(module)
group_name = module.params['name']
group_path = module.params['path']
@@ -351,9 +344,6 @@ def main():
require_two_factor_authentication = module.params['require_two_factor_authentication']
avatar_path = module.params['avatar_path']
if not HAS_GITLAB_PACKAGE:
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
gitlab_instance = gitlab_authentication(module)
# Define default group_path based on group_name

View File

@@ -151,18 +151,11 @@ EXAMPLES = r'''
RETURN = r''' # '''
from ansible.module_utils.api import basic_auth_argument_spec
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.basic import AnsibleModule
from ansible_collections.community.general.plugins.module_utils.gitlab import auth_argument_spec, gitlab_authentication
import traceback
try:
import gitlab
HAS_PY_GITLAB = True
except ImportError:
GITLAB_IMP_ERR = traceback.format_exc()
HAS_PY_GITLAB = False
from ansible_collections.community.general.plugins.module_utils.gitlab import (
auth_argument_spec, gitlab_authentication, gitlab, ensure_gitlab_package
)
class GitLabGroup(object):
@@ -280,9 +273,7 @@ def main():
],
supports_check_mode=True,
)
if not HAS_PY_GITLAB:
module.fail_json(msg=missing_required_lib('python-gitlab', url='https://python-gitlab.readthedocs.io/en/stable/'), exception=GITLAB_IMP_ERR)
ensure_gitlab_package(module)
access_level_int = {
'guest': gitlab.GUEST_ACCESS,

View File

@@ -158,21 +158,14 @@ group_variable:
sample: "['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY']"
'''
import traceback
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.api import basic_auth_argument_spec
from ansible.module_utils.six import string_types
from ansible.module_utils.six import integer_types
GITLAB_IMP_ERR = None
try:
import gitlab
HAS_GITLAB_PACKAGE = True
except Exception:
GITLAB_IMP_ERR = traceback.format_exc()
HAS_GITLAB_PACKAGE = False
from ansible_collections.community.general.plugins.module_utils.gitlab import auth_argument_spec, gitlab_authentication
from ansible_collections.community.general.plugins.module_utils.gitlab import (
auth_argument_spec, gitlab_authentication, ensure_gitlab_package
)
def vars_to_variables(vars, module):
@@ -415,9 +408,7 @@ def main():
],
supports_check_mode=True
)
if not HAS_GITLAB_PACKAGE:
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
ensure_gitlab_package(module)
purge = module.params['purge']
var_list = module.params['vars']

View File

@@ -158,22 +158,12 @@ hook:
type: dict
'''
import re
import traceback
GITLAB_IMP_ERR = None
try:
import gitlab
HAS_GITLAB_PACKAGE = True
except Exception:
GITLAB_IMP_ERR = traceback.format_exc()
HAS_GITLAB_PACKAGE = False
from ansible.module_utils.api import basic_auth_argument_spec
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.common.text.converters import to_native
from ansible.module_utils.basic import AnsibleModule
from ansible_collections.community.general.plugins.module_utils.gitlab import auth_argument_spec, find_project, gitlab_authentication
from ansible_collections.community.general.plugins.module_utils.gitlab import (
auth_argument_spec, find_project, gitlab_authentication, ensure_gitlab_package
)
class GitLabHook(object):
@@ -329,6 +319,7 @@ def main():
],
supports_check_mode=True,
)
ensure_gitlab_package(module)
state = module.params['state']
project_identifier = module.params['project']
@@ -345,9 +336,6 @@ def main():
enable_ssl_verification = module.params['hook_validate_certs']
hook_token = module.params['token']
if not HAS_GITLAB_PACKAGE:
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
gitlab_instance = gitlab_authentication(module)
gitlab_hook = GitLabHook(module, gitlab_instance)

Some files were not shown because too many files have changed in this diff Show More