in plugins/modules/ali_oss_object.py [0: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))