123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- # pylint: skip-file
- # flake8: noqa
- # pylint: disable=too-many-instance-attributes
- class OCRoute(OpenShiftCLI):
- ''' Class to wrap the oc command line tools '''
- kind = 'route'
- def __init__(self,
- config,
- verbose=False):
- ''' Constructor for OCVolume '''
- super(OCRoute, self).__init__(config.namespace, config.kubeconfig)
- self.config = config
- self.namespace = config.namespace
- self._route = None
- @property
- def route(self):
- ''' property function for route'''
- if not self._route:
- self.get()
- return self._route
- @route.setter
- def route(self, data):
- ''' setter function for route '''
- self._route = data
- def exists(self):
- ''' return whether a route exists '''
- if self.route:
- return True
- return False
- def get(self):
- '''return route information '''
- result = self._get(self.kind, self.config.name)
- if result['returncode'] == 0:
- self.route = Route(content=result['results'][0])
- elif 'routes \"%s\" not found' % self.config.name in result['stderr']:
- result['returncode'] = 0
- result['results'] = [{}]
- return result
- def delete(self):
- '''delete the object'''
- return self._delete(self.kind, self.config.name)
- def create(self):
- '''create the object'''
- return self._create_from_content(self.config.name, self.config.data)
- def update(self):
- '''update the object'''
- # need to update the tls information and the service name
- return self._replace_content(self.kind, self.config.name, self.config.data)
- def needs_update(self):
- ''' verify an update is needed '''
- skip = []
- return not Utils.check_def_equal(self.config.data, self.route.yaml_dict, skip_keys=skip, debug=True)
- # pylint: disable=too-many-return-statements,too-many-branches
- @staticmethod
- def run_ansible(params, files, check_mode=False):
- ''' run the idempotent asnible code
- params comes from the ansible portion for this module
- files: a dictionary for the certificates
- {'cert': {'path': '',
- 'content': '',
- 'value': ''
- }
- }
- check_mode: does the module support check mode. (module.check_mode)
- '''
- rconfig = RouteConfig(params['name'],
- params['namespace'],
- params['kubeconfig'],
- files['destcacert']['value'],
- files['cacert']['value'],
- files['cert']['value'],
- files['key']['value'],
- params['host'],
- params['tls_termination'],
- params['service_name'],
- params['wildcard_policy'],
- params['weight'])
- oc_route = OCRoute(rconfig, verbose=params['debug'])
- state = params['state']
- api_rval = oc_route.get()
- #####
- # Get
- #####
- if state == 'list':
- return {'changed': False,
- 'results': api_rval['results'],
- 'state': 'list'}
- ########
- # Delete
- ########
- if state == 'absent':
- if oc_route.exists():
- if check_mode:
- return {'changed': False, 'msg': 'CHECK_MODE: Would have performed a delete.'} # noqa: E501
- api_rval = oc_route.delete()
- return {'changed': True, 'results': api_rval, 'state': "absent"} # noqa: E501
- return {'changed': False, 'state': 'absent'}
- if state == 'present':
- ########
- # Create
- ########
- if not oc_route.exists():
- if check_mode:
- return {'changed': True, 'msg': 'CHECK_MODE: Would have performed a create.'} # noqa: E501
- # Create it here
- api_rval = oc_route.create()
- if api_rval['returncode'] != 0:
- return {'failed': True, 'msg': api_rval, 'state': "present"} # noqa: E501
- # return the created object
- api_rval = oc_route.get()
- if api_rval['returncode'] != 0:
- return {'failed': True, 'msg': api_rval, 'state': "present"} # noqa: E501
- return {'changed': True, 'results': api_rval, 'state': "present"} # noqa: E501
- ########
- # Update
- ########
- if oc_route.needs_update():
- if check_mode:
- return {'changed': True, 'msg': 'CHECK_MODE: Would have performed an update.'} # noqa: E501
- api_rval = oc_route.update()
- if api_rval['returncode'] != 0:
- return {'failed': True, 'msg': api_rval, 'state': "present"} # noqa: E501
- # return the created object
- api_rval = oc_route.get()
- if api_rval['returncode'] != 0:
- return {'failed': True, 'msg': api_rval, 'state': "present"} # noqa: E501
- return {'changed': True, 'results': api_rval, 'state': "present"} # noqa: E501
- return {'changed': False, 'results': api_rval, 'state': "present"}
- # catch all
- return {'failed': True, 'msg': "Unknown State passed"}
|