123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- # pylint: skip-file
- # flake8: noqa
- # pylint: disable=too-many-instance-attributes
- class OCScale(OpenShiftCLI):
- ''' Class to wrap the oc command line tools '''
- # pylint allows 5
- # pylint: disable=too-many-arguments
- def __init__(self,
- resource_name,
- namespace,
- replicas,
- kind,
- kubeconfig='/etc/origin/master/admin.kubeconfig',
- verbose=False):
- ''' Constructor for OCScale '''
- super(OCScale, self).__init__(namespace, kubeconfig=kubeconfig, verbose=verbose)
- self.kind = kind
- self.replicas = replicas
- self.name = resource_name
- self._resource = None
- @property
- def resource(self):
- ''' property function for resource var '''
- if not self._resource:
- self.get()
- return self._resource
- @resource.setter
- def resource(self, data):
- ''' setter function for resource var '''
- self._resource = data
- def get(self):
- '''return replicas information '''
- vol = self._get(self.kind, self.name)
- if vol['returncode'] == 0:
- if self.kind == 'dc':
- # The resource returned from a query could be an rc or dc.
- # pylint: disable=redefined-variable-type
- self.resource = DeploymentConfig(content=vol['results'][0])
- vol['results'] = [self.resource.get_replicas()]
- if self.kind == 'rc':
- # The resource returned from a query could be an rc or dc.
- # pylint: disable=redefined-variable-type
- self.resource = ReplicationController(content=vol['results'][0])
- vol['results'] = [self.resource.get_replicas()]
- return vol
- def put(self):
- '''update replicas into dc '''
- self.resource.update_replicas(self.replicas)
- return self._replace_content(self.kind, self.name, self.resource.yaml_dict)
- def needs_update(self):
- ''' verify whether an update is needed '''
- return self.resource.needs_update_replicas(self.replicas)
- # pylint: disable=too-many-return-statements
- @staticmethod
- def run_ansible(params, check_mode):
- '''perform the idempotent ansible logic'''
- oc_scale = OCScale(params['name'],
- params['namespace'],
- params['replicas'],
- params['kind'],
- params['kubeconfig'],
- verbose=params['debug'])
- state = params['state']
- api_rval = oc_scale.get()
- if api_rval['returncode'] != 0:
- return {'failed': True, 'msg': api_rval}
- #####
- # Get
- #####
- if state == 'list':
- return {'changed': False, 'result': api_rval['results'], 'state': 'list'} # noqa: E501
- elif state == 'present':
- ########
- # Update
- ########
- if oc_scale.needs_update():
- if check_mode:
- return {'changed': True, 'result': 'CHECK_MODE: Would have updated.'} # noqa: E501
- api_rval = oc_scale.put()
- if api_rval['returncode'] != 0:
- return {'failed': True, 'msg': api_rval}
- # return the created object
- api_rval = oc_scale.get()
- if api_rval['returncode'] != 0:
- return {'failed': True, 'msg': api_rval}
- return {'changed': True, 'result': api_rval['results'], 'state': 'present'} # noqa: E501
- return {'changed': False, 'result': api_rval['results'], 'state': 'present'} # noqa: E501
- return {'failed': True, 'msg': 'Unknown state passed. [{}]'.format(state)}
|