Skip to content
This repository has been archived by the owner on Jun 13, 2024. It is now read-only.

k8s_info now outputs whether the api was found #308

Merged
merged 5 commits into from
Nov 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions molecule/default/tasks/info.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,29 @@
- multi_pod_two_remove is successful
- multi_pod_two_remove.changed

- name: "Look for existing API"
k8s_info:
api_version: apps/v1
kind: Deployment
register: existing_api

- name: Check if we informed the user the api does exist
assert:
that:
- existing_api.api_found

- name: "Look for non-existent API"
k8s_info:
api_version: pleasedonotcreatethisresource.example.com/v7
kind: DoesNotExist
register: dne_api

- name: Check if we informed the user the api does not exist
assert:
that:
- not dne_api.resources
- not dne_api.api_found

always:
- name: Remove namespace
k8s:
Expand Down
13 changes: 7 additions & 6 deletions plugins/module_utils/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,8 +286,9 @@ def find_resource(self, kind, api_version, fail=False):
def kubernetes_facts(self, kind, api_version, name=None, namespace=None, label_selectors=None, field_selectors=None,
wait=False, wait_sleep=5, wait_timeout=120, state='present', condition=None):
resource = self.find_resource(kind, api_version)
if not resource:
return dict(resources=[])
api_found = bool(resource)
if not api_found:
return dict(resources=[], msg='Failed to find API for resource with apiVersion "{0}" and kind "{1}"'.format(api_version, kind), api_found=False)

if not label_selectors:
label_selectors = []
Expand Down Expand Up @@ -315,14 +316,14 @@ def kubernetes_facts(self, kind, api_version, name=None, namespace=None, label_s
self.fail(msg="Failed to gather information about %s(s) even"
" after waiting for %s seconds" % (res.get('kind'), duration))
satisfied_by.append(res)
return dict(resources=satisfied_by)
return dict(resources=satisfied_by, api_found=True)
result = result.to_dict()
except (openshift.dynamic.exceptions.BadRequestError, openshift.dynamic.exceptions.NotFoundError):
return dict(resources=[])
return dict(resources=[], api_found=True)

if 'items' in result:
return dict(resources=result['items'])
return dict(resources=[result])
return dict(resources=result['items'], api_found=True)
return dict(resources=[result], api_found=True)

def remove_aliases(self):
"""
Expand Down
5 changes: 5 additions & 0 deletions plugins/modules/k8s_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@
'''

RETURN = r'''
api_found:
description:
- Whether the specified api_version and kind were successfully mapped to an existing API on the targeted cluster.
returned: always
type: bool
resources:
description:
- The object(s) that exists
Expand Down