import uuid from helpers.cmd import execute_cmd, log def create_bucket(endpoint, versioning, location, acl, no_verify_ssl): configuration = "" if location: configuration = f"--create-bucket-configuration 'LocationConstraint={location}'" if acl: acl = f"--acl {acl}" bucket_name = str(uuid.uuid4()) no_verify_ssl_str = "--no-verify-ssl" if no_verify_ssl else "" cmd_line = f"aws {no_verify_ssl_str} s3api create-bucket --bucket {bucket_name} " \ f"--endpoint {endpoint} {configuration} {acl} " cmd_line_ver = f"aws {no_verify_ssl_str} s3api put-bucket-versioning --bucket {bucket_name} " \ f"--versioning-configuration Status=Enabled --endpoint {endpoint}" output, success = execute_cmd(cmd_line) if not success and "succeeded and you already own it" not in output: log(f"{cmd_line}\n" f"Bucket {bucket_name} has not been created:\n" f"Error: {output}", endpoint) return False if versioning: output, success = execute_cmd(cmd_line_ver) if not success: log(f"{cmd_line_ver}\n" f"Bucket versioning has not been applied for bucket {bucket_name}\n" f"Error: {output}", endpoint) else: log(f"Bucket versioning has been applied for bucket {bucket_name}", endpoint) log(f"Created bucket: {bucket_name} ({location})", endpoint) return bucket_name def upload_object(bucket, payload_filepath, endpoint, no_verify_ssl): object_name = str(uuid.uuid4()) no_verify_ssl_str = "--no-verify-ssl" if no_verify_ssl else "" cmd_line = f"aws {no_verify_ssl_str} s3api put-object --bucket {bucket} --key {object_name} " \ f"--body {payload_filepath} --endpoint {endpoint}" output, success = execute_cmd(cmd_line) if not success: log(f"{cmd_line}\n" f"Object {object_name} has not been uploaded\n" f"Error: {output}", endpoint) return False return bucket, endpoint, object_name