def main()

in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_ecs_tag.py [0:0]


def main():
    argument_spec = common_argument_spec()
    argument_spec.update(dict(
        state=dict(default='present', choices=['present', 'absent']),
        resource_ids=dict(type='list', elements='str', required=True),
        resource_type=dict(type='str', default='instance', choices=['instance', 'disk', 'image', 'eni', 'securitygroup']),
        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_ecs_tag.')

    ecs_conn = ecs_connect(module)
    if module.params['resource_type'] == 'instance':
        resources = ecs_exists(module, ecs_conn)
    elif module.params['resource_type'] == 'disk':
        resources = disk_exists_v2(module, ecs_conn)
    elif module.params['resource_type'] == 'image':
        resources = image_exists(module, ecs_conn)
    elif module.params['resource_type'] == 'eni':
        resources = eni_exists(module, ecs_conn)
    else:
        resources = sgroup_exists(module, ecs_conn)

    if not resources:
        module.fail_json(msg='No matching resource was found based on the IDS provided.')

    #Get values of variable
    tags = module.params['tags']

    if module.params['state'] == "present":
        ecs_changed = ecs_conn.tag_resources(resource_ids=module.params['resource_ids'], tags=tags, resource_type=module.params['resource_type'])
    else:
        ecs_changed = ecs_conn.untag_resources(resource_ids=module.params['resource_ids'], tags=tags, resource_type=module.params['resource_type'])

    result = []
    for i in range(5):
        if module.params['resource_type'] == 'instance':
            resources = ecs_exists(module, ecs_conn)
        elif module.params['resource_type'] == 'disk':
            resources = disk_exists_v2(module, ecs_conn)
        elif module.params['resource_type'] == 'image':
            resources = image_exists(module, ecs_conn)
        elif module.params['resource_type'] == 'eni':
            resources = eni_exists(module, ecs_conn)
        else:
            resources = sgroup_exists(module, ecs_conn)
    for resource in resources:
        if module.params['resource_type'] == 'disk':
            tags_list = resource["Tags"]["Tag"]
            resource["tags"] = {x['TagKey']: x['TagValue'] for x in tags_list}
            result.append(resource["tags"])
        else:
            result.append(resource.read()['tags'])

    module.exit_json(changed=ecs_changed, tags=result)