def update(self, expect_state, current_state): expect_state["current_state"] = current_state current_state["current_state"] = current_state timeout = 60 * int(self.module.params['timeouts']['update'].rstrip('m')) params = build_update_parameters(expect_state) params1 = build_update_parameters(current_state) if params and are_different_dicts(params, params1): try: request = UpdateVolumeRequest(self.module.params['id'], params) self.log('Update evs disk request body: %s' %request) response = self.evs_client.update_volume(request) self.log('Update evs disk response body: %s' % response) except exceptions.ClientRequestException as e: self.fail('Update evs disk failed: %s' % e) params = build_extend_disk_parameters(expect_state) params1 = build_extend_disk_parameters(current_state) if params and are_different_dicts(params, params1): try: request = ResizeVolumeRequest(self.module.params['id'], params) self.log('Resize evs disk request body: %s' %request) response = self.evs_client.resize_volume(request) self.log('Resize evs disk response body: %s' % response) except exceptions.ClientRequestException as e: self.fail('Resize evs disk failed: %s' % e) job_id = response.to_json_object()['job_id'] self.async_wait(job_id, timeout)
def search_resource(self): opts = user_input_parameters(self.module) identity_obj = _build_identity_object(self.module, opts) result = [] try: request = ListClustersRequest() self.log('list cce cluster request: %s' % request) response = self.cce_client.list_clusters(request) self.log('list cce cluster response: %s' % response) except exceptions.ClientRequestException as e: raise HwcModuleException('search cce cluster failed: %s' % e.error_msg) r = navigate_value(response.to_json_object(), ['items'], None) if not r: return result for item in r: item = fill_list_resp_body(item) self.log('cce cluster identity_obj: %s' % identity_obj) self.log('cce cluster item: %s' % item) if not are_different_dicts(identity_obj, item): result.append(item) if len(result) > 1: return result return result
def search_resource(self): opts = user_input_parameters(self.module) identity_obj = _build_identity_object(self.module, opts) result = [] marker = '' while True: try: request = ListSecurityGroupsRequest(limit=10, marker=marker) self.log('list security group request: %s' % request) response = self.vpc_client.list_security_groups(request) self.log('list security group response: %s' % response) except exceptions.ClientRequestException as e: raise HwcModuleException('search security group failed: %s' % e.error_msg) r = navigate_value(response.to_json_object(), ['security_groups'], None) if not r: break for item in r: item = fill_list_resp_body(item) self.log('security group identity_obj: %s' % identity_obj) self.log('security group item: %s' % item) if not are_different_dicts(identity_obj, item): result.append(item) if len(result) > 1: break marker = r[-1].get('id') return result
def exec_module(self, **kwargs): self.results['check_mode'] = self.check_mode try: resource = None if self.module.params['id']: resource = True else: v = self.search_resource() if len(v) > 1: raise Exception( 'find more than one resources(%s)' % ', '.join([navigate_value(i, ['id']) for i in v])) if len(v) == 1: resource = v[0] self.module.params['id'] = navigate_value(resource, ['id']) result = {} changed = False if self.module.params['state'] == 'present': if resource is None: if not self.module.check_mode: self.create() changed = True current = self.read() self.log('vpc current: %s' % current) expect = user_input_parameters(self.module) set_readonly_options(expect, current) self.log('vpc expect: %s' % expect) if are_different_dicts(expect, current): if not self.module.check_mode: self.update(current) changed = True result = self.read() result['id'] = self.module.params.get('id') else: if resource: if not self.module.check_mode: self.delete() result['status'] = 'Deleted' changed = True except Exception as ex: self.module.fail_json(msg=str(ex)) else: self.results['state'] = result self.results['changed'] = changed return self.results
def update(self, expect_state, current_state): self.log('expect_state: %s' % expect_state) self.log('current_state: %s' % current_state) params = build_update_parameters(expect_state) params1 = build_update_parameters(current_state) if params and are_different_dicts(params, params1): try: request = UpdateClusterRequest(self.module.params['id'], body=params) self.log('Update cce cluster request body: %s' % request) response = self.cce_client.update_cluster(request) self.log('Update cce cluster response body: %s' % response) except exceptions.ClientRequestException as e: self.fail('Update cce cluster failed: %s' % e)
def exec_module(self, **kwargs): self.results['check_mode'] = self.check_mode try: resource = None if self.module.params['id']: resource = True else: v = self.search_resource() if len(v) > 1: raise Exception( "find more than one resources(%s)" % ", ".join([navigate_value(i, ["id"]) for i in v])) if len(v) == 1: resource = v[0] self.module.params['id'] = navigate_value( resource, ["metadata", "uid"]) result = {} changed = False if self.module.params['state'] == 'present': if not resource: if not self.module.check_mode: self.create() changed = True inputv = user_input_parameters(self.module) resp, array_index = self.read() result = build_state(inputv, resp, array_index) set_readonly_options(inputv, result) if are_different_dicts(inputv, result): if not self.module.check_mode: self.update(inputv, result) inputv = user_input_parameters(self.module) resp, array_index = self.read() result = build_state(inputv, resp, array_index) set_readonly_options(inputv, result) if are_different_dicts(inputv, result): raise Exception("Update resource failed, " "some attributes are not updated") changed = True result['id'] = self.module.params.get('id') else: result = dict() if resource: if not self.module.check_mode: self.delete() result['status'] = 'Deleted' changed = True except Exception as ex: self.module.fail_json(msg=str(ex)) else: self.results['state'] = result self.results['changed'] = changed return self.results