def main(): """Main function""" module = build_module() config = Config(module, "evs") try: _init(config) is_exist = module.params.get('id') result = None changed = False if module.params['state'] == 'present': if not is_exist: if not module.check_mode: create(config) changed = True inputv = user_input_parameters(module) resp, array_index = read_resource(config) result = build_state(inputv, resp, array_index) set_readonly_options(inputv, result) if are_different_dicts(inputv, result): if not module.check_mode: update(config, inputv, result) inputv = user_input_parameters(module) resp, array_index = read_resource(config) 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'] = module.params.get('id') else: result = dict() if is_exist: if not module.check_mode: delete(config) changed = True except Exception as ex: module.fail_json(msg=str(ex)) else: result['changed'] = changed module.exit_json(**result)
def search_resource(config): module = config.module client = config.client(get_region(module), "vpc", "project") opts = user_input_parameters(module) identity_obj = _build_identity_object(opts) query_link = _build_query_link(opts) link = build_path(module, "subnets/{subnet_id}/privateips") + query_link result = [] p = {'marker': ''} while True: url = link.format(**p) r = send_list_request(module, client, url) if not r: break for item in r: item = fill_list_resp_body(item) if not are_different_dicts(identity_obj, item): result.append(item) if len(result) > 1: break p['marker'] = r[-1].get('id') return result
def main(): """Main function""" module = HwcModule( argument_spec=dict(state=dict(default='present', choices=['present', 'absent'], type='str'), display_name=dict(type='str'), name=dict(required=True, type='str')), supports_check_mode=True, ) config = Config(module, "smn") state = module.params['state'] if not module.params.get("id"): module.params['id'] = get_resource_id(config) fetch = None link = self_link(module) # the link will include Nones if required format parameters are missed if not re.search('/None/|/None$', link): client = config.client(get_region(module), "smn", "project") fetch = fetch_resource(module, client, link) changed = False if fetch: if state == 'present': expect = _get_resource_editable_properties(module) current_state = response_to_hash(module, fetch) current = {'display_name': current_state['display_name']} if are_different_dicts(expect, current): if not module.check_mode: fetch = update(config) fetch = response_to_hash(module, fetch) changed = True else: fetch = current_state else: if not module.check_mode: delete(config) fetch = {} changed = True else: if state == 'present': if not module.check_mode: fetch = create(config) fetch = response_to_hash(module, fetch) changed = True else: fetch = {} fetch.update({'changed': changed}) module.exit_json(**fetch)
def update(config, expect_state, current_state): module = config.module expect_state["current_state"] = current_state current_state["current_state"] = current_state client = config.client(get_region(module), "evs", "project") timeout = 60 * int(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): send_update_request(module, params, client) params = build_extend_disk_parameters(expect_state) params1 = build_extend_disk_parameters(current_state) if params and are_different_dicts(params, params1): client1 = config.client(get_region(module), "evsv2.1", "project") r = send_extend_disk_request(module, params, client1) client1 = config.client(get_region(module), "volume", "project") client1.endpoint = client1.endpoint.replace("/v2/", "/v1/") async_wait(config, r, client1, timeout)
def main(): """Main function""" module = build_module() config = Config(module, "vpc") try: resource = None if module.params['id']: resource = True else: v = search_resource(config) if len(v) > 1: raise Exception( "Found more than one resource(%s)" % ", ".join([navigate_value(i, ["id"]) for i in v])) if len(v) == 1: resource = v[0] module.params['id'] = navigate_value(resource, ["id"]) result = {} changed = False if module.params['state'] == 'present': if resource is None: if not module.check_mode: create(config) changed = True current = read_resource(config, exclude_output=True) expect = user_input_parameters(module) if are_different_dicts(expect, current): raise Exception("Cannot change option from (%s) to (%s)of an" " existing resource.(%s)" % (current, expect, module.params.get('id'))) result = read_resource(config) result['id'] = module.params.get('id') else: if resource: if not module.check_mode: delete(config) changed = True except Exception as ex: module.fail_json(msg=str(ex)) else: result['changed'] = changed module.exit_json(**result)
def check_resource_option(resource, module): opts = user_input_parameters(module) resource = { "enterprise_project_id": resource.get("enterprise_project_id"), "name": resource.get("name"), "vpc_id": resource.get("vpc_id"), "id": resource.get("id"), } if are_different_dicts(resource, opts): raise Exception("Cannot change option from (%s) to (%s) for an" " existing security group(%s)." % (resource, opts, module.params.get('id')))
def main(): """Main function""" module = build_module() config = Config(module, "vpc") try: resource = None if module.params.get("id"): resource = get_resource_by_id(config) if module.params['state'] == 'present': opts = user_input_parameters(module) if are_different_dicts(resource, opts): raise Exception( "Cannot change option from (%s) to (%s) for an" " existing route.(%s)" % (resource, opts, config.module.params.get('id'))) else: v = search_resource(config) if len(v) > 1: raise Exception( "Found more than one resource(%s)" % ", ".join([navigate_value(i, ["id"]) for i in v])) if len(v) == 1: resource = update_properties(module, {"read": v[0]}, None) module.params['id'] = navigate_value(resource, ["id"]) result = {} changed = False if module.params['state'] == 'present': if resource is None: if not module.check_mode: resource = create(config) changed = True result = resource else: if resource: if not module.check_mode: delete(config) changed = True except Exception as ex: module.fail_json(msg=str(ex)) else: result['changed'] = changed module.exit_json(**result)