If no namespaces were specified in the inventory config try to get all
available namespaces by trying to list OCP projects first. If the resource
was not found (no OCP cluster) fall back to regular namespaces.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
ansible-core 2.19 changes the way templates are trusted and provides a
new way of patching module args in unit tests.
With this commit the following changes are made to ensure compatibility
with ansible-core >= 2.19:
- Mark inputs to composable as trusted to align with the new template
trust model.
- Utilize the updated method for patching module arguments in unit tests
if available.
- Replace direct access to the self._cache attribute with the inventory's
cache property.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This adds the unset_ansible_port option to the inventory, which allows to
control if the value of ansible_port should be unset if no non-default
value was found.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This feature adds looking up winrm services and tries to populate the
ansible_host and ansible_port variables with the values from a
found service for the host. It looks up both winrm HTTP and HTTPS
services and prefers HTTPS if it found both for a given host.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Mark all methods of the inventory which should be private with a underscore
prefix in their name.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Replace the remaining uses of addict's Dict with ResourceField of the
Kubernetes client. This allows to drop the dependency on addict.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Fix inventory source caching by separating the fetching of objects and
populating the inventory. This way objects can be fetched from the K8S
API or from a configured cached and the cache related parameters on the
plugin now actually work.
The inventory source cache was tested with the ansible.builtin.jsonfile
cache plugin and 100k hosts (~2G JSON file). Though it took a noticeable
amount of time for the inventory plugin to run it worked fine and no
failures could be observed.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Use dicts instead of ResourceFields where possible to allow
easier serialization/deserialization of objects fetched from the K8S
API.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
The support for connections to multiple clusters in the inventory
plugin is dropped to better align with user expectations and how other
inventories work. If inventories of multiple clusters are needed the
inventory can be run multiple times with different configurations.
This also helps to clean up the code and make it simpler.
For now this adds a compatibility helper so that configurations with a
single connection entry remain supported and a warning is emitted.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Rework the inventory unit tests by splitting up
tests/unit/plugins/inventory/test_kubevirt.py into multiple files,
by trying to simplify the test code and making it more robust and by
using appropriate fixtures. This also adds new tests or test cases to
improve code coverage. Tests that work from the black box perspective
are now located in a subdirectory.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Adds two missing execution paths when the `network_name` is provided and
when there are not VMIs to collect.
Signed-off-by: Javier Cano Cano <jcanocan@redhat.com>
It refactors fixtures: `add_group` and `add_host` to improve fixtures
reusability in further scenarios.
Signed-off-by: Javier Cano Cano <jcanocan@redhat.com>
Change the license of the collection to Apache 2.0 to be compliant with
the CNCF licensing requirements.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This changes the inventory plugin so that it sets the ansible_connection
to winrm if it detected a Windows host. If it did not detect a Windows
host the ansible_connection is no longer set, so Ansible falls back to
its default value of ssh. The detection of SSH services for hosts using
winrm is disabled.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
Add a test file for the inventory plugin with some basic unit tests.
This file can be used to add more tests in the future.
Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>