k8s_info now outputs whether the api was found (#308)

This commit is contained in:
Fabian von Feilitzsch
2020-11-29 23:56:54 -05:00
committed by GitHub
parent 8f14bf6c46
commit 2474ef1b2c
3 changed files with 35 additions and 6 deletions

View File

@@ -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:

View File

@@ -288,8 +288,9 @@ class K8sAnsibleMixin(object):
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 = []
@@ -317,14 +318,14 @@ class K8sAnsibleMixin(object):
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):
"""

View File

@@ -112,6 +112,11 @@ EXAMPLES = r'''
'''
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