def main()

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