in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_vpc.py [0:0]
def main():
argument_spec = common_argument_spec()
argument_spec.update(dict(
state=dict(default='present', choices=['present', 'absent']),
cidr_block=dict(type='str', required=True, aliases=['cidr']),
user_cidrs=dict(type='list', elements='str'),
name=dict(type='str', aliases=['vpc_name']),
vpc_id=dict(type='str', aliases=['id']),
multi_ok=dict(type='bool', default=False),
description=dict(type='str'),
recent=dict(type='bool', default=False),
tags=dict(type='dict'),
purge_tags=dict(type='bool', default=False)
))
module = AnsibleModule(argument_spec=argument_spec)
if HAS_FOOTMARK is False:
module.fail_json(msg='footmark required for the module ali_vpc.')
vpc_conn = vpc_connect(module)
# Get values of variable
state = module.params['state']
vpc_name = module.params['name']
description = module.params['description']
vpc_id = module.params['vpc_id']
if str(description).startswith('http://') or str(description).startswith('https://'):
module.fail_json(msg='description can not start with http:// or https://')
if str(vpc_name).startswith('http://') or str(vpc_name).startswith('https://'):
module.fail_json(msg='vpc_name can not start with http:// or https://')
changed = False
# Check if VPC exists
vpc = vpc_exists(module, vpc_conn, vpc_id, vpc_name, module.params['cidr_block'], module.params['multi_ok'], module.params['recent'])
if state == 'absent':
if not vpc:
module.exit_json(changed=changed, vpc={})
try:
module.exit_json(changed=vpc.delete(), vpc={})
except VPCResponseError as ex:
module.fail_json(msg='Unable to delete vpc {0}, error: {1}'.format(vpc.id, ex))
if not vpc:
params = module.params
params['client_token'] = "Ansible-Apsarastack-%s-%s" % (hash(str(module.params)), str(time.time()))
params['vpc_name'] = vpc_name
try:
vpc = vpc_conn.create_vpc(**params)
module.exit_json(changed=True, vpc=vpc.get().read())
except VPCResponseError as e:
module.fail_json(msg='Unable to create vpc, error: {0}'.format(e))
if not description:
description = vpc.description
try:
if vpc.modify(vpc_name, description):
changed = True
except VPCResponseError as e:
module.fail_json(msg='Unable to modify vpc {0}, error: {1}'.format(vpc.id, e))
tags = module.params['tags']
if module.params['purge_tags']:
if not tags:
tags = vpc.tags
try:
if vpc.remove_tags(tags):
changed = True
module.exit_json(changed=changed, vpc=vpc.get().read())
except Exception as e:
module.fail_json(msg="{0}".format(e))
if tags:
try:
if vpc.add_tags(tags):
changed = True
except Exception as e:
module.fail_json(msg="{0}".format(e))
module.exit_json(changed=changed, vpc=vpc.get().read())