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