-
Bug
-
Resolution: Done
-
Undefined
-
None
-
Unspecified
-
False
-
-
False
-
-
https://github.com/ansible-collections/kubernetes.core/issues/659
-
-
-
-
- SUMMARY
Collection's util resource discovery fails on Python Value error due to subresources having multiple "/" in string.
- SUMMARY
-
-
-
Kubevirt introduces such subresources, take a look here: https://github.com/kubevirt/kubevirt/blob/main/pkg/virt-api/api.go#L638
However, discovery util in collections expects all subresources having only 1 "/" char in string, look here: https://github.com/ansible-collections/kubernetes.core/blob/main/plugins/module_utils/client/discovery.py#L116
-
-
-
-
- ISSUE TYPE
-
-
-
- Bug Report
-
-
-
-
- COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
plugins/module_utils/client/discover.py
- COMPONENT NAME
-
-
-
-
-
-
-
- ANSIBLE VERSION
```paste below
ansible [core 2.15.6]
config file = /home/dkasanix/deployment/sdle/ansible.cfg
configured module search path = ['/home/dkasanix/deployment/sdle/library']
ansible python module location = /home/dkasanix/deployment/sdle/venv/lib/python3.10/site-packages/ansible
ansible collection location = /home/dkasanix/deployment/sdle/collections
executable location = /home/dkasanix/deployment/sdle/venv/bin/ansible
python version = 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] (/home/dkasanix/deployment/sdle/venv/bin/python)
jinja version = 3.1.2
libyaml = True
```
- ANSIBLE VERSION
-
-
-
-
-
-
-
- COLLECTION VERSION
```paste below
- COLLECTION VERSION
-
-
-
- /home/dkasanix/deployment/sdle/venv/lib/python3.10/site-packages/ansible_collections
Collection Version-
-
-
-
-
-
-
-
-
-
-
-
-
- -------
kubernetes.core 2.4.0
```
- -------
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CONFIGURATION
```paste below
CACHE_PLUGIN(/home/dkasanix/deployment/sdle/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/home/dkasanix/deployment/sdle/ansible.cfg) = /tmp
CACHE_PLUGIN_TIMEOUT(/home/dkasanix/deployment/sdle/ansible.cfg) = 7200
CALLBACKS_ENABLED(/home/dkasanix/deployment/sdle/ansible.cfg) = ['timer', 'profile_tasks', 'profile_roles']
COLLECTIONS_PATHS(/home/dkasanix/deployment/sdle/ansible.cfg) = ['/home/dkasanix/deployment/sdle/collections']
CONFIG_FILE() = /home/dkasanix/deployment/sdle/ansible.cfg
DEFAULT_ACTION_PLUGIN_PATH(/home/dkasanix/deployment/sdle/ansible.cfg) = ['/home/dkasanix/deployment/sdle/action_plugins', '/home/dkasanix/.ansible/plugins/action', '/usr/share/ansible/plugins/action']
DEFAULT_GATHERING(/home/dkasanix/deployment/sdle/ansible.cfg) = smart
DEFAULT_LOG_PATH(/home/dkasanix/deployment/sdle/ansible.cfg) = /home/dkasanix/deployment/sdle/.ansible_last_run.log
DEFAULT_MODULE_PATH(/home/dkasanix/deployment/sdle/ansible.cfg) = ['/home/dkasanix/deployment/sdle/library']
DEFAULT_ROLES_PATH(/home/dkasanix/deployment/sdle/ansible.cfg) = ['/home/dkasanix/deployment/sdle/roles', '/home/dkasanix/deployment/sdle/collections/share/roles']
DEFAULT_STDOUT_CALLBACK(/home/dkasanix/deployment/sdle/ansible.cfg) = debug
DISPLAY_ARGS_TO_STDOUT(/home/dkasanix/deployment/sdle/ansible.cfg) = False
DISPLAY_SKIPPED_HOSTS(/home/dkasanix/deployment/sdle/ansible.cfg) = False
HOST_KEY_CHECKING(/home/dkasanix/deployment/sdle/ansible.cfg) = False
TRANSFORM_INVALID_GROUP_CHARS(/home/dkasanix/deployment/sdle/ansible.cfg) = ignore
```
- CONFIGURATION
-
-
-
-
-
-
-
- OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Kubernetes 1.28.3 with Calico CNI.
Kubevirt installed.
- OS / ENVIRONMENT
-
-
-
-
-
-
-
- STEPS TO REPRODUCE
-
-
-
1. install kubevirt via https://kubevirt.io/user-guide/operations/installation/#installing-kubevirt-on-kubernetes
2. run task using module from kubernetes.core collection that happens to use discovery utils:
```yaml
- name: test k8s_info
kubernetes.core.k8s_info:
kind: Deployment
namespace: kubevirt
```
<!--- HINT: You can paste gist.github.com links for larger files -->
-
-
-
-
- EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Task should return list of deployment objects present in kubevirt namespace.
- EXPECTED RESULTS
-
-
-
-
-
-
-
- ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
Task fails on python Value error:
<!--- Paste verbatim command output between quotes -->
```paste below
TASK [test] *****************************************************************************************************************************************************************************************************task path: /home/dkasanix/deployment/sdle/test.yml:9
The full traceback is:
Traceback (most recent call last):
File "<stdin>", line 107, in <module>
File "<stdin>", line 99, in _ansiballz_main
File "<stdin>", line 47, in invoke_module
File "/usr/lib/python3.10/runpy.py", line 224, in run_module
return _run_module_code(code, init_globals, run_name, mod_spec)
File "/usr/lib/python3.10/runpy.py", line 96, in _run_module_code
_run_code(code, mod_globals, init_globals, File "/usr/lib/python3.10/runpy.py", line 86, in _run_code exec(code, run_globals) File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 217, in <module> File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 211, in main File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 173, in execute_module File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py", line 228, in find File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py", line 90, in find_resource File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py", line 306, in resource File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py", line 286, in _find_resource_with_prefix File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py", line 159, in get
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 237, in search results = self._search(self.build_search(**kwargs), self.resources, []) File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 283, in __search matches.extend(self.search([key] + parts[1:], resources, reqParams)) File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 269, in __search return self._search(parts[1:], resourcePart, reqParams + [part] )
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 283, in _search matches.extend(self._search([key] + parts[1:], resources, reqParams))
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 269, in __search
return self.__search(parts[1:], resourcePart, reqParams + [part] )
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 258, in __search
resourcePart.resources = self.get_resources_for_api_version(
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py", line 117, in get_resources_for_api_version
ValueError: too many values to unpack (expected 2)
fatal: [ad07-13-cyp]: FAILED! => {
"changed": false,
"invocation":Unknown macro: { "kind"},
"rc": 1
}
- ACTUAL RESULTS
-
-
-
MSG:
MODULE FAILURE
See stdout/stderr for the exact error
MODULE_STDERR:
Traceback (most recent call last):
File "<stdin>", line 107, in <module>
File "<stdin>", line 99, in _ansiballz_main
File "<stdin>", line 47, in invoke_module
File "/usr/lib/python3.10/runpy.py", line 224, in run_module
return _run_module_code(code, init_globals, run_name, mod_spec)
File "/usr/lib/python3.10/runpy.py", line 96, in _run_module_code
_run_code(code, mod_globals, init_globals,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 217, in <module>
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 211, in main
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 173, in execute_module
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py", line 228, in find
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py", line 90, in find_resource
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py", line 306, in resource
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py", line 286, in _find_resource_with_prefix
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py", line 159, in get
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 237, in search
results = self._search(self.build_search(**kwargs), self._resources, [])
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 283, in __search
matches.extend(self.__search([key] + parts[1:], resources, reqParams))
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 269, in __search
return self.__search(parts[1:], resourcePart, reqParams + [part] )
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 283, in __search
matches.extend(self.__search([key] + parts[1:], resources, reqParams))
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 269, in __search
return self.__search(parts[1:], resourcePart, reqParams + [part] )
File "/usr/local/lib/python3.10/dist-packages/kubernetes/dynamic/discovery.py", line 258, in __search
resourcePart.resources = self.get_resources_for_api_version(
File "/tmp/ansible_kubernetes.core.k8s_info_payload_4mk5e9ds/ansible_kubernetes.core.k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py", line 117, in get_resources_for_api_version
ValueError: too many values to unpack (expected 2)
```