in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_eip_info.py [0:0]
def main():
argument_spec = common_argument_spec()
argument_spec.update(
dict(
eip_ids=dict(type='list', elements='str', aliases=['ids']),
name_prefix=dict(type='str'),
ip_address_prefix=dict(type='str', aliases=['ip_prefix']),
filters=dict(type='dict'),
tags=dict(type='dict')
)
)
module = AnsibleModule(argument_spec=argument_spec)
if HAS_FOOTMARK is False:
module.fail_json(msg='footmark required for the module ali_eip_facts')
eips = []
ids = []
eip_ids = module.params["eip_ids"]
if not eip_ids:
eip_ids = []
filters = module.params["filters"]
if not filters:
filters = {}
new_filters = {}
for key, value in list(filters.items()):
if str(key).lower().replace("-", "").replace("_", "") == "allocationid" and value not in eip_ids:
eip_ids.append(value)
continue
new_filters[key] = value
name_prefix = module.params["name_prefix"]
address_prefix = module.params["ip_address_prefix"]
tags = module.params["tags"]
try:
for eip in vpc_connect(module).describe_eip_addresses(**new_filters):
if name_prefix and not str(eip.name).startswith(name_prefix):
continue
if address_prefix and not str(eip.IpAddress).startswith(address_prefix):
continue
if eip_ids and eip.allocation_id not in eip_ids:
continue
if tags:
flag = False
for key, value in list(tags.items()):
if key in list(eip.tags.keys()) and value == eip.tags[key]:
flag = True
if not flag:
continue
eips.append(eip.read())
ids.append(eip.id)
module.exit_json(changed=False, ids=ids, eips=eips)
except Exception as e:
module.fail_json(msg=str("Unable to get eips, error:{0}".format(e)))