diff --git a/roles/upload-image-s3/README.rst b/roles/upload-image-s3/README.rst index ac8f37b02..7f7f92aef 100644 --- a/roles/upload-image-s3/README.rst +++ b/roles/upload-image-s3/README.rst @@ -82,3 +82,8 @@ zuul-launcher expects. :default: 600 The async timeout for md5/sha256 image hash tasks. + +.. zuul:rolevar:: upload_image_s3_export_s3_url + :default: false + + Export the image location as s3:// URL. diff --git a/roles/upload-image-s3/defaults/main.yaml b/roles/upload-image-s3/defaults/main.yaml index 1114624a3..802461614 100644 --- a/roles/upload-image-s3/defaults/main.yaml +++ b/roles/upload-image-s3/defaults/main.yaml @@ -5,3 +5,4 @@ upload_image_s3_name: '{{ zuul.build }}-{{ build_diskimage_image_name }}.{{ uplo upload_image_s3_extension: '{{ upload_image_s3_format }}' upload_image_s3_compress_image: true upload_image_s3_hash_timeout: 600 +upload_image_s3_export_s3_url: false diff --git a/roles/upload-image-s3/library/upload_image_s3.py b/roles/upload-image-s3/library/upload_image_s3.py index aa9feaf22..d9818db83 100644 --- a/roles/upload-image-s3/library/upload_image_s3.py +++ b/roles/upload-image-s3/library/upload_image_s3.py @@ -38,7 +38,7 @@ def prune(bucket, delete_after): def run(endpoint, bucket_name, aws_access_key, aws_secret_key, - filename, name, delete_after=None): + filename, name, delete_after=None, export_s3_url=False): endpoint = endpoint or 'https://s3.amazonaws.com/' s3 = boto3.resource('s3', endpoint_url=endpoint, @@ -50,7 +50,10 @@ def run(endpoint, bucket_name, aws_access_key, aws_secret_key, bucket.upload_file(filename, name) - url = os.path.join(endpoint, bucket_name, name) + if export_s3_url: + url = os.path.join("s3://", bucket_name, name) + else: + url = os.path.join(endpoint, bucket_name, name) return url @@ -62,6 +65,7 @@ def ansible_main(): filename=dict(required=True, type='path'), name=dict(required=True, type='str'), delete_after=dict(type='int'), + export_s3_url=dict(type='bool', default=False), aws_access_key=dict(type='str'), aws_secret_key=dict(type='str', no_log=True), ) @@ -78,6 +82,7 @@ def ansible_main(): p.get('filename'), p.get('name'), delete_after=p.get('delete_after'), + export_s3_url=p.get('export_s3_url'), ) except Exception: s = "Error uploading to S3" @@ -110,6 +115,9 @@ def cli_main(): 'upload. Default is 3 days (259200 seconds) ' 'and if set to 0 X-Delete-After will not be set', type=int) + parser.add_argument('--export-s3-url', + help='Export the image location as s3:// URL', + action='store_true') args = parser.parse_args() @@ -125,6 +133,7 @@ def cli_main(): args.filename, args.name, delete_after=args.delete_after, + export_s3_url=args.export_s3_url, ) print(url) diff --git a/roles/upload-image-s3/tasks/main.yaml b/roles/upload-image-s3/tasks/main.yaml index f8a5a0f4d..ea5708fc8 100644 --- a/roles/upload-image-s3/tasks/main.yaml +++ b/roles/upload-image-s3/tasks/main.yaml @@ -51,6 +51,7 @@ filename: '{{ upload_image_s3_filename }}{{ zj_upload_image_s3_extension }}' name: '{{ upload_image_s3_name }}{{ zj_upload_image_s3_extension }}' delete_after: '{{ upload_image_s3_delete_after }}' + export_s3_url: '{{ upload_image_s3_export_s3_url }}' register: upload_results - name: Delete uncompressed image