def main():
    argument_spec = oss_bucket_argument_spec()
    argument_spec.update(dict(
        bucket=dict(type='str', required=True),
        object=dict(type='str', aliases=['key', 'object_name']),
    ))
    module = AnsibleModule(argument_spec=argument_spec)

    if HAS_FOOTMARK is False:
        module.fail_json(msg="Package 'footmark' required for this module.")

    object_key = module.params['object']
    objects = []
    object_names = []
    max_keys = 500

    try:
        oss_bucket = oss_bucket_connect(module)

        while True:
            results = oss_bucket.list_objects(prefix=object_key, max_keys=max_keys)
            for obj in results:
                objects.append(get_info(obj))
                object_names.append(obj.key)

            if len(results) < max_keys:
                break
        module.exit_json(changed=False, object_names=object_names, objects=objects, total=len(objects))
    except Exception as e:
        module.fail_json(msg="Unable to describe bucket objects, and got an error: {0}".format(e))
def main():
    argument_spec = oss_bucket_argument_spec()
    argument_spec.update(
        dict(bucket=dict(aliases=["name"]), bucket_prefix=dict(type="str")))
    module = AnsibleModule(argument_spec=argument_spec)

    if HAS_FOOTMARK is False:
        module.fail_json(msg="Package 'footmark' required for this module.")

    try:
        oss_service = oss_service_connect(module)
        keys = oss_service.list_buckets(prefix=module.params['bucket_prefix'],
                                        max_keys=200)

        buckets = []
        bucket_names = []
        for name in keys:
            module.params['bucket'] = name
            bucket = oss_bucket_connect(module)
            buckets.append(get_info(bucket))
            bucket_names.append(bucket.name)

        module.exit_json(changed=False,
                         bucket_names=bucket_names,
                         buckets=buckets,
                         total=len(buckets))
    except Exception as e:
        module.fail_json(
            msg="Unable to describe buckets, and got an error: {0}.".format(e))
Example #3
0
def main():
    argument_spec = oss_bucket_argument_spec()
    argument_spec.update(
        dict(
            state=dict(required=True, choices=['present', 'absent', 'list']),
            permission=dict(
                default='private',
                choices=['private', 'public-read', 'public-read-write'],
                aliases=['acl']),
            bucket=dict(required=True, aliases=["name"]),
        ))
    module = AnsibleModule(argument_spec=argument_spec)

    if HAS_FOOTMARK is False:
        module.fail_json(
            msg="Package 'footmark' required for the module alicloud_bucket.")

    oss_bucket = oss_bucket_connect(module)
    state = module.params['state']
    permission = module.params['permission']

    if state == 'present':
        try:
            if oss_bucket.is_exist():
                result = oss_bucket.put_acl(permission=permission)
            else:
                result = oss_bucket.create(permission=permission)
            module.exit_json(changed=True, bucket=get_bucket(result))
        except Exception as e:
            module.fail_json(
                msg=
                "Unable to put bucket or set acl for it, and got an error: {0}."
                .format(e))

    elif state == 'absent':
        try:
            oss_bucket.delete()
            module.exit_json(changed=True)
        except Exception as e:
            module.fail_json(
                msg="Unable to delete bucket, and got an error: {0}.".format(
                    e))

    else:
        try:
            oss_service = oss_service_connect(module)
            keys = oss_service.list_buckets(prefix=module.params['bucket'],
                                            max_keys=200)

            buckets = []
            for name in keys:
                module.params['bucket'] = name
                buckets.append(get_bucket(oss_bucket_connect(module)))

            module.exit_json(changed=False, buckets=buckets)
        except Exception as e:
            module.fail_json(
                msg="Unable to list buckets, and got an error: {0}.".format(e))
Example #4
0
def main():
    argument_spec = oss_bucket_argument_spec()
    argument_spec.update(
        dict(bucket=dict(type='str', required=True),
             mode=dict(type='str',
                       required=True,
                       choices=['put', 'get', 'list', 'delete']),
             permission=dict(
                 type='str',
                 default='private',
                 choices=['private', 'public-read', 'public-read-write']),
             headers=dict(type='dict'),
             overwrite=dict(type='bool', default=False),
             content=dict(type='str'),
             file_name=dict(type='str', aliases=['file']),
             object=dict(type='str', aliases=['key', 'object_name']),
             byte_range=dict(type='str', aliases=['range'])))
    module = AnsibleModule(argument_spec=argument_spec)

    if HAS_FOOTMARK is False:
        module.fail_json(
            msg="Package 'footmark' required for the module ali_oss_object.")

    oss_bucket = oss_bucket_connect(module)
    mode = module.params['mode']
    file_name = module.params['file_name']
    object_key = module.params['object']
    headers = module.params['headers']

    changed = False

    if mode == 'put':
        content = module.params['content']
        if content and file_name:
            module.fail_json(
                msg=
                "'content' and 'file_name' only one can be specified when mode is put."
            )

        overwrite = module.params['overwrite']
        permission = module.params['permission']

        try:
            if content:
                oss_bucket.put_object(object_key,
                                      content,
                                      overwrite,
                                      headers=headers)
                changed = True
            elif file_name:
                oss_bucket.put_object_from_file(object_key,
                                                file_name,
                                                overwrite,
                                                headers=headers)
                changed = True
            elif oss_bucket.is_object_exist(object_key):
                if permission:
                    oss_bucket.put_object_acl(object_key, permission)
                    changed = True
                if headers:
                    oss_bucket.update_object_headers(object_key, headers)
                    changed = True
            module.exit_json(changed=changed,
                             key=object_key,
                             object=get_object_info(
                                 oss_bucket.get_object_info(object_key)))
        except Exception as e:
            module.fail_json(
                msg="Unable to upload an object {0} or "
                "modify its permission and headers, and got an error: {1}".
                format(object_key, e))

    elif mode == 'get':
        byte_range = module.params['byte_range']
        try:
            if file_name:
                oss_bucket.get_object_to_file(object_key,
                                              file_name,
                                              byte_range=byte_range,
                                              headers=headers)
            else:
                module.fail_json(
                    msg="'file_name' must be specified when mode is get.")
            module.exit_json(changed=changed,
                             key=object_key,
                             object=get_object_info(
                                 oss_bucket.get_object_info(object_key)))
        except Exception as e:
            module.fail_json(
                msg="Unable to download object {0}, and got an error: {1}".
                format(object_key, e))

    elif mode == 'list':
        objects = []
        max_keys = 500
        try:
            while True:
                results = oss_bucket.list_objects(prefix=object_key,
                                                  max_keys=max_keys)
                for obj in results:
                    objects.append(get_object_info(obj))

                if len(results) < max_keys:
                    break
            module.exit_json(changed=False, objects=objects)
        except Exception as e:
            module.fail_json(
                msg="Unable to retrieve all objects, and got an error: {0}".
                format(e))

    else:
        try:
            oss_bucket.delete_object(object_key)
            module.exit_json(changed=changed, key=object_key)
        except Exception as e:
            module.fail_json(
                msg="Unable to delete an object {0}, and got an error: {1}".
                format(object_key, e))