Skip to content

Commit

Permalink
Handle set object retrieved from lookup plugin (ansible-collections#118)
Browse files Browse the repository at this point in the history
api_groups is returned as "dict_keys()" which k8s lookip plugin does not handle.
Typecasting with list make it available to default callback plugin.
  • Loading branch information
Akasurde authored Jun 5, 2020
1 parent c8ef0ae commit 18dfb68
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
7 changes: 7 additions & 0 deletions molecule/default/tasks/full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,13 @@
metadata:
name: testing1
### https://github.com/ansible-collections/community.kubernetes/issues/111
- set_fact:
api_groups: "{{ lookup('k8s', cluster_info='api_groups') }}"

- debug:
var: api_groups

- name: Namespace should exist
k8s_info:
kind: Namespace
Expand Down
6 changes: 4 additions & 2 deletions plugins/lookup/k8s.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,12 +194,12 @@
type: complex
"""

from ansible.errors import AnsibleError
from ansible.module_utils.common._collections_compat import KeysView
from ansible.plugins.lookup import LookupBase

from ansible_collections.community.kubernetes.plugins.module_utils.common import K8sAnsibleMixin

from ansible.errors import AnsibleError


try:
from openshift.dynamic import DynamicClient
Expand Down Expand Up @@ -253,6 +253,8 @@ def run(self, terms, variables=None, **kwargs):
if cluster_info == 'version':
return [self.client.version]
if cluster_info == 'api_groups':
if isinstance(self.client.resources.api_groups, KeysView):
return [list(self.client.resources.api_groups)]
return [self.client.resources.api_groups]

self.kind = kwargs.get('kind')
Expand Down

0 comments on commit 18dfb68

Please sign in to comment.