)]}'
{"etc/proxy-server.conf-sample":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9c33701b98f8de63407755ae3db35af42677bd0b","unresolved":false,"context_lines":[{"line_number":577,"context_line":"# Sometimes it\u0027s useful to see the uploadId that was used to create an MPU; enable"},{"line_number":578,"context_line":"# this option to include it as a new x-amz-upload-id header on GET or HEAD. Since"},{"line_number":579,"context_line":"# AWS does not return such a header, the default is false."},{"line_number":580,"context_line":"# annotate_with_upload_id \u003d false"},{"line_number":581,"context_line":""},{"line_number":582,"context_line":"# You can override the default log routing for this filter here:"},{"line_number":583,"context_line":"# log_name \u003d s3api"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"ff570b3c_d02592c3","line":580,"updated":"2020-06-05 17:45:34.000000000","message":"we\u0027re optionally extending the s3api?!","commit_id":"affac56609732876c78524f5326145827e264ad2"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"295f5e6fe42d7f83225e108ba2bb721be42fdd6e","unresolved":false,"context_lines":[{"line_number":578,"context_line":"# this option to include it as a new x-swift-s3api-upload-id header on GET or HEAD."},{"line_number":579,"context_line":"# Note that AWS does not return such a header; if your client relies on this, it"},{"line_number":580,"context_line":"# (or s3api) probably has other issues."},{"line_number":581,"context_line":"# annotate_with_upload_id \u003d true"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"# You can override the default log routing for this filter here:"},{"line_number":584,"context_line":"# log_name \u003d s3api"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"ff570b3c_5615fa9a","line":581,"updated":"2020-06-05 19:14:48.000000000","message":"oh haha, you left the option in and just changed the default... ok","commit_id":"6bc8b7ebcb842623e5c6ef668c441e9a26a1fbd9"}],"swift/common/middleware/s3api/controllers/multi_upload.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9c33701b98f8de63407755ae3db35af42677bd0b","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        upload_id \u003d req.params[\u0027uploadId\u0027]"},{"line_number":582,"context_line":"        resp \u003d _get_upload_info(req, self.app, upload_id)"},{"line_number":583,"context_line":"        headers \u003d {\u0027Accept\u0027: \u0027application/json\u0027,"},{"line_number":584,"context_line":"                   sysmeta_header(\u0027object\u0027, \u0027upload-id\u0027): upload_id}"},{"line_number":585,"context_line":"        for key, val in resp.headers.items():"},{"line_number":586,"context_line":"            _key \u003d key.lower()"},{"line_number":587,"context_line":"            if _key.startswith(\u0027x-amz-meta-\u0027):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_7014864d","line":584,"updated":"2020-06-05 17:45:34.000000000","message":"i need to read up on what this method does - it\u0027s creating manifest right?  So this is setting system metadata on that?  does sysmeta always namespace this to s3api?","commit_id":"affac56609732876c78524f5326145827e264ad2"}],"swift/common/middleware/s3api/controllers/obj.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9c33701b98f8de63407755ae3db35af42677bd0b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        stored_upload_id \u003d resp.sysmeta_headers.get("},{"line_number":95,"context_line":"            sysmeta_header(\u0027object\u0027, \u0027upload-id\u0027))"},{"line_number":96,"context_line":"        if self.conf.annotate_with_upload_id and stored_upload_id:"},{"line_number":97,"context_line":"            resp.headers[\u0027x-amz-upload-id\u0027] \u003d stored_upload_id"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if req.method \u003d\u003d \u0027HEAD\u0027:"},{"line_number":100,"context_line":"            resp.app_iter \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_eb42673a","line":97,"updated":"2020-06-05 17:45:34.000000000","message":"so amz considers the upload-id irrelevant to the user after the upload is complete, and to some extent we must also because until we started writing it down we have no way to infer it from the manifest?","commit_id":"affac56609732876c78524f5326145827e264ad2"}],"swift/common/middleware/s3api/s3api.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9c33701b98f8de63407755ae3db35af42677bd0b","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        min_segment_size\u003dconf.get(\u0027min_segment_size\u0027, 5242880),"},{"line_number":413,"context_line":"        s3_acl\u003dconfig_true_value(conf.get(\u0027s3_acl\u0027, False)),"},{"line_number":414,"context_line":"        annotate_with_upload_id\u003dconfig_true_value("},{"line_number":415,"context_line":"            conf.get(\u0027annotate_with_upload_id\u0027, False)),"},{"line_number":416,"context_line":"    )"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def s3api_filter(app):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_0b619bd3","line":415,"updated":"2020-06-05 17:45:34.000000000","message":"good call adding to /info - would make it a lot easier to hit with a func test","commit_id":"affac56609732876c78524f5326145827e264ad2"}],"test/functional/s3api/test_multi_upload.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9c33701b98f8de63407755ae3db35af42677bd0b","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                self.assertIn(\u0027x-amz-upload-id\u0027, headers)"},{"line_number":395,"context_line":"                self.assertEqual(headers[\u0027x-amx-upload-id\u0027], uploads[0][1])"},{"line_number":396,"context_line":"            else:"},{"line_number":397,"context_line":"                self.assertNotIn(\u0027x-amz-upload-id\u0027, headers)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        check_obj({}, 200)"},{"line_number":400,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_4b9c33bf","line":397,"updated":"2020-06-05 17:45:34.000000000","message":"and there you go!  nice!","commit_id":"affac56609732876c78524f5326145827e264ad2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1b4a9da6610e770508301bafa57b9e0723fc53b9","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                    self.assertEqual(headers[\u0027content-length\u0027], str(exp_size))"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"            if tf.cluster_info[\u0027s3api\u0027].get(\u0027annotate_with_upload_id\u0027):"},{"line_number":394,"context_line":"                self.assertIn(\u0027x-amz-upload-id\u0027, headers)"},{"line_number":395,"context_line":"                self.assertEqual(headers[\u0027x-amx-upload-id\u0027], uploads[0][1])"},{"line_number":396,"context_line":"            else:"},{"line_number":397,"context_line":"                self.assertNotIn(\u0027x-amz-upload-id\u0027, headers)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_51bfc45f","line":394,"range":{"start_line":394,"start_character":31,"end_line":394,"end_character":46},"updated":"2020-06-08 19:39:54.000000000","message":"dur da dur","commit_id":"6bc8b7ebcb842623e5c6ef668c441e9a26a1fbd9"}],"test/unit/common/middleware/s3api/test_multi_upload.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9c33701b98f8de63407755ae3db35af42677bd0b","unresolved":false,"context_lines":[{"line_number":843,"context_line":"        override_etag \u003d \u0027; s3_etag\u003d%s\u0027 % S3_ETAG.strip(\u0027\"\u0027)"},{"line_number":844,"context_line":"        h \u003d \u0027X-Object-Sysmeta-Container-Update-Override-Etag\u0027"},{"line_number":845,"context_line":"        self.assertEqual(headers.get(h), override_etag)"},{"line_number":846,"context_line":"        self.assertEqual(headers.get(\u0027X-Object-Sysmeta-S3Api-Upload-Id\u0027), \u0027X\u0027)"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"    def test_object_multipart_upload_invalid_md5(self):"},{"line_number":849,"context_line":"        bad_md5 \u003d base64.b64encode(hashlib.md5("}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_6ba5b702","line":846,"updated":"2020-06-05 17:45:34.000000000","message":"oh interesting; right we *always* store it - and it *is* namespaced to s3api","commit_id":"affac56609732876c78524f5326145827e264ad2"}]}
