in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_vpc_info.py [0:0]
def main():
argument_spec = common_argument_spec()
argument_spec.update(dict(
vpc_ids=dict(type='list', elements='str', aliases=['ids']),
vpc_name=dict(type='str', aliases=['name']),
name_prefix=dict(type='str'),
cidr_prefix=dict(type='str'),
filters=dict(type='dict'),
)
)
module = AnsibleModule(argument_spec=argument_spec)
if HAS_FOOTMARK is False:
module.fail_json(msg="Package 'footmark' required for this module.")
filters = module.params['filters']
if not filters:
filters = {}
vpc_ids = module.params['vpc_ids']
if not vpc_ids:
vpc_ids = []
for key, value in list(filters.items()):
if key in ["VpcId", "vpc_id", "vpc-id"] and value not in vpc_ids:
vpc_ids.append(value)
name = module.params['vpc_name']
name_prefix = module.params['name_prefix']
cidr_prefix = module.params['cidr_prefix']
try:
vpcs = []
ids = []
while True:
if vpc_ids:
filters['vpc_id'] = vpc_ids[0]
vpc_ids.pop(0)
for vpc in vpc_connect(module).describe_vpcs(**filters):
if name and vpc.vpc_name != name:
continue
if name_prefix and not str(vpc.vpc_name).startswith(name_prefix):
continue
if cidr_prefix and not str(vpc.cidr_block).startswith(cidr_prefix):
continue
vpcs.append(vpc.read())
ids.append(vpc.id)
if not vpc_ids:
break
module.exit_json(changed=False, ids=ids, vpcs=vpcs)
except Exception as e:
module.fail_json(msg=str("Unable to get vpcs, error:{0}".format(e)))