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 async_wait_create(config, result, client, timeout): module = config.module path_parameters = { "publicip_id": ["publicip", "id"], } data = dict((key, navigate_value(result, path)) for key, path in path_parameters.items()) url = build_path(module, "publicips/{publicip_id}", data) def _query_status(): r = None try: r = client.get(url, timeout=timeout) except HwcClientException: return None, "" try: s = navigate_value(r, ["publicip", "status"]) return r, s except Exception: return None, "" try: return wait_to_finish( ["ACTIVE", "DOWN"], None, _query_status, timeout) except Exception as ex: module.fail_json(msg="module(hwc_vpc_eip): error " "waiting for api(create) to " "be done, error= %s" % str(ex))
def async_wait(config, result, client, timeout): module = config.module path_parameters = { "job_id": ["job_id"], } data = dict((key, navigate_value(result, path)) for key, path in path_parameters.items()) url = build_path(module, "jobs/{job_id}", data) def _query_status(): r = None try: r = client.get(url, timeout=timeout) except HwcClientException: return None, "" try: s = navigate_value(r, ["status"]) return r, s except Exception: return None, "" try: return wait_to_finish(["SUCCESS"], ["RUNNING", "INIT"], _query_status, timeout) except Exception as ex: module.fail_json(msg="module(hwc_evs_disk): error " "waiting to be done, error= %s" % str(ex))
def delete(config): module = config.module client = config.client(get_region(module), "vpc", "project") if module.params["port_id"]: module.params["port_id"] = "" update(config) send_delete_request(module, None, client) url = build_path(module, "publicips/{id}") def _refresh_status(): try: client.get(url) except HwcClientException404: return True, "Done" except Exception: return None, "" return True, "Pending" timeout = 60 * int(module.params['timeouts']['create'].rstrip('m')) try: wait_to_finish(["Done"], ["Pending"], _refresh_status, timeout) except Exception as ex: module.fail_json(msg="module(hwc_vpc_eip): error " "waiting for api(delete) to " "be done, error= %s" % str(ex))
def async_wait_update(config, result, client, timeout): module = config.module url = build_path(module, "publicips/{id}") def _query_status(): r = None try: r = client.get(url, timeout=timeout) except HwcClientException: return None, "" try: s = navigate_value(r, ["publicip", "status"]) return r, s except Exception: return None, "" try: return wait_to_finish( ["ACTIVE", "DOWN"], None, _query_status, timeout) except Exception as ex: module.fail_json(msg="module(hwc_vpc_eip): error " "waiting for api(update) to " "be done, error= %s" % str(ex))
def send_delete_request(module, params, client): url = build_path(module, "privateips/{id}") try: r = client.delete(url, params) except HwcClientException as ex: msg = ("module(hwc_vpc_private_ip): error running " "api(delete), error: %s" % str(ex)) module.fail_json(msg=msg) return r
def send_update_request(module, params, client): url = build_path(module, "ports/{id}") try: r = client.put(url, params) except HwcClientException as ex: msg = ("module(hwc_vpc_port): error running " "api(update), error: %s" % str(ex)) module.fail_json(msg=msg) return r
def send_extend_disk_request(module, params, client): url = build_path(module, "cloudvolumes/{id}/action") try: r = client.post(url, params) except HwcClientException as ex: msg = ("module(hwc_evs_disk): error running " "api(extend_disk), error: %s" % str(ex)) module.fail_json(msg=msg) return r
def send_delete_request(module, params, client): url = build_path(module, "security-group-rules/{id}") try: r = client.delete(url, params) except HwcClientException as ex: msg = ("module(hwc_vpc_security_group_rule): error running " "api(delete), error: %s" % str(ex)) module.fail_json(msg=msg) return r
def send_read_request(module, client): url = build_path(module, "os-vendor-volumes/{id}") r = None try: r = client.get(url) except HwcClientException as ex: msg = ("module(hwc_evs_disk): error running " "api(read), error: %s" % str(ex)) module.fail_json(msg=msg) return navigate_value(r, ["volume"], None)
def send_read_request(module, client): url = build_path(module, "privateips/{id}") r = None try: r = client.get(url) except HwcClientException as ex: msg = ("module(hwc_vpc_private_ip): error running " "api(read), error: %s" % str(ex)) module.fail_json(msg=msg) return navigate_value(r, ["privateip"], None)
def send_read_request(module, client): url = build_path(module, "security-group-rules/{id}") r = None try: r = client.get(url) except HwcClientException as ex: msg = ("module(hwc_vpc_security_group_rule): error running " "api(read), error: %s" % str(ex)) module.fail_json(msg=msg) return navigate_value(r, ["security_group_rule"], None)
def get_resource(config, result): module = config.module client = config.client(get_region(module), "smn", "project") v = "" try: v = navigate_value(result, ['topic_urn']) except Exception as ex: module.fail_json(msg=str(ex)) d = {'topic_urn': v} url = build_path(module, 'notifications/topics/{topic_urn}', d) return fetch_resource(module, client, url)
def create(config, link): module = config.module client = config.client(get_region(module), "vpc", "project") r = None try: r = client.post(link, resource_to_create(module)) except HwcClientException as ex: msg = ("module(hwc_network_vpc): error creating " "resource, error: %s" % str(ex)) module.fail_json(msg=msg) wait_done = wait_for_operation(config, 'create', r) v = "" try: v = navigate_value(wait_done, ['vpc', 'id']) except Exception as ex: module.fail_json(msg=str(ex)) url = build_path(module, 'vpcs/{op_id}', {'op_id': v}) return fetch_resource(module, client, url)
def wait_for_operation(config, op_type, op_result): module = config.module op_id = "" try: op_id = navigate_value(op_result, ['vpc', 'id']) except Exception as ex: module.fail_json(msg=str(ex)) url = build_path(module, "vpcs/{op_id}", {'op_id': op_id}) timeout = 60 * int(module.params['timeouts'][op_type].rstrip('m')) states = { 'create': { 'allowed': ['CREATING', 'DONW', 'OK'], 'complete': ['OK'], }, 'update': { 'allowed': ['PENDING_UPDATE', 'DONW', 'OK'], 'complete': ['OK'], } } return wait_for_completion(url, timeout, states[op_type]['allowed'], states[op_type]['complete'], config)
def self_link(module): return build_path(module, "notifications/topics/{id}")
def self_link(module): return build_path(module, "vpcs/{id}")