From d20f526eb7adb27abd8d5c41c1e14c0eb22b0736 Mon Sep 17 00:00:00 2001 From: Monis Khan Date: Thu, 16 Feb 2017 16:03:01 -0500 Subject: Add SDNValidator Module Signed-off-by: Monis Khan --- roles/lib_openshift/src/class/oc_sdnvalidator.py | 58 ++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 roles/lib_openshift/src/class/oc_sdnvalidator.py (limited to 'roles/lib_openshift/src/class') diff --git a/roles/lib_openshift/src/class/oc_sdnvalidator.py b/roles/lib_openshift/src/class/oc_sdnvalidator.py new file mode 100644 index 000000000..da923337b --- /dev/null +++ b/roles/lib_openshift/src/class/oc_sdnvalidator.py @@ -0,0 +1,58 @@ +# pylint: skip-file +# flake8: noqa + +# pylint: disable=too-many-instance-attributes +class OCSDNValidator(OpenShiftCLI): + ''' Class to wrap the oc command line tools ''' + + def __init__(self, kubeconfig): + ''' Constructor for OCSDNValidator ''' + # namespace has no meaning for SDN validation, hardcode to 'default' + super(OCSDNValidator, self).__init__('default', kubeconfig) + + def get(self, kind, invalid_filter): + ''' return SDN information ''' + + rval = self._get(kind) + if rval['returncode'] != 0: + return False, rval, [] + + return True, rval, filter(invalid_filter, rval['results'][0]['items']) + + # pylint: disable=too-many-return-statements + @staticmethod + def run_ansible(params): + ''' run the idempotent ansible code + + params comes from the ansible portion of this module + ''' + + sdnvalidator = OCSDNValidator(params['kubeconfig']) + all_invalid = {} + failed = False + + checks = ( + ( + 'hostsubnet', + lambda x: x['metadata']['name'] != x['host'], + u'hostsubnets where metadata.name != host', + ), + ( + 'netnamespace', + lambda x: x['metadata']['name'] != x['netname'], + u'netnamespaces where metadata.name != netname', + ), + ) + + for resource, invalid_filter, invalid_msg in checks: + success, rval, invalid = sdnvalidator.get(resource, invalid_filter) + if not success: + return {'failed': True, 'msg': 'Failed to GET {}.'.format(resource), 'state': 'list', 'results': rval} + if invalid: + failed = True + all_invalid[invalid_msg] = invalid + + if failed: + return {'failed': True, 'msg': 'All SDN objects are not valid.', 'state': 'list', 'results': all_invalid} + + return {'msg': 'All SDN objects are valid.'} -- cgit v1.2.3