bug(lookup/merge_variables): Fix rendering foreign variables (#8303)
* manually prepare variables of foreign host including hostvars property
* render variables from context of current host
* add integration test for cross host merge
* lint fixes
* adjust cross host merge unit tests to provide a tiny bit of the HostVars Class API
* add license information
* lint
* add changelog fragment
* Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml
Okay
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
* Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml
Okay
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
* Update tests/integration/targets/lookup_merge_variables/test_cross_host_merge_play.yml
Okay
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
* rename _HostVars to HostVarsMock
* removing unnecessary task
---------
Co-authored-by: Gitlab CI <alexander.petrenz@posteo.de>
Co-authored-by: Mark <40321020+m-a-r-k-e@users.noreply.github.com>
(cherry picked from commit 136419c5c0)
Co-authored-by: Alexander Petrenz <petrenz.a@gmail.com>
bitwarden - add support for filtering by organization_id (#8188)
* bitwarden - add support for filtering by organization_id
* Update changelogs/fragments/8188-bitwarden-add-organization_id.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* implement PR discussion result on wording
* rewrite search_field filtering
To correctly handle organization_id and collection_id by passing both to bw.
Tests needed to be extended to filter organizations / collections and
the testdata needed changes to reflect that a collection always belongs to a
single organizaion
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 865de5baa0)
Co-authored-by: Kai <github@sistason.de>
feat(lookup/bitwarden): add support for fetching all items from a collection (#8013)
Signed-off-by: Emilien Escalle <emilien.escalle@escemi.com>
(cherry picked from commit f5fa16c881)
Co-authored-by: Emilien Escalle <neilime@users.noreply.github.com>
Implement usb_facts module (#8076)
* First implementation of usb module
* Rename to usb_facts
* Working tests
* Appease linter
* Fix author
* Remove splitlines arg for python 2.7 compat
* indent usb test further
* indent usb test a bit less
* Remove trailing whitespace
* Update plugins/modules/usb_facts.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/modules/usb_facts.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Adjust usb_facts PR based on feedback
* Add usage example and extend correct documentation fragment
* Add myself to BOTMETA.yml
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6298ad4faa)
Co-authored-by: Maxopoly <max@dermax.org>
fixes#7918 - onepassword lookup fails if field name contains uppercase letters and section is specified (#7919)
* fix#7918
* Update plugins/lookup/onepassword.py
Co-authored-by: Sam Doran <github@samdoran.com>
* onepassword lookup: transform field ids to lowercase
* #7918: added unit tests
* #7919: add changelog fragment
* Update changelogs/fragments/7919-onepassword-fieldname-casing.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Sam Doran <github@samdoran.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 6088e2dc0f)
Co-authored-by: Benjamin Mitzkus <b.mitzkus@gmx.de>
ipa_otptoken: fix wrong return value string to bool (#7795)
ipa_data is return ipatokendisable in boolean format and the module expects it as a string
this behavior causes a lack of idempotency and the get_diff module will fail in the second run.
(cherry picked from commit 31de16cee3)
Co-authored-by: Parsa Yousefi <p.yousefi97@gmail.com>
CI: for some reason async-timeout doesn't seem to get installed on Python 3.11 (#7811)
For some reason async-timeout doesn't seem to get installed on Python 3.11.
(cherry picked from commit 9946f758af)
Add github_app_access_token lookup plugin (#7761)
* Add github_app_access_token lookup plugin
* Fix a typo in short_description
* Remove unused MockOpenUrl
* Fix MockJWT to be used on jwt_instance instead
* Fix a bunch of pep8 and pylint issue
* Remove JWT from requirements, also default jwt_instance and jwk_from_pem so they can be mocked
* Update version added
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update git reference in doc
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/lookup/github_app_access_token.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Expose token expiry as a configurable option
* Update BOTMETA.yml
* Update documentation
* Update example with var, so it is more readable
Co-authored-by: Felix Fontein <felix@fontein.de>
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 3318034403)
Co-authored-by: weisheng-p <weisheng-p@users.noreply.github.com>
Proxmox add storage content listing (#7725)
Add module to list content on proxmox storage
We first add a method to list storage content for proxmox, then use that
new methode to add an Ansible module to list content on storage attached
to a proxmox node. User can also use content filtering to define what
they want to list (backup, iso, images,...).
This commit also include the integration and unit test for that new
module.
Co-authored-by: Julian Vanden Broeck <julian.vandenbroeck@dalibo.com>
(cherry picked from commit 4f92f39720)
Co-authored-by: Julian <374571+l00ptr@users.noreply.github.com>
[proxmox_vm_info] Add ability to retrieve config (#7485)
* feat: add ability to retrieve config
Light refactor of get_vms_from_nodes function.
Added ability to retrieve configuration for existing machines (current or pending).
* Add changelog fragment
* Add changelog fragment (newline missed)
* Update changelogs/fragments/7485-proxmox_vm_info-config.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
* Replaced two bool options with one three-state option
* Module args for the three-state option
* Remove trailing newline
* Make use of dict instead of list. Fix uncalled 'get config for lxc'.
* Sanity tests
* A couple of unit tests fixed
* Unit tests fixed
* Unit tests for p2.7 fixed. Test for config parameter added.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 68051774d8)
Co-authored-by: castorsky <csky57@gmail.com>
onepassword lookup - Make section and field case insensitive (#7564)
* onepassword lookup: Make section and field case insensitive
This was a regression in behavior when adding support for op v2.
* Return a string by default to avoid an exception if a field is missing
* Use a helper function to lower a value if possible
* Update changelog
(cherry picked from commit 241cc02fa8)
Co-authored-by: Sam Doran <sdoran@redhat.com>
redhat_subscription: use D-Bus registration on RHEL 7 only on 7.4+ (#7624)
subscription-manager does not provide a D-Bus interface in versions of
RHEL 7 older than 7.4.
(cherry picked from commit af01b462d5)
Co-authored-by: Pino Toscano <ptoscano@redhat.com>
Add onepassword_doc lookup plugin (#7490)
* Add onepassword_doc lookup plugin
* Switch to a doc fragment
* Add unit test
* Update docs
* Move parameter validation to the OnePass object
This makes it built in for other lookup plugins using this class.
* Use kwargs for OnePass instantiation
There are enough parameters now that using them positionally can result in
odd behavior.
* Update tests
Correct conftest file name so fixtures are discovered and loaded correctly
Move constant so it doesn’t need to be imported
Add a patch since the parameter validation moved to part of the class init
* Use a lookup docs fragment
* Correct plugin description
(cherry picked from commit e0346d400f)
Co-authored-by: Sam Doran <sdoran@redhat.com>
Add option to proxmox dynamic inventory to exclude nodes (#7461)
* Create option to exclude proxmox nodes
* improve node exclusion by only remove the top level group
* add fragment
* Update changelogs/fragments/7437-proxmox-inventory-add-exclude-nodes.yaml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Update plugins/inventory/proxmox.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* Rework node exclusion
* Update fragement PR number
* include release version in option
Co-authored-by: Felix Fontein <felix@fontein.de>
* Clarify description
* Update unit test
* Fix typos in unit test
* Fix additonal typos in test
* Fix CI
* Fixing yet another whitespace pep error
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d05932fb2c)
Co-authored-by: IamLunchbox <56757745+IamLunchbox@users.noreply.github.com>
Add support for loopback type in nmcli module (#7515)
* add support for loopback devices
* add support for loopback devices
* fix yamllint issue in changelog fragment
* Fix yamlint warning and add note about new connectin type in docs
* change order of lines in documentation so they are sorted
(cherry picked from commit 5147c49498)
Co-authored-by: Alex Groshev <38885591+haddystuff@users.noreply.github.com>
test helper: Helper.from_module() injects test function into test module (#7560)
(cherry picked from commit 9b16392648)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
Support 1Password Connect (#5588) (#7116)
* Support 1Password Connect (#5588)
- Support 1Password Connect with the opv2 client
* Follow pep8, be less explicit
* Update changelog to include PR
* 1Password Connect host and token are now also parameters
* Get argument values from the environment or lookup arguments
* Move imports
* Force using Connect token and host at the same time
* Update unit tests
* Update documentation
* Additional tests
(cherry picked from commit f8652571f7)
Co-authored-by: Xeryus Stokkel <XeryusTC@users.noreply.github.com>
infiniband and bond interfaces can receive MTU settings too (#7499)
* infiniband and bond interfaces can receive MTU settings too
* adding test for default mtu setting
* the mtu parameter for infiniband is different than for ethernet
* adding changelog fragment
* Update changelogs/fragments/7499-allow-mtu-setting-on-bond-and-infiniband-interfaces.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit d0870a022e)
Co-authored-by: mark-tomich <tomichms@nih.gov>
* Fix more typos in plugins/.
* Fix typos in tests/unit/.
* Fix typos in tests/integration/.
* Fix more typos.
Co-authored-by: Sebastian Gumprich <rndmh3ro@users.noreply.github.com>
---------
Co-authored-by: Sebastian Gumprich <rndmh3ro@users.noreply.github.com>
* facter: add option to return facts instead of output variables
* Update plugins/modules/facter.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* add output doc
* add changelog frag
* reversed facter.py, created facter_facts.py
* remove chglog fragment for new module
* test helper: add Helper.from_module()
* change case in variable name
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
* Stopped container error test
* Handle remote_addr change
Detect if the remote_addr option changed, and properly "reconnect" aka
update the internal state of the plugin instance.
* Add changelog fragment
* Apply suggestions from code review
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
* Remove disable_facts from xfconf module.
* Remove deprecated module_helper CmdMixin and users.
* Deprecate ArgFormat as well, which wasn't explicitly deprecated yet.
* Remove state=get from gconftool2.
* Remove default of access_level in gitlab_runner.
* Remove state=list from manageiq_polices.
* Remove state=list from manageiq_tags.
* Consul: when state=absent, certain options can no longer be specified.
* Remove support for Ansible 2.9 and ansible-base 2.10 from ansible_galaxy_install.
* Bump community.general version to 8.0.0.
* Fix gconftool2 tests.
* Remove mh.mixins.cmd module_utils completely.
* Re-add removed anchor on its first non-removed usage.
* remove references in return doc, refactor method _setup210plus
* remove no longer needed check in function parse_check
* improve expression
* Fix YAML.
* Lint.
---------
Co-authored-by: Alexei Znamensky <russoz@gmail.com>
* Fixture for liblxc
Add a fixture to allow testing the lxc connection plugin both with and
without liblxc being present.
Also change the test from unittest to pytest.
* Update liblxc error message
The error is not specific to python2, so remove the version. Also add
a test for it.
* Migrate to options
Because the lxc plugin was only using PlayContext properties, using host
vars like `ansible_lxc_host` didn't work. This is fixed by instead using
the `get_option` method inherited from `AnsiblePlugin`.
The options are not yet available in the `__init__` function, so the
determination of the container name is moved to the `_connect` method,
which is the first time it is actually needed.
The default for the `remote_addr` option is removed, because the string
`inventory_hostname` is not very useful. At all. This seams to have been
spread with copy&paste and a bit of cargo culting. The variable priority
already takes care of setting the value.
* Add changelog fragment
* Fix for Py2.7
`TypeError: super() takes at least 1 argument (0 given)`
* Add plugin type to changelog fragment.
* Restore untemplated default
This partially reverts commit 429d8c8cfb.
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
* gio_mime: new module
* multiple changes
- fixed gio_mime module utils handler detection
- add message to test helper assertion
- add unit test
* gio mime output uses unicode smart quotes
* test helper: do not use skip/xfail reason messages - break in old pytest
* Update plugins/modules/gio_mime.py
Co-authored-by: Felix Fontein <felix@fontein.de>
* change exist variables to meet standards
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
* Add `ignore_spaces` option to `ini_file` to ignore spacing changes
Add a new `ignore_spaces` option to the `ini_file` module which, if
true, prevents the module from changing a line in a file if the only
thing that would change by doing so is whitespace before or after the
`=`.
Also add test cases for this new functionality. There were previously
no tests for `ini_file` at all, and this doesn't attempt to fix that,
but it does add tests to ensure that the new behavior implemented here
as well as the old behavior in the affected code are correct.
Fixes#7202.
* Add changelog fragment
* pep8 / pylint
* remove unused import
* fix typo in comment in integration test file
* Add symlink tests to main.yml
It appears that #6546 added symlink tests but neglected to add them to
main.yml so they weren't being executed.
* ini_file symlink tests; create output files in correct location
* Add integration tests for ini_file ignore_spaces
* PR feedback
* Add detach option so the task doesn't wait until the Jenkins job is finished
* Add new time_between_checks to be able to configure the sleep time between requests
* New jenkins_build_info to get information about a specific build
* Add version_added to the new module
* Add changelog fragment for jenkins_build changes
* Fix tests that required the python-jenkins module
* Remove tests that failed
Doesn't really make sense to test that with a mock
* Fix pep8 error
* Update maintainers for the jenkins_build and jenkins_build_info modules
* Improve format and add link to PR
* Move version_added documentation to the right file
* Fix incorrect examples
* Improve text format
* Fix incorrect code style
* Fix incorrect YAML for documentation
* Add version_added documentation to the new options