Compare commits

...

50 Commits
2.5.6 ... 2.5.9

Author SHA1 Message Date
Felix Fontein
ecd984be2a Final 2.5.9 release. 2022-05-16 12:30:40 +02:00
Felix Fontein
21dde52d1f Prepare 2.5.9 release. 2022-05-14 13:52:11 +02:00
Felix Fontein
d94ec28b57 Remove FreeBSD 12.0 and 12.2 from CI. (#4522) 2022-04-17 21:23:57 +02:00
patchback[bot]
3e6c47a7a5 Switch from antsibull to antsibull-docs. (#4480) (#4481)
(cherry picked from commit aa27f2152e)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-04-10 10:59:55 +02:00
patchback[bot]
0814be718e Replace antsibull-lint collection-docs with antsibull-docs lint-collection-docs. (#4423) (#4424)
(cherry picked from commit 668bbed602)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-03-30 08:17:29 +02:00
Felix Fontein
bbaeb5e5be Next expected release is 2.5.9. 2022-01-31 21:34:43 +01:00
Felix Fontein
75d05206dc Release 2.5.8. 2022-01-31 21:34:30 +01:00
Felix Fontein
df635c484e Remove CentOS 8 from CI. (#4135) 2022-01-31 21:33:50 +01:00
Felix Fontein
1b5d4d7cc1 Prepare 2.5.8 release. 2022-01-30 15:18:16 +01:00
patchback[bot]
e824cbc6db PyOpenSSL 22.0.0 no longer supports Python 2.7 (#4114) (#4116)
* PyOpenSSL 22.0.0 no longer supports Python 2.7.

* Try to make pip on CentOS 6 happy.

(cherry picked from commit 84124224ae)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-01-30 15:07:24 +01:00
Felix Fontein
f738042786 Add EoL message. (#4094) 2022-01-29 15:31:07 +01:00
patchback[bot]
d19b867d9a Restrict PyNaCL to 1.4.x on RHEL8 when using Python 3.6 (#4006) (#4008)
* Restrict PyNaCL to 1.4.x on RHEL8 when using Python 3.6.

* Fix typo.

(cherry picked from commit 77a930cf6b)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-01-08 15:06:54 +01:00
patchback[bot]
472c4670d5 Fix 2.9 unit tests (#4002) (#4003)
* Fix 2.9 unit tests.

* Another try.

(cherry picked from commit 26a91e811f)

Co-authored-by: Felix Fontein <felix@fontein.de>
2022-01-08 12:40:00 +01:00
patchback[bot]
69b7f68379 Restrict redis to < 4.1.0 for ansible-base 2.10. (#3955) (#3957)
(cherry picked from commit 3f2364574d)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-12-27 21:17:03 +01:00
patchback[bot]
de8274c360 Add stable-4 to nightly CI jobs; make stable-2 weekly. (#3852) (#3855)
(cherry picked from commit 727c9a4032)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-12-05 17:40:47 +01:00
patchback[bot]
e1a96ba654 Fix collection dependency installation in CI. (#3753) (#3754)
(cherry picked from commit 17b4c6972f)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-11-19 06:59:43 +01:00
patchback[bot]
0c0a49caae Restrict redis version. (#3733) (#3734)
(cherry picked from commit bf7a954f00)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-11-16 07:27:27 +01:00
Felix Fontein
6cd996ce3c Replace Bash codecov uploader by new Python codecov uploader. (#3713) (#3716)
ci_coverage

(cherry picked from commit 5948809162)
2021-11-13 13:50:57 +01:00
Felix Fontein
0d010e8841 Next expected release is 2.5.8. 2021-11-09 07:30:19 +01:00
Felix Fontein
ebd4c4146e Release 2.5.7. 2021-11-09 06:37:15 +01:00
patchback[bot]
43269c9255 Better handling of base64-encoded values in xattr module (#3675) (#3676)
* Fix exception in xattr module when existing extended attribute's value contains non-printable characters and the base64-encoded string contains a '=' sign

* Added changelog fragment for #3675

* Apply suggestions from code review

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

Co-authored-by: sc-anssi <sc-anssi@users.noreply.github.com>
2021-11-09 06:28:35 +01:00
David Moreau Simard
847f8b9e21 Fix urpmi typo in changelog (#3659)
The module is urpmi, not urmpi.

(cherry picked from commit 58a5463ddb)
2021-11-02 19:09:43 +01:00
patchback[bot]
2241db8a74 Fixed - TypeError: unexpected keyword argument (#3649) (#3653)
* Fixed - TypeError: unexpected keyword argument

- File proxmox_group_info.py creates the error "TypeError:
  get_group() got an unexpected keyword argument \'group\'\r\n'" if a
  group parameter is used.
  Issue is an argument naming conflict. After changing the argument
  name to 'groupid', as used in method ProxmoxGroupInfoAnsible::get_group,
  testing a Proxmox group name is working now.

* Changelog fragment added for #3649

changelog fragment for TypeError: unexpected keyword argument #3649

* Update changelogs/fragments/3649-proxmox_group_info_TypeError.yml

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

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

Co-authored-by: hklausing <hklausing@users.noreply.github.com>
2021-10-31 20:35:34 +01:00
patchback[bot]
bed6520d27 provide more fitting description for runner timeout (#3624) (#3644)
* provide more fitting description for runner timeout

* Update plugins/modules/source_control/gitlab/gitlab_runner.py

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

Co-authored-by: Tim Herren <tim.herren@gmx.ch>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 96de25fc94)

Co-authored-by: nerrehmit <accounts+github@herren.id>
2021-10-30 17:04:13 +02:00
patchback[bot]
08c3bbe201 Fix CI (#3637) (#3640)
* Replace yaml.load with yaml.safe_load in unit tests.

* Remove no longer needed loader arg in two instances.

(cherry picked from commit 753df78877)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-10-30 11:22:13 +02:00
Felix Fontein
de58d446f2 Announce that this is the last regular bugfix release. 2021-10-30 08:43:30 +02:00
patchback[bot]
9e19286a9f gitlab_project_members: improve project name matching (#3602) (#3635)
* Update gitlab_project_members.py

The actual search method doesn't accept path with namespace for project_name. If you have many project with same name, this module gitlab_project_members can't work.

* Update gitlab_project_members.py

* Update gitlab_project_members.py

* Update gitlab_project_members.py

* Create 3602-fix-gitlab_project_members-improve-search-method

* Rename 3602-fix-gitlab_project_members-improve-search-method to 3602-fix-gitlab_project_members-improve-search-method.yml

(cherry picked from commit cdfc4dcf49)

Co-authored-by: paytroff <93038288+paytroff@users.noreply.github.com>
2021-10-30 08:31:53 +02:00
Felix Fontein
f4d16549de Prepare 2.5.7 release. 2021-10-22 08:30:57 +02:00
patchback[bot]
a3c597425d Redfish: perform manager network interface configuration even if property is missing (#3582) (#3590)
* Redfish: perform manager network interface configuration even if property is missing

Signed-off-by: Mike Raineri <michael.raineri@dell.com>

* Update changelogs/fragments/3404-redfish_utils-skip-manager-network-check.yml

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

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

Co-authored-by: Mike Raineri <michael.raineri@dell.com>
2021-10-20 17:49:01 +02:00
patchback[bot]
56bbbca2ce Fixed typo in homebrew documentation (#3577) (#3584)
Fixed typo in community.general.homebrew documentation

(cherry picked from commit 02c534bb8e)

Co-authored-by: Premkumar Subramanian <prem_x87@outlook.com>
2021-10-18 23:07:10 +02:00
patchback[bot]
dce582c64c Remove non-working example. (#3571) (#3586)
(cherry picked from commit e8c37ca605)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-10-18 23:04:08 +02:00
patchback[bot]
ecca4cedea Misc doc issues (#3572) (#3579)
* Add names to tasks in oneview module examples

* Fix task name in github_webhook module example

* Fix trailing whitespace

* Add changelog fragment

* Remove changelog fragment

(cherry picked from commit 3731064368)

Co-authored-by: Vitaly Khabarov <vitkhab@users.noreply.github.com>
2021-10-18 14:09:29 +02:00
patchback[bot]
dc69b40681 Use correct FQCN. (#3573) (#3574)
(cherry picked from commit c3813d4533)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-10-17 18:25:48 +02:00
patchback[bot]
1553b77a1d Fix bug with returning results in IPA role (#3561) (#3567)
* Fix bug with returning results in IPA role

Fix #3560

* Add changelog

* Fix typo in changelog

* Update changelogs/fragments/3561-fix-ipa-host-var-detection.yml

Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com>

* Update changelogs/fragments/3561-fix-ipa-host-var-detection.yml

Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com>

* Update changelogs/fragments/3561-fix-ipa-host-var-detection.yml

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

Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 191d2e08bb)

Co-authored-by: Sergey <sshnaidm@users.noreply.github.com>
2021-10-16 21:08:06 +02:00
patchback[bot]
c7c39e598d Bugfix issue2692 logstash callbackmodule with no attribute options (#3530) (#3549)
* Update logstash.py

replacing _options with context.cliargs

* Create 2692-logstash-callback-plugin-replacing_options

logstash callback plugin replace _option with context.CLIARGS

* Rename 2692-logstash-callback-plugin-replacing_options to 2692-logstash-callback-plugin-replacing_options.yml

missed out the extenstion

* Update logstash.py

context imported

* Update 2692-logstash-callback-plugin-replacing_options.yml

dict to string

* Update changelogs/fragments/2692-logstash-callback-plugin-replacing_options.yml

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

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

Co-authored-by: Anand Victor <anandvict@gmail.com>
2021-10-12 06:50:28 +02:00
patchback[bot]
c364e66114 Fix shellcheck error. (#3531) (#3533)
(cherry picked from commit d1f820ed06)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-10-08 16:22:24 +02:00
patchback[bot]
31d62c5947 Fix: gitlab_deploy_key idempotency (#3473) (#3511)
* Fix: gitlab_deploy_key idempotency

The module was not retrieving all the deploy keys leading to non
idempotency on projects with multiple deploy keys.
SEE: https://python-gitlab.readthedocs.io/en/stable/api-usage.html#pagination

* Update changelogs/fragments/3473-gitlab_deploy_key-fix_idempotency.yml

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

Co-authored-by: Jonathan Piron <jonathanpiron@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 0bc4518f3b)

Co-authored-by: Jonathan Piron <jonathan@piron.at>
2021-10-04 21:41:59 +02:00
patchback[bot]
e4212472e2 Fix OSX 10.11 CI runs (#3501) (#3503)
* Restrict to OSX 10.11 tests.

* See whether updating brew helps.

* Skip archive task for OSX.

* Refactor homebrew task to make changing the package name easier.

* Revert "See whether updating brew helps."

This reverts commit 8eceb9ef1f.

* Replace xz by gnu-tar.

* Uninstall first.

* Skip iso_extract task for OSX.

* Revert "Restrict to OSX 10.11 tests."

This reverts commit 81823d2f97.

* ci_complete

(cherry picked from commit 106856ed86)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-10-02 21:48:34 +02:00
patchback[bot]
0ff27c3b44 yaml callback: prevent plugin from modifying PyYAML (#3478) (#3493)
* Prevent yaml callback from modifying PyYAML.

* Fix changelog fragment.

* Update changelogs/fragments/3478-yaml-callback.yml

Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com>

Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com>
(cherry picked from commit 5895e50185)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-10-02 20:22:40 +02:00
patchback[bot]
baf23f3ae2 Update redfish_info.py (#3485) (#3489)
* Update redfish_info.py

* Update plugins/modules/remote_management/redfish/redfish_info.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Update plugins/modules/remote_management/redfish/redfish_info.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Update plugins/modules/remote_management/redfish/redfish_info.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Update plugins/modules/remote_management/redfish/redfish_info.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Update plugins/modules/remote_management/redfish/redfish_info.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Update plugins/modules/remote_management/redfish/redfish_info.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Update plugins/modules/remote_management/redfish/redfish_info.py

* Update plugins/modules/remote_management/redfish/redfish_info.py

* Update plugins/modules/remote_management/redfish/redfish_info.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>
(cherry picked from commit 316e1d6bf2)

Co-authored-by: Rasdva3 <34684695+Rasdva3@users.noreply.github.com>
2021-10-01 15:17:10 +02:00
patchback[bot]
c9c535178f fix structure xcc_redfish_command (#3479) (#3481)
* adhere to proper task structure

* add changelog fragment

* return code formatting to original

* remove unnecessary fragment

(cherry picked from commit a14392fab0)

Co-authored-by: Zach Biles <bile0026@users.noreply.github.com>
2021-09-30 17:24:41 +02:00
patchback[bot]
86ff3eb02e Stick to community.crypto 1.x.y for ubuntu1604. (#3470) (#3476)
(cherry picked from commit 3fee872d58)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-09-29 20:53:23 +02:00
patchback[bot]
2cec7a1779 Copy the permissions along with file for jboss module (#3426) (#3468)
* Copy the permissions along with file for jboss module

Issue: The deployment file is copied with file content only. The file
permission is set to 440 and belongs to root user. When the
JBossI(Wildfly) server is running under non root account, it can't read
the deployment file.

With is fix, the correct permission can be set from previous task for JBoss
server to pickup the deployment file.

* Update changelogs/fragments/3426-copy-permissions-along-with-file-for-jboss-module.yml

Co-authored-by: Ajpantuso <ajpantuso@gmail.com>

Co-authored-by: Ajpantuso <ajpantuso@gmail.com>
(cherry picked from commit 7cfdc2ce8c)

Co-authored-by: Pan Luo <xcompass@gmail.com>
2021-09-29 05:44:53 +00:00
patchback[bot]
bcebeddb83 Enable ansibullbot notifications in issues and PRs (#3462) (#3464)
The more recent version of Ansibullbot defaults notifications to false.
We need to set it to true so it can notify contributors and maintainers.

(cherry picked from commit 845c406419)

Co-authored-by: David Moreau Simard <moi@dmsimard.com>
2021-09-29 06:41:29 +02:00
patchback[bot]
745da8e325 Fix: GitLab API searches always return first found match (#3400) (#3449)
* fix: return correct group id
match only full_path or name

* chore: add changelog fragment

* fix: indentation multiple of four

* refactor: use two loops

* fix: typo of group id

* fix: changelog fragment

(cherry picked from commit b6b7601615)

Co-authored-by: Chris Frage <chris.frage@cancom.de>
2021-09-26 19:49:02 +02:00
Felix Fontein
b610b654cc Restrict CI to ansible 2.9 up to 2.12. (#3434) 2021-09-25 21:24:18 +02:00
Felix Fontein
6fdeca5709 [WIP] [stable-2] Fix filesystem tests on OpenSuSE (#3443)
* Disable failing test on OpenSuSE.

* Fix condition.

* Correct fix.
2021-09-25 21:12:19 +02:00
patchback[bot]
e9900f9a8e Diable netcat conflict in zypper tests as one package seems to be no longer available. (#3438) (#3441)
(cherry picked from commit 3715b6ef46)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-09-25 17:42:55 +02:00
patchback[bot]
b475239b4f Fix CI (#3430) (#3432)
* Restrict to unit tests with devel (to be reverted later).

* Restrict lxml for Python 2.6.

* Revert "Restrict to unit tests with devel (to be reverted later)."

This reverts commit d0d87a8a0f.

(cherry picked from commit 935348ae78)

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-09-25 07:05:26 +00:00
Felix Fontein
a2f635449b Next expected release is 2.5.7. 2021-09-21 17:03:55 +02:00
60 changed files with 616 additions and 264 deletions

View File

@@ -24,14 +24,15 @@ schedules:
always: true
branches:
include:
- stable-2
- stable-3
- stable-4
- cron: 0 11 * * 0
displayName: Weekly (old stable branches)
always: true
branches:
include:
- stable-1
- stable-2
variables:
- name: checkoutPath
@@ -54,14 +55,14 @@ pool: Standard
stages:
### Sanity
- stage: Sanity_devel
displayName: Sanity devel
- stage: Sanity_2_12
displayName: Sanity 2.12
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Test {0}
testFormat: devel/sanity/{0}
testFormat: 2.12/sanity/{0}
targets:
- test: 1
- test: 2
@@ -108,14 +109,14 @@ stages:
- test: 3
- test: 4
### Units
- stage: Units_devel
displayName: Units devel
- stage: Units_2_12
displayName: Units 2.12
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: devel/units/{0}/1
testFormat: 2.12/units/{0}/1
targets:
- test: 2.6
- test: 2.7
@@ -174,13 +175,13 @@ stages:
- test: 3.8
## Remote
- stage: Remote_devel
displayName: Remote devel
- stage: Remote_2_12
displayName: Remote 2.12
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/{0}
testFormat: 2.12/{0}
targets:
- name: macOS 11.1
test: macos/11.1
@@ -188,8 +189,8 @@ stages:
test: rhel/7.9
- name: RHEL 8.4
test: rhel/8.4
- name: FreeBSD 12.2
test: freebsd/12.2
#- name: FreeBSD 12.2
# test: freebsd/12.2
- name: FreeBSD 13.0
test: freebsd/13.0
groups:
@@ -210,8 +211,8 @@ stages:
test: rhel/7.9
- name: RHEL 8.3
test: rhel/8.3
- name: FreeBSD 12.2
test: freebsd/12.2
#- name: FreeBSD 12.2
# test: freebsd/12.2
groups:
- 1
- 2
@@ -233,8 +234,8 @@ stages:
test: rhel/7.8
- name: RHEL 8.2
test: rhel/8.2
- name: FreeBSD 12.1
test: freebsd/12.1
#- name: FreeBSD 12.1
# test: freebsd/12.1
groups:
- 1
- 2
@@ -248,27 +249,25 @@ stages:
targets:
- name: RHEL 8.2
test: rhel/8.2
- name: FreeBSD 12.0
test: freebsd/12.0
#- name: FreeBSD 12.0
# test: freebsd/12.0
groups:
- 1
- 2
### Docker
- stage: Docker_devel
displayName: Docker devel
- stage: Docker_2_12
displayName: Docker 2.12
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: devel/linux/{0}
testFormat: 2.12/linux/{0}
targets:
- name: CentOS 6
test: centos6
- name: CentOS 7
test: centos7
- name: CentOS 8
test: centos8
- name: Fedora 33
test: fedora33
- name: Fedora 34
@@ -293,8 +292,6 @@ stages:
parameters:
testFormat: 2.11/linux/{0}
targets:
- name: CentOS 8
test: centos8
- name: Fedora 33
test: fedora33
- name: openSUSE 15 py3
@@ -312,8 +309,6 @@ stages:
parameters:
testFormat: 2.10/linux/{0}
targets:
- name: CentOS 8
test: centos8
- name: Fedora 32
test: fedora32
- name: openSUSE 15 py3
@@ -331,8 +326,6 @@ stages:
parameters:
testFormat: 2.9/linux/{0}
targets:
- name: CentOS 8
test: centos8
- name: Fedora 31
test: fedora31
- name: openSUSE 15 py3
@@ -342,14 +335,14 @@ stages:
- 3
### Cloud
- stage: Cloud_devel
displayName: Cloud devel
- stage: Cloud_2_12
displayName: Cloud 2.12
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
nameFormat: Python {0}
testFormat: devel/cloud/{0}/1
testFormat: 2.12/cloud/{0}/1
targets:
- test: 3.8
- stage: Cloud_2_11
@@ -386,23 +379,23 @@ stages:
- stage: Summary
condition: succeededOrFailed()
dependsOn:
- Sanity_devel
- Sanity_2_12
- Sanity_2_9
- Sanity_2_10
- Sanity_2_11
- Units_devel
- Units_2_12
- Units_2_9
- Units_2_10
- Units_2_11
- Remote_devel
- Remote_2_12
- Remote_2_9
- Remote_2_10
- Remote_2_11
- Docker_devel
- Docker_2_12
- Docker_2_9
- Docker_2_10
- Docker_2_11
- Cloud_devel
- Cloud_2_12
- Cloud_2_9
- Cloud_2_10
- Cloud_2_11

View File

@@ -11,7 +11,7 @@ mkdir "${agent_temp_directory}/coverage/"
options=(--venv --venv-system-site-packages --color -v)
ansible-test coverage combine --export "${agent_temp_directory}/coverage/" "${options[@]}"
ansible-test coverage combine --group-by command --export "${agent_temp_directory}/coverage/" "${options[@]}"
if ansible-test coverage analyze targets generate --help >/dev/null 2>&1; then
# Only analyze coverage if the installed version of ansible-test supports it.

View File

@@ -0,0 +1,101 @@
#!/usr/bin/env python
"""
Upload code coverage reports to codecov.io.
Multiple coverage files from multiple languages are accepted and aggregated after upload.
Python coverage, as well as PowerShell and Python stubs can all be uploaded.
"""
import argparse
import dataclasses
import pathlib
import shutil
import subprocess
import tempfile
import typing as t
import urllib.request
@dataclasses.dataclass(frozen=True)
class CoverageFile:
name: str
path: pathlib.Path
flags: t.List[str]
@dataclasses.dataclass(frozen=True)
class Args:
dry_run: bool
path: pathlib.Path
def parse_args() -> Args:
parser = argparse.ArgumentParser()
parser.add_argument('-n', '--dry-run', action='store_true')
parser.add_argument('path', type=pathlib.Path)
args = parser.parse_args()
# Store arguments in a typed dataclass
fields = dataclasses.fields(Args)
kwargs = {field.name: getattr(args, field.name) for field in fields}
return Args(**kwargs)
def process_files(directory: pathlib.Path) -> t.Tuple[CoverageFile, ...]:
processed = []
for file in directory.joinpath('reports').glob('coverage*.xml'):
name = file.stem.replace('coverage=', '')
# Get flags from name
flags = name.replace('-powershell', '').split('=') # Drop '-powershell' suffix
flags = [flag if not flag.startswith('stub') else flag.split('-')[0] for flag in flags] # Remove "-01" from stub files
processed.append(CoverageFile(name, file, flags))
return tuple(processed)
def upload_files(codecov_bin: pathlib.Path, files: t.Tuple[CoverageFile, ...], dry_run: bool = False) -> None:
for file in files:
cmd = [
str(codecov_bin),
'--name', file.name,
'--file', str(file.path),
]
for flag in file.flags:
cmd.extend(['--flags', flag])
if dry_run:
print(f'DRY-RUN: Would run command: {cmd}')
continue
subprocess.run(cmd, check=True)
def download_file(url: str, dest: pathlib.Path, flags: int, dry_run: bool = False) -> None:
if dry_run:
print(f'DRY-RUN: Would download {url} to {dest} and set mode to {flags:o}')
return
with urllib.request.urlopen(url) as resp:
with dest.open('w+b') as f:
# Read data in chunks rather than all at once
shutil.copyfileobj(resp, f, 64 * 1024)
dest.chmod(flags)
def main():
args = parse_args()
url = 'https://ansible-ci-files.s3.amazonaws.com/codecov/linux/codecov'
with tempfile.TemporaryDirectory(prefix='codecov-') as tmpdir:
codecov_bin = pathlib.Path(tmpdir) / 'codecov'
download_file(url, codecov_bin, 0o755, args.dry_run)
files = process_files(args.path)
upload_files(codecov_bin, files, args.dry_run)
if __name__ == '__main__':
main()

View File

@@ -1,27 +0,0 @@
#!/usr/bin/env bash
# Upload code coverage reports to codecov.io.
# Multiple coverage files from multiple languages are accepted and aggregated after upload.
# Python coverage, as well as PowerShell and Python stubs can all be uploaded.
set -o pipefail -eu
output_path="$1"
curl --silent --show-error https://ansible-ci-files.s3.us-east-1.amazonaws.com/codecov/codecov.sh > codecov.sh
for file in "${output_path}"/reports/coverage*.xml; do
name="${file}"
name="${name##*/}" # remove path
name="${name##coverage=}" # remove 'coverage=' prefix if present
name="${name%.xml}" # remove '.xml' suffix
bash codecov.sh \
-f "${file}" \
-n "${name}" \
-X coveragepy \
-X gcov \
-X fix \
-X search \
-X xcode \
|| echo "Failed to upload code coverage report to codecov.io: ${file}"
done

View File

@@ -12,4 +12,4 @@ if ! ansible-test --help >/dev/null 2>&1; then
pip install https://github.com/ansible/ansible/archive/devel.tar.gz --disable-pip-version-check
fi
ansible-test coverage xml --stub --venv --venv-system-site-packages --color -v
ansible-test coverage xml --group-by command --stub --venv --venv-system-site-packages --color -v

View File

@@ -33,7 +33,7 @@ jobs:
summaryFileLocation: "$(outputPath)/reports/$(pipelinesCoverage).xml"
displayName: Publish to Azure Pipelines
condition: gt(variables.coverageFileCount, 0)
- bash: .azure-pipelines/scripts/publish-codecov.sh "$(outputPath)"
- bash: .azure-pipelines/scripts/publish-codecov.py "$(outputPath)"
displayName: Publish to codecov.io
condition: gt(variables.coverageFileCount, 0)
continueOnError: true

1
.github/BOTMETA.yml vendored
View File

@@ -1,3 +1,4 @@
notifications: true
automerge: true
files:
plugins/:

View File

@@ -6,6 +6,55 @@ Community General Release Notes
This changelog describes changes after version 1.0.0.
v2.5.9
======
Release Summary
---------------
Final maintenance release of community.general major version 2.
Major Changes
-------------
- The community.general 2.x.y release stream is now effectively **End of Life**. No more releases will be made, and regular CI runs will stop.
v2.5.8
======
Release Summary
---------------
Announcement release.
Major Changes
-------------
- The community.general 2.x.y release stream will be **End of Life** on 2022-05-23, which coincides with the latest day that community.general 5.0.0 must be released (see `the Roadmap for Ansible 6 <https://github.com/ansible/ansible/blob/devel/docs/docsite/rst/roadmap/COLLECTIONS_6.rst#release-schedule>`_). At this point, community.general 2.0.0 has been released almost 1.5 years ago. It received new features for half a year, bugfixes for another half a year, and has only been receiving major bugfixes or security fixes until then. Please note that we `recently decided to shorten this last period from one year to roughly six months <https://github.com/ansible-community/community-topics/issues/55>`_. Thank you very much to everyone who contributed to the 2.x.y releases!
v2.5.7
======
Release Summary
---------------
Regular bugfix release. Please note that this is the last regular bugfix release, from now on only security fixes and major bugfixes will be accepted for the ``stable-2`` branch.
Bugfixes
--------
- gitlab_deploy_key - fix idempotency on projects with multiple deploy keys (https://github.com/ansible-collections/community.general/pull/3473).
- gitlab_group_members - ``get_group_id`` return the group ID by matching ``full_path``, ``path`` or ``name`` (https://github.com/ansible-collections/community.general/pull/3400).
- gitlab_project_members - ``get_project_id`` return the project id by matching ``full_path`` or ``name`` (https://github.com/ansible-collections/community.general/pull/3602).
- ipa_* modules - fix environment fallback for ``ipa_host`` option (https://github.com/ansible-collections/community.general/issues/3560).
- jboss - fix the deployment file permission issue when Jboss server is running under non-root user. The deployment file is copied with file content only. The file permission is set to ``440`` and belongs to root user. When the JBoss ``WildFly`` server is running under non-root user, it is unable to read the deployment file (https://github.com/ansible-collections/community.general/pull/3426).
- logstash callback plugin - replace ``_option`` with ``context.CLIARGS`` to fix the plugin on ansible-base and ansible-core (https://github.com/ansible-collections/community.general/issues/2692).
- proxmox_group_info - fix module crash if a ``group`` parameter is used (https://github.com/ansible-collections/community.general/pull/3649).
- redfish_utils module utils - if a manager network property is not specified in the service, attempt to change the requested settings (https://github.com/ansible-collections/community.general/issues/3404/).
- xattr - fix exception caused by ``_run_xattr()`` raising a ``ValueError`` due to a mishandling of base64-encoded value (https://github.com/ansible-collections/community.general/issues/3673).
- yaml callback plugin - avoid modifying PyYAML so that other plugins using it on the controller, like the ``to_yaml`` filter, do not produce different output (https://github.com/ansible-collections/community.general/issues/3471, https://github.com/ansible-collections/community.general/pull/3478).
v2.5.6
======
@@ -509,7 +558,7 @@ Deprecated Features
- puppet - deprecated undocumented parameter ``show_diff``, will be removed in 7.0.0. (https://github.com/ansible-collections/community.general/pull/1927).
- runit - unused parameter ``dist`` marked for deprecation (https://github.com/ansible-collections/community.general/pull/1830).
- slackpkg - deprecated invalid parameter alias ``update-cache``, will be removed in 5.0.0 (https://github.com/ansible-collections/community.general/pull/1927).
- urmpi - deprecated invalid parameter aliases ``update-cache`` and ``no-recommends``, will be removed in 5.0.0 (https://github.com/ansible-collections/community.general/pull/1927).
- urpmi - deprecated invalid parameter aliases ``update-cache`` and ``no-recommends``, will be removed in 5.0.0 (https://github.com/ansible-collections/community.general/pull/1927).
- xbps - deprecated invalid parameter alias ``update-cache``, will be removed in 5.0.0 (https://github.com/ansible-collections/community.general/pull/1927).
Bugfixes

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 and ansible-core 2.11 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 and ansible-core 2.12 releases. Ansible versions before 2.9.10 are not supported.
## External requirements

View File

@@ -1446,7 +1446,7 @@ releases:
- runit - unused parameter ``dist`` marked for deprecation (https://github.com/ansible-collections/community.general/pull/1830).
- slackpkg - deprecated invalid parameter alias ``update-cache``, will be removed
in 5.0.0 (https://github.com/ansible-collections/community.general/pull/1927).
- urmpi - deprecated invalid parameter aliases ``update-cache`` and ``no-recommends``,
- urpmi - deprecated invalid parameter aliases ``update-cache`` and ``no-recommends``,
will be removed in 5.0.0 (https://github.com/ansible-collections/community.general/pull/1927).
- xbps - deprecated invalid parameter alias ``update-cache``, will be removed
in 5.0.0 (https://github.com/ansible-collections/community.general/pull/1927).
@@ -2157,3 +2157,74 @@ releases:
- 3285-pamd-updated-with-empty-args.yaml
- 3336-openbsd_pkg-fix-KeyError.yml
release_date: '2021-09-21'
2.5.7:
changes:
bugfixes:
- gitlab_deploy_key - fix idempotency on projects with multiple deploy keys
(https://github.com/ansible-collections/community.general/pull/3473).
- gitlab_group_members - ``get_group_id`` return the group ID by matching ``full_path``,
``path`` or ``name`` (https://github.com/ansible-collections/community.general/pull/3400).
- gitlab_project_members - ``get_project_id`` return the project id by matching
``full_path`` or ``name`` (https://github.com/ansible-collections/community.general/pull/3602).
- ipa_* modules - fix environment fallback for ``ipa_host`` option (https://github.com/ansible-collections/community.general/issues/3560).
- jboss - fix the deployment file permission issue when Jboss server is running
under non-root user. The deployment file is copied with file content only.
The file permission is set to ``440`` and belongs to root user. When the JBoss
``WildFly`` server is running under non-root user, it is unable to read the
deployment file (https://github.com/ansible-collections/community.general/pull/3426).
- logstash callback plugin - replace ``_option`` with ``context.CLIARGS`` to
fix the plugin on ansible-base and ansible-core (https://github.com/ansible-collections/community.general/issues/2692).
- proxmox_group_info - fix module crash if a ``group`` parameter is used (https://github.com/ansible-collections/community.general/pull/3649).
- redfish_utils module utils - if a manager network property is not specified
in the service, attempt to change the requested settings (https://github.com/ansible-collections/community.general/issues/3404/).
- xattr - fix exception caused by ``_run_xattr()`` raising a ``ValueError``
due to a mishandling of base64-encoded value (https://github.com/ansible-collections/community.general/issues/3673).
- yaml callback plugin - avoid modifying PyYAML so that other plugins using
it on the controller, like the ``to_yaml`` filter, do not produce different
output (https://github.com/ansible-collections/community.general/issues/3471,
https://github.com/ansible-collections/community.general/pull/3478).
release_summary: Regular bugfix release. Please note that this is the last regular
bugfix release, from now on only security fixes and major bugfixes will be
accepted for the ``stable-2`` branch.
fragments:
- 2.5.7.yml
- 2692-logstash-callback-plugin-replacing_options.yml
- 3400-fix-gitLab-api-searches-always-return-first-found-match-3386.yml
- 3404-redfish_utils-skip-manager-network-check.yml
- 3426-copy-permissions-along-with-file-for-jboss-module.yml
- 3473-gitlab_deploy_key-fix_idempotency.yml
- 3478-yaml-callback.yml
- 3561-fix-ipa-host-var-detection.yml
- 3602-fix-gitlab_project_members-improve-search-method.yml
- 3649-proxmox_group_info_TypeError.yml
- 3675-xattr-handle-base64-values.yml
release_date: '2021-11-09'
2.5.8:
changes:
major_changes:
- The community.general 2.x.y release stream will be **End of Life** on 2022-05-23,
which coincides with the latest day that community.general 5.0.0 must be released
(see `the Roadmap for Ansible 6 <https://github.com/ansible/ansible/blob/devel/docs/docsite/rst/roadmap/COLLECTIONS_6.rst#release-schedule>`_).
At this point, community.general 2.0.0 has been released almost 1.5 years
ago. It received new features for half a year, bugfixes for another half a
year, and has only been receiving major bugfixes or security fixes until then.
Please note that we `recently decided to shorten this last period from one
year to roughly six months <https://github.com/ansible-community/community-topics/issues/55>`_.
Thank you very much to everyone who contributed to the 2.x.y releases!
release_summary: Announcement release.
fragments:
- 2.5.8.yml
- eol.yml
release_date: '2022-01-31'
2.5.9:
changes:
major_changes:
- The community.general 2.x.y release stream is now effectively **End of Life**.
No more releases will be made, and regular CI runs will stop.
release_summary: 'Final maintenance release of community.general major version
2.
'
fragments:
- 2.5.9.yml
release_date: '2022-05-16'

View File

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

View File

@@ -94,6 +94,7 @@ ansible.cfg: |
import os
import json
from ansible import context
import socket
import uuid
import logging
@@ -152,11 +153,11 @@ class CallbackModule(CallbackBase):
self.base_data['ansible_pre_command_output'] = os.popen(
self.ls_pre_command).read()
if self._options is not None:
self.base_data['ansible_checkmode'] = self._options.check
self.base_data['ansible_tags'] = self._options.tags
self.base_data['ansible_skip_tags'] = self._options.skip_tags
self.base_data['inventory'] = self._options.inventory
if context.CLIARGS is not None:
self.base_data['ansible_checkmode'] = context.CLIARGS.get('check')
self.base_data['ansible_tags'] = context.CLIARGS.get('tags')
self.base_data['ansible_skip_tags'] = context.CLIARGS.get('skip_tags')
self.base_data['inventory'] = context.CLIARGS.get('inventory')
def set_options(self, task_keys=None, var_options=None, direct=None):
super(CallbackModule, self).set_options(task_keys=task_keys, var_options=var_options, direct=direct)

View File

@@ -42,28 +42,29 @@ def should_use_block(value):
return False
def my_represent_scalar(self, tag, value, style=None):
"""Uses block style for multi-line strings"""
if style is None:
if should_use_block(value):
style = '|'
# we care more about readable than accuracy, so...
# ...no trailing space
value = value.rstrip()
# ...and non-printable characters
value = ''.join(x for x in value if x in string.printable or ord(x) >= 0xA0)
# ...tabs prevent blocks from expanding
value = value.expandtabs()
# ...and odd bits of whitespace
value = re.sub(r'[\x0b\x0c\r]', '', value)
# ...as does trailing space
value = re.sub(r' +\n', '\n', value)
else:
style = self.default_style
node = yaml.representer.ScalarNode(tag, value, style=style)
if self.alias_key is not None:
self.represented_objects[self.alias_key] = node
return node
class MyDumper(AnsibleDumper):
def represent_scalar(self, tag, value, style=None):
"""Uses block style for multi-line strings"""
if style is None:
if should_use_block(value):
style = '|'
# we care more about readable than accuracy, so...
# ...no trailing space
value = value.rstrip()
# ...and non-printable characters
value = ''.join(x for x in value if x in string.printable or ord(x) >= 0xA0)
# ...tabs prevent blocks from expanding
value = value.expandtabs()
# ...and odd bits of whitespace
value = re.sub(r'[\x0b\x0c\r]', '', value)
# ...as does trailing space
value = re.sub(r' +\n', '\n', value)
else:
style = self.default_style
node = yaml.representer.ScalarNode(tag, value, style=style)
if self.alias_key is not None:
self.represented_objects[self.alias_key] = node
return node
class CallbackModule(Default):
@@ -79,7 +80,6 @@ class CallbackModule(Default):
def __init__(self):
super(CallbackModule, self).__init__()
yaml.representer.BaseRepresenter.represent_scalar = my_represent_scalar
def _dump_results(self, result, indent=None, sort_keys=True, keep_invocation=False):
if result.get('_ansible_no_log', False):
@@ -121,7 +121,7 @@ class CallbackModule(Default):
if abridged_result:
dumped += '\n'
dumped += to_text(yaml.dump(abridged_result, allow_unicode=True, width=1000, Dumper=AnsibleDumper, default_flow_style=False))
dumped += to_text(yaml.dump(abridged_result, allow_unicode=True, width=1000, Dumper=MyDumper, default_flow_style=False))
# indent by a couple of spaces
dumped = '\n '.join(dumped.split('\n')).rstrip()

View File

@@ -31,6 +31,7 @@ def _env_then_dns_fallback(*args, **kwargs):
result = env_fallback(*args, **kwargs)
if result == '':
raise AnsibleFallbackNotFound
return result
except AnsibleFallbackNotFound:
# If no host was given, we try to guess it from IPA.
# The ipa-ca entry is a standard entry that IPA will have set for

View File

@@ -2740,7 +2740,9 @@ class RedfishUtils(object):
if isinstance(set_value, dict):
for subprop in payload[property].keys():
if subprop not in target_ethernet_current_setting[property]:
return {'ret': False, 'msg': "Sub-property %s in nic_config is invalid" % subprop}
# Not configured already; need to apply the request
need_change = True
break
sub_set_value = payload[property][subprop]
sub_cur_value = target_ethernet_current_setting[property][subprop]
if sub_set_value != sub_cur_value:
@@ -2754,7 +2756,9 @@ class RedfishUtils(object):
for i in range(len(set_value)):
for subprop in payload[property][i].keys():
if subprop not in target_ethernet_current_setting[property][i]:
return {'ret': False, 'msg': "Sub-property %s in nic_config is invalid" % subprop}
# Not configured already; need to apply the request
need_change = True
break
sub_set_value = payload[property][i][subprop]
sub_cur_value = target_ethernet_current_setting[property][i][subprop]
if sub_set_value != sub_cur_value:

View File

@@ -131,7 +131,7 @@ def main():
group = module.params['group']
if group:
groups = [proxmox.get_group(group=group)]
groups = [proxmox.get_group(groupid=group)]
else:
groups = proxmox.get_groups()
result['proxmox_groups'] = [group.group for group in groups]

View File

@@ -157,7 +157,7 @@ def _run_xattr(module, cmd, check_rc=True):
if line.startswith('#') or line == '':
pass
elif '=' in line:
(key, val) = line.split('=')
(key, val) = line.split('=', 1)
result[key] = val.strip('"')
else:
result[line] = ''

View File

@@ -84,13 +84,6 @@ EXAMPLES = '''
account_api_token: dummyapitoken
delegate_to: localhost
- name: Fetch my.com domain records
community.general.dnsimple:
domain: my.com
state: present
delegate_to: localhost
register: records
- name: Delete a domain
community.general.dnsimple:
domain: my.com

View File

@@ -132,10 +132,10 @@ EXAMPLES = '''
name: homebrew/cask/foo
state: present
- name: Use ignored-pinned option while upgrading all
- name: Use ignore-pinned option while upgrading all
community.general.homebrew:
upgrade_all: yes
upgrade_options: ignored-pinned
upgrade_options: ignore-pinned
'''
RETURN = '''

View File

@@ -168,7 +168,9 @@ EXAMPLES = '''
password: "{{ password }}"
resource_uri: "/redfish/v1/Managers/1/NetworkProtocol/Oem/Lenovo/DNS"
register: result
- ansible.builtin.debug:
- name: Print fetched information
ansible.builtin.debug:
msg: "{{ result.redfish_facts.data }}"
- name: Get Lenovo FoD key collection resource via GetCollectionResource command
@@ -180,7 +182,9 @@ EXAMPLES = '''
password: "{{ password }}"
resource_uri: "/redfish/v1/Managers/1/Oem/Lenovo/FoD/Keys"
register: result
- ansible.builtin.debug:
- name: Print fetched information
ansible.builtin.debug:
msg: "{{ result.redfish_facts.data_list }}"
- name: Update ComputeSystem property AssetTag via PatchResource command

View File

@@ -46,7 +46,9 @@ EXAMPLES = '''
api_version: 500
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Data Centers
ansible.builtin.debug:
msg: "{{ result.datacenters }}"
- name: Gather paginated, filtered and sorted information about Data Centers
@@ -61,7 +63,9 @@ EXAMPLES = '''
sort: 'name:descending'
filter: 'state=Unmanaged'
register: result
- ansible.builtin.debug:
- name: Print fetched information about paginated, filtered and sorted list of Data Centers
ansible.builtin.debug:
msg: "{{ result.datacenters }}"
- name: Gather information about a Data Center by name
@@ -73,7 +77,9 @@ EXAMPLES = '''
name: "My Data Center"
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Data Center found by name
ansible.builtin.debug:
msg: "{{ result.datacenters }}"
- name: Gather information about the Data Center Visual Content
@@ -87,9 +93,13 @@ EXAMPLES = '''
- visualContent
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Data Center found by name
ansible.builtin.debug:
msg: "{{ result.datacenters }}"
- ansible.builtin.debug:
- name: Print fetched information about Data Center Visual Content
ansible.builtin.debug:
msg: "{{ result.datacenter_visual_content }}"
'''

View File

@@ -49,7 +49,9 @@ EXAMPLES = '''
no_log: true
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Enclosures
ansible.builtin.debug:
msg: "{{ result.enclosures }}"
- name: Gather paginated, filtered and sorted information about Enclosures
@@ -66,7 +68,9 @@ EXAMPLES = '''
no_log: true
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about paginated, filtered ans sorted list of Enclosures
ansible.builtin.debug:
msg: "{{ result.enclosures }}"
- name: Gather information about an Enclosure by name
@@ -79,7 +83,9 @@ EXAMPLES = '''
no_log: true
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Enclosure found by name
ansible.builtin.debug:
msg: "{{ result.enclosures }}"
- name: Gather information about an Enclosure by name with options
@@ -96,13 +102,21 @@ EXAMPLES = '''
no_log: true
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Enclosure found by name
ansible.builtin.debug:
msg: "{{ result.enclosures }}"
- ansible.builtin.debug:
- name: Print fetched information about Enclosure Script
ansible.builtin.debug:
msg: "{{ result.enclosure_script }}"
- ansible.builtin.debug:
- name: Print fetched information about Enclosure Environmental Configuration
ansible.builtin.debug:
msg: "{{ result.enclosure_environmental_configuration }}"
- ansible.builtin.debug:
- name: Print fetched information about Enclosure Utilization
ansible.builtin.debug:
msg: "{{ result.enclosure_utilization }}"
- name: "Gather information about an Enclosure with temperature data at a resolution of one sample per day, between two
@@ -124,9 +138,13 @@ EXAMPLES = '''
no_log: true
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Enclosure found by name
ansible.builtin.debug:
msg: "{{ result.enclosures }}"
- ansible.builtin.debug:
- name: Print fetched information about Enclosure Utilization
ansible.builtin.debug:
msg: "{{ result.enclosure_utilization }}"
'''

View File

@@ -43,7 +43,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Ethernet Networks
ansible.builtin.debug:
msg: "{{ result.ethernet_networks }}"
- name: Gather paginated and filtered information about Ethernet Networks
@@ -57,7 +58,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about paginated and filtered list of Ethernet Networks
ansible.builtin.debug:
msg: "{{ result.ethernet_networks }}"
- name: Gather information about an Ethernet Network by name
@@ -67,7 +69,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Ethernet Network found by name
ansible.builtin.debug:
msg: "{{ result.ethernet_networks }}"
- name: Gather information about an Ethernet Network by name with options
@@ -80,9 +83,12 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Ethernet Network Associated Profiles
ansible.builtin.debug:
msg: "{{ result.enet_associated_profiles }}"
- ansible.builtin.debug:
- name: Print fetched information about Ethernet Network Associated Uplink Groups
ansible.builtin.debug:
msg: "{{ result.enet_associated_uplink_groups }}"
'''

View File

@@ -38,7 +38,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Fibre Channel Networks
ansible.builtin.debug:
msg: "{{ result.fc_networks }}"
- name: Gather paginated, filtered and sorted information about Fibre Channel Networks
@@ -51,7 +52,9 @@ EXAMPLES = '''
filter: 'fabricType=FabricAttach'
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about paginated, filtered and sorted list of Fibre Channel Networks
ansible.builtin.debug:
msg: "{{ result.fc_networks }}"
- name: Gather information about a Fibre Channel Network by name
@@ -61,7 +64,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Fibre Channel Network found by name
ansible.builtin.debug:
msg: "{{ result.fc_networks }}"
'''

View File

@@ -37,7 +37,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about FCoE Networks
ansible.builtin.debug:
msg: "{{ result.fcoe_networks }}"
- name: Gather paginated, filtered and sorted information about FCoE Networks
@@ -51,7 +52,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about paginated, filtered and sorted list of FCoE Networks
ansible.builtin.debug:
msg: "{{ result.fcoe_networks }}"
- name: Gather information about a FCoE Network by name
@@ -61,7 +63,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about FCoE Network found by name
ansible.builtin.debug:
msg: "{{ result.fcoe_networks }}"
'''

View File

@@ -42,7 +42,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Logical Interconnect Groups
ansible.builtin.debug:
msg: "{{ result.logical_interconnect_groups }}"
- name: Gather paginated, filtered and sorted information about Logical Interconnect Groups
@@ -60,7 +61,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about paginated, filtered and sorted list of Logical Interconnect Groups
ansible.builtin.debug:
msg: "{{ result.logical_interconnect_groups }}"
- name: Gather information about a Logical Interconnect Group by name
@@ -74,7 +76,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Logical Interconnect Group found by name
ansible.builtin.debug:
msg: "{{ result.logical_interconnect_groups }}"
'''

View File

@@ -50,10 +50,11 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Network Sets
ansible.builtin.debug:
msg: "{{ result.network_sets }}"
- name: Gather paginated, filtered, and sorted information about Network Sets
- name: Gather paginated, filtered and sorted information about Network Sets
community.general.oneview_network_set_info:
hostname: 172.16.101.48
username: administrator
@@ -68,7 +69,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about paginated, filtered and sorted list of Network Sets
ansible.builtin.debug:
msg: "{{ result.network_sets }}"
- name: Gather information about all Network Sets, excluding Ethernet networks
@@ -83,7 +85,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Network Sets, excluding Ethernet networks
ansible.builtin.debug:
msg: "{{ result.network_sets }}"
- name: Gather information about a Network Set by name
@@ -97,7 +100,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Network Set found by name
ansible.builtin.debug:
msg: "{{ result.network_sets }}"
- name: Gather information about a Network Set by name, excluding Ethernet networks
@@ -113,7 +117,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about Network Set found by name, excluding Ethernet networks
ansible.builtin.debug:
msg: "{{ result.network_sets }}"
'''

View File

@@ -45,7 +45,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about SAN Managers
ansible.builtin.debug:
msg: "{{ result.san_managers }}"
- name: Gather paginated, filtered and sorted information about SAN Managers
@@ -59,7 +60,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about paginated, filtered and sorted list of SAN Managers
ansible.builtin.debug:
msg: "{{ result.san_managers }}"
- name: Gather information about a SAN Manager by provider display name
@@ -69,7 +71,8 @@ EXAMPLES = '''
delegate_to: localhost
register: result
- ansible.builtin.debug:
- name: Print fetched information about SAN Manager found by provider display name
ansible.builtin.debug:
msg: "{{ result.san_managers }}"
'''

View File

@@ -67,7 +67,9 @@ EXAMPLES = '''
username: "{{ username }}"
password: "{{ password }}"
register: result
- ansible.builtin.debug:
- name: Print fetched information
ansible.builtin.debug:
msg: "{{ result.redfish_facts.cpu.entries | to_nice_json }}"
- name: Get CPU model
@@ -78,7 +80,9 @@ EXAMPLES = '''
username: "{{ username }}"
password: "{{ password }}"
register: result
- ansible.builtin.debug:
- name: Print fetched information
ansible.builtin.debug:
msg: "{{ result.redfish_facts.cpu.entries.0.Model }}"
- name: Get memory inventory
@@ -108,7 +112,9 @@ EXAMPLES = '''
username: "{{ username }}"
password: "{{ password }}"
register: result
- ansible.builtin.debug:
- name: Print fetched information
ansible.builtin.debug:
msg: "{{ result.redfish_facts.virtual_media.entries | to_nice_json }}"
- name: Get Volume Inventory
@@ -119,7 +125,8 @@ EXAMPLES = '''
username: "{{ username }}"
password: "{{ password }}"
register: result
- ansible.builtin.debug:
- name: Print fetched information
ansible.builtin.debug:
msg: "{{ result.redfish_facts.volume.entries | to_nice_json }}"
- name: Get Session information
@@ -130,7 +137,9 @@ EXAMPLES = '''
username: "{{ username }}"
password: "{{ password }}"
register: result
- ansible.builtin.debug:
- name: Print fetched information
ansible.builtin.debug:
msg: "{{ result.redfish_facts.session.entries | to_nice_json }}"
- name: Get default inventory information
@@ -139,7 +148,8 @@ EXAMPLES = '''
username: "{{ username }}"
password: "{{ password }}"
register: result
- ansible.builtin.debug:
- name: Print fetched information
ansible.builtin.debug:
msg: "{{ result.redfish_facts | to_nice_json }}"
- name: Get several inventories

View File

@@ -96,7 +96,7 @@ author:
'''
EXAMPLES = '''
- name: create a new webhook that triggers on push (password auth)
- name: Create a new webhook that triggers on push (password auth)
community.general.github_webhook:
repository: ansible/ansible
url: https://www.example.com/hooks/

View File

@@ -204,7 +204,7 @@ class GitLabDeployKey(object):
@param key_title Title of the key
'''
def findDeployKey(self, project, key_title):
deployKeys = project.keys.list()
deployKeys = project.keys.list(all=True)
for deployKey in deployKeys:
if (deployKey.title == key_title):
return deployKey

View File

@@ -102,9 +102,13 @@ class GitLabGroup(object):
# get group id if group exists
def get_group_id(self, gitlab_group):
group_exists = self._gitlab.groups.list(search=gitlab_group)
if group_exists:
return group_exists[0].id
groups = self._gitlab.groups.list(search=gitlab_group)
for group in groups:
if group.full_path == gitlab_group:
return group.id
for group in groups:
if group.path == gitlab_group or group.name == gitlab_group:
return group.id
# get all members in a group
def get_members_in_a_group(self, gitlab_group_id):

View File

@@ -48,7 +48,7 @@ options:
type: str
project:
description:
- The name of the GitLab project the member is added to/removed from.
- The name (or full path) of the GitLab project the member is added to/removed from.
required: true
type: str
gitlab_user:
@@ -118,9 +118,13 @@ class GitLabProjectMembers(object):
self._gitlab = gl
def get_project(self, project_name):
project_exists = self._gitlab.projects.list(search=project_name)
if project_exists:
return project_exists[0].id
try:
project_exists = self._gitlab.projects.get(project_name)
return project_exists.id
except gitlab.exceptions.GitlabGetError as e:
project_exists = self._gitlab.projects.list(search=project_name)
if project_exists:
return project_exists[0].id
def get_user_id(self, gitlab_user):
user_exists = self._gitlab.users.list(username=gitlab_user)

View File

@@ -86,7 +86,7 @@ options:
type: str
maximum_timeout:
description:
- The maximum timeout that a runner has to pick up a specific job.
- The maximum time that a runner has to complete a specific job.
required: False
default: 3600
type: int

View File

@@ -142,7 +142,7 @@ def main():
# Clean up old failed deployment
os.remove(os.path.join(deploy_path, "%s.failed" % deployment))
shutil.copyfile(src, os.path.join(deploy_path, deployment))
module.preserved_copy(src, os.path.join(deploy_path, deployment))
while not deployed:
deployed = is_deployed(deploy_path, deployment)
if is_failed(deploy_path, deployment):
@@ -153,7 +153,7 @@ def main():
if state == 'present' and deployed:
if module.sha1(src) != module.sha1(os.path.join(deploy_path, deployment)):
os.remove(os.path.join(deploy_path, "%s.deployed" % deployment))
shutil.copyfile(src, os.path.join(deploy_path, deployment))
module.preserved_copy(src, os.path.join(deploy_path, deployment))
deployed = False
while not deployed:
deployed = is_deployed(deploy_path, deployment)

View File

@@ -2,3 +2,4 @@ needs/root
shippable/posix/group2
destructive
skip/aix
skip/osx # FIXME

View File

@@ -58,3 +58,40 @@
"PLAY RECAP *********************************************************************",
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
]
- name: Test to_yaml
environment:
ANSIBLE_NOCOLOR: 'true'
ANSIBLE_FORCE_COLOR: 'false'
ANSIBLE_STDOUT_CALLBACK: community.general.yaml
playbook: |
- hosts: testhost
gather_facts: false
vars:
data: |
line 1
line 2
line 3
tasks:
- name: Test to_yaml
debug:
msg: "{{ '{{' }}'{{ '{{' }}'{{ '}}' }} data | to_yaml {{ '{{' }}'{{ '}}' }}'{{ '}}' }}"
# The above should be: msg: "{{ data | to_yaml }}"
# Unfortunately, the way Ansible handles templating, we need to do some funny 'escaping' tricks...
expected_output: [
"",
"PLAY [testhost] ****************************************************************",
"",
"TASK [Test to_yaml] ************************************************************",
"ok: [testhost] => ",
" msg: |-",
" 'line 1",
" ",
" line 2",
" ",
" line 3",
" ",
" '",
"",
"PLAY RECAP *********************************************************************",
"testhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 "
]

View File

@@ -36,7 +36,7 @@
commonName: localhost
- name: Generate selfsigned certificate
register: selfsigned_certificate
community.crypto.openssl_certificate:
community.crypto.x509_certificate:
path: '{{ remote_tmp_dir }}/cert.pem'
csr_path: '{{ remote_tmp_dir }}/csr.csr'
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'

View File

@@ -70,9 +70,9 @@
- 'uuid3.stdout == uuid4.stdout' # unchanged
- when:
- (grow | bool and (fstype != "vfat" or resize_vfat)) or
- ((grow | bool and (fstype != "vfat" or resize_vfat)) or
(fstype == "xfs" and ansible_system == "Linux" and
ansible_distribution not in ["CentOS", "Ubuntu"])
ansible_distribution not in ["CentOS", "Ubuntu", "openSUSE Leap"]))
block:
- name: Check that resizefs does nothing if device size is not changed
filesystem:

View File

@@ -32,54 +32,66 @@
# that:
# - upgrade_option_result.changed
- name: Install xz package using homebrew
homebrew:
name: xz
state: present
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: xz_result
- vars:
package_name: gnu-tar
- assert:
that:
- xz_result.changed
block:
- name: Make sure {{ package_name }} package is not installed
homebrew:
name: "{{ package_name }}"
state: absent
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
- name: Again install xz package using homebrew
homebrew:
name: xz
state: present
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: xz_result
- name: Install {{ package_name }} package using homebrew
homebrew:
name: "{{ package_name }}"
state: present
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: package_result
- assert:
that:
- not xz_result.changed
- assert:
that:
- package_result.changed
- name: Uninstall xz package using homebrew
homebrew:
name: xz
state: absent
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: xz_result
- name: Again install {{ package_name }} package using homebrew
homebrew:
name: "{{ package_name }}"
state: present
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: package_result
- assert:
that:
- xz_result.changed
- assert:
that:
- not package_result.changed
- name: Again uninstall xz package using homebrew
homebrew:
name: xz
state: absent
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: xz_result
- name: Uninstall {{ package_name }} package using homebrew
homebrew:
name: "{{ package_name }}"
state: absent
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: package_result
- assert:
that:
- not xz_result.changed
- assert:
that:
- package_result.changed
- name: Again uninstall {{ package_name }} package using homebrew
homebrew:
name: "{{ package_name }}"
state: absent
update_homebrew: no
become: yes
become_user: "{{ brew_stat.stat.pw_name }}"
register: package_result
- assert:
that:
- not package_result.changed

View File

@@ -1,3 +1,4 @@
shippable/posix/group1
destructive
skip/aix
skip/osx # FIXME

View File

@@ -47,7 +47,7 @@
- name: Generate selfsigned certificate
register: selfsigned_certificate
community.crypto.openssl_certificate:
community.crypto.x509_certificate:
path: '{{ remote_tmp_dir }}/cert.pem'
csr_path: '{{ remote_tmp_dir }}/csr.csr'
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'

View File

@@ -18,7 +18,7 @@ redis_bin:
CentOS: /usr/bin/redis-server
FreeBSD: /usr/local/bin/redis-server
redis_module: "{{ (ansible_python_version is version('2.7', '>=')) | ternary('redis', 'redis==2.10.6') }}"
redis_module: redis
redis_password: PASS

View File

@@ -1,2 +1,3 @@
dependencies:
- setup_pkg_mgr
- setup_remote_constraints

View File

@@ -44,6 +44,7 @@
- name: Install redis module
pip:
name: "{{ redis_module }}"
extra_args: "-c {{ remote_constraints }}"
state: present
notify: cleanup redis

View File

@@ -419,35 +419,35 @@
- zypper_result_update_cache_check is successful
- zypper_result_update_cache_check is not changed
- name: ensure no previous netcat package still exists
zypper:
name:
- netcat-openbsd
- gnu-netcat
state: absent
- name: install netcat-openbsd which conflicts with gnu-netcat
zypper:
name: netcat-openbsd
state: present
- name: try installation of gnu-netcat which should fail due to the conflict
zypper:
name: gnu-netcat
state: present
ignore_errors: yes
register: zypper_pkg_conflict
- assert:
that:
- zypper_pkg_conflict is failed
- "'conflicts with netcat-openbsd provided' in zypper_pkg_conflict.stdout"
- name: retry installation of gnu-netcat with force_resolution set to choose a resolution
zypper:
name: gnu-netcat
state: present
force_resolution: True
# - name: ensure no previous netcat package still exists
# zypper:
# name:
# - netcat-openbsd
# - gnu-netcat
# state: absent
#
# - name: install netcat-openbsd which conflicts with gnu-netcat
# zypper:
# name: netcat-openbsd
# state: present
#
# - name: try installation of gnu-netcat which should fail due to the conflict
# zypper:
# name: gnu-netcat
# state: present
# ignore_errors: yes
# register: zypper_pkg_conflict
#
# - assert:
# that:
# - zypper_pkg_conflict is failed
# - "'conflicts with netcat-openbsd provided' in zypper_pkg_conflict.stdout"
#
# - name: retry installation of gnu-netcat with force_resolution set to choose a resolution
# zypper:
# name: gnu-netcat
# state: present
# force_resolution: True
- name: duplicate rpms block
vars:

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
"""Check extra collection docs with antsibull-lint."""
"""Check extra collection docs with antsibull-docs."""
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type

View File

@@ -5,6 +5,6 @@
],
"output": "path-line-column-message",
"requirements": [
"antsibull"
"antsibull-docs"
]
}

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env python
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
"""Check extra collection docs with antsibull-lint."""
"""Check extra collection docs with antsibull-docs."""
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
@@ -14,7 +14,7 @@ def main():
"""Main entry point."""
if not os.path.isdir(os.path.join('docs', 'docsite')):
return
p = subprocess.run(['antsibull-lint', 'collection-docs', '.'], check=False)
p = subprocess.run(['antsibull-docs', 'lint-collection-docs', '.'], check=False)
if p.returncode not in (0, 3):
print('{0}:0:0: unexpected return code {1}'.format(sys.argv[0], p.returncode))

View File

@@ -1,3 +1,9 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
.azure-pipelines/scripts/publish-codecov.py compile-2.6!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py compile-2.7!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py compile-3.5!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py future-import-boilerplate
.azure-pipelines/scripts/publish-codecov.py metaclass-boilerplate
plugins/module_utils/cloud.py pylint:bad-option-value # a pylint test that is disabled was modified over time
plugins/module_utils/compat/ipaddress.py no-assert
plugins/module_utils/compat/ipaddress.py no-unicode-literals

View File

@@ -1,3 +1,9 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
.azure-pipelines/scripts/publish-codecov.py compile-2.6!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py compile-2.7!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py compile-3.5!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py future-import-boilerplate
.azure-pipelines/scripts/publish-codecov.py metaclass-boilerplate
plugins/module_utils/compat/ipaddress.py no-assert
plugins/module_utils/compat/ipaddress.py no-unicode-literals
plugins/modules/cloud/linode/linode.py validate-modules:parameter-list-no-elements

View File

@@ -1,3 +1,4 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
plugins/module_utils/compat/ipaddress.py no-assert
plugins/module_utils/compat/ipaddress.py no-unicode-literals
plugins/modules/cloud/linode/linode.py validate-modules:parameter-list-no-elements

View File

@@ -1,3 +1,9 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
.azure-pipelines/scripts/publish-codecov.py compile-2.6!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py compile-2.7!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py compile-3.5!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py future-import-boilerplate
.azure-pipelines/scripts/publish-codecov.py metaclass-boilerplate
plugins/module_utils/cloud.py pylint:bad-option-value # a pylint test that is disabled was modified over time
plugins/module_utils/compat/ipaddress.py no-assert
plugins/module_utils/compat/ipaddress.py no-unicode-literals

View File

@@ -38,7 +38,7 @@ class OneViewBaseTest(object):
testing_module = getattr(oneview_module, testing_module)
try:
# Load scenarios from module examples (Also checks if it is a valid yaml)
EXAMPLES = yaml.load(testing_module.EXAMPLES, yaml.SafeLoader)
EXAMPLES = yaml.safe_load(testing_module.EXAMPLES)
except yaml.scanner.ScannerError:
message = "Something went wrong while parsing yaml from {0}.EXAMPLES".format(self.testing_class.__module__)
@@ -140,7 +140,7 @@ class OneViewBaseTestCase(object):
try:
# Load scenarios from module examples (Also checks if it is a valid yaml)
self.EXAMPLES = yaml.load(self.testing_module.EXAMPLES, yaml.SafeLoader)
self.EXAMPLES = yaml.safe_load(self.testing_module.EXAMPLES)
except yaml.scanner.ScannerError:
message = "Something went wrong while parsing yaml from {0}.EXAMPLES".format(self.testing_class.__module__)

View File

@@ -132,7 +132,7 @@ class EthernetNetworkModuleSpec(unittest.TestCase,
self.resource.update.return_value = data_merged
self.mock_ov_client.connection_templates.get.return_value = {"uri": "uri"}
self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES)
self.mock_ansible_module.params = yaml.safe_load(YAML_PARAMS_WITH_CHANGES)
EthernetNetworkModule().run()
@@ -146,7 +146,7 @@ class EthernetNetworkModuleSpec(unittest.TestCase,
self.resource.get_by.return_value = [DICT_PARAMS_WITH_CHANGES]
self.mock_ov_client.connection_templates.get.return_value = {"uri": "uri"}
self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES)
self.mock_ansible_module.params = yaml.safe_load(YAML_PARAMS_WITH_CHANGES)
EthernetNetworkModule().run()
@@ -165,7 +165,7 @@ class EthernetNetworkModuleSpec(unittest.TestCase,
self.mock_ov_client.connection_templates.get.return_value = {
"bandwidth": DICT_PARAMS_WITH_CHANGES['bandwidth']}
self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES)
self.mock_ansible_module.params = yaml.safe_load(YAML_PARAMS_WITH_CHANGES)
EthernetNetworkModule().run()
@@ -182,7 +182,7 @@ class EthernetNetworkModuleSpec(unittest.TestCase,
self.resource.get_by.return_value = [DEFAULT_ENET_TEMPLATE]
self.resource.update.return_value = data_merged
self.mock_ansible_module.params = yaml.load(YAML_PARAMS_WITH_CHANGES)
self.mock_ansible_module.params = yaml.safe_load(YAML_PARAMS_WITH_CHANGES)
EthernetNetworkModule().run()
@@ -320,7 +320,7 @@ class EthernetNetworkModuleSpec(unittest.TestCase,
"max": 1
}}
self.mock_ansible_module.params = yaml.load(YAML_RESET_CONNECTION_TEMPLATE)
self.mock_ansible_module.params = yaml.safe_load(YAML_RESET_CONNECTION_TEMPLATE)
EthernetNetworkModule().run()
@@ -331,7 +331,7 @@ class EthernetNetworkModuleSpec(unittest.TestCase,
def test_should_fail_when_reset_not_existing_ethernet_network(self):
self.resource.get_by.return_value = [None]
self.mock_ansible_module.params = yaml.load(YAML_RESET_CONNECTION_TEMPLATE)
self.mock_ansible_module.params = yaml.safe_load(YAML_RESET_CONNECTION_TEMPLATE)
EthernetNetworkModule().run()

View File

@@ -17,7 +17,8 @@ PyGithub
httmock
# requirement for maven_artifact module
lxml
lxml < 4.3.0 ; python_version < '2.7' # lxml 4.3.0 and later require python 2.7 or later
lxml ; python_version >= '2.7'
semantic_version
# requirement for datadog_downtime module

View File

@@ -29,6 +29,7 @@ openshift >= 0.6.2, < 0.9.0 # merge_type support
virtualenv < 16.0.0 ; python_version < '2.7' # virtualenv 16.0.0 and later require python 2.7 or later
pathspec < 0.6.0 ; python_version < '2.7' # pathspec 0.6.0 and later require python 2.7 or later
pyopenssl < 18.0.0 ; python_version < '2.7' # pyOpenSSL 18.0.0 and later require python 2.7 or later
pyopenssl < 22.0.0 ; python_version >= '2.7' and python_version < '3.6' # pyOpenSSL 22.0.0 and later require python 3.6 or later
pyfmg == 0.6.1 # newer versions do not pass current unit tests
pyyaml < 5.1 ; python_version < '2.7' # pyyaml 5.1 and later require python 2.7 or later
pycparser < 2.19 ; python_version < '2.7' # pycparser 2.19 and later require python 2.7 or later
@@ -43,6 +44,9 @@ botocore >= 1.10.0, < 1.14 ; python_version < '2.7' # adds support for the follo
botocore >= 1.10.0 ; python_version >= '2.7' # adds support for the following AWS services: secretsmanager, fms, and acm-pca
setuptools < 45 ; python_version <= '2.7' # setuptools 45 and later require python 3.5 or later
cffi >= 1.14.2, != 1.14.3 # Yanked version which older versions of pip will still install:
redis == 2.10.6 ; python_version < '2.7'
redis < 4.0.0 ; python_version >= '2.7' and python_version < '3.6'
redis ; python_version >= '3.6'
# freeze pylint and its requirements for consistent test results
astroid == 2.2.5

View File

@@ -17,6 +17,10 @@ fi
stage="${S:-prod}"
provider="${P:-default}"
if [ "${platform}" == "rhel" ] && [[ "${version}" =~ ^8 ]]; then
echo "pynacl >= 1.4.0, < 1.5.0; python_version == '3.6'" >> tests/utils/constraints.txt
fi
# shellcheck disable=SC2086
ansible-test integration --color -v --retry-on-error "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"} \
--remote "${platform}/${version}" --remote-terminate always --remote-stage "${stage}" --remote-provider "${provider}"

View File

@@ -50,7 +50,7 @@ function retry
echo "@* -> ${result}"
done
echo "Command '@*' failed 3 times!"
exit -1
exit 255
}
command -v pip
@@ -86,10 +86,14 @@ if [ "${script}" != "sanity" ] || [ "${test}" == "sanity/extra" ]; then
# retry ansible-galaxy -vvv collection install community.internal_test_tools
fi
if [ "${script}" != "sanity" ] && [ "${script}" != "units" ]; then
if [ "${script}" != "sanity" ] && [ "${script}" != "units" ] && [ "${test}" != "sanity/extra" ]; then
CRYPTO_BRANCH=main
if [ "${script}" == "linux" ] && [[ "${test}" =~ "ubuntu1604/" ]]; then
CRYPTO_BRANCH=stable-1
fi
# To prevent Python dependencies on other collections only install other collections for integration tests
retry git clone --depth=1 --single-branch https://github.com/ansible-collections/ansible.posix.git "${ANSIBLE_COLLECTIONS_PATHS}/ansible_collections/ansible/posix"
retry git clone --depth=1 --single-branch https://github.com/ansible-collections/community.crypto.git "${ANSIBLE_COLLECTIONS_PATHS}/ansible_collections/community/crypto"
retry git clone --depth=1 --branch "${CRYPTO_BRANCH}" --single-branch https://github.com/ansible-collections/community.crypto.git "${ANSIBLE_COLLECTIONS_PATHS}/ansible_collections/community/crypto"
# NOTE: we're installing with git to work around Galaxy being a huge PITA (https://github.com/ansible/galaxy/issues/2429)
# retry ansible-galaxy -vvv collection install ansible.posix
# retry ansible-galaxy -vvv collection install community.crypto

View File

@@ -22,7 +22,13 @@ esac
ansible-test env --timeout "${timeout}" --color -v
if [ "$2" == "2.9" ]; then
# 1.5.0+ will not install for Python 3.6+ in the 2.9 setting (due to `enum` being installed)
echo "pynacl >= 1.4.0, < 1.5.0; python_version >= '3.6'" >> tests/unit/requirements.txt
fi
if [ "$2" == "2.10" ]; then
sed -i -E 's/^redis($| .*)/redis < 4.1.0/g' tests/unit/requirements.txt
sed -i -E 's/^python-gitlab($| .*)/python-gitlab < 2.10.1 ; python_version >= '\'3.6\''/g' tests/unit/requirements.txt
echo "python-gitlab ; python_version < '3.6'" >> tests/unit/requirements.txt
fi