def main()

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)))