)]}'
{"swift/common/middleware/s3api/s3request.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"                                            2, 3, True)"},{"line_number":1335,"context_line":"            # Propagate SWIFT_PATH_INFO in environ for middleware in pipeline"},{"line_number":1336,"context_line":"            # that need Swift PATH_INFO like ceilometermiddleware."},{"line_number":1337,"context_line":"            # Store PATH_INFO only the first time to ignore multipart sub-request."},{"line_number":1338,"context_line":"            if \u0027SWIFT_PATH_INFO\u0027 not in self.environ:"},{"line_number":1339,"context_line":"                self.environ[\u0027SWIFT_PATH_INFO\u0027] \u003d sw_resp.environ.get(\u0027PATH_INFO\u0027)"},{"line_number":1340,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_db155de7","line":1337,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":1336,"context_line":"            # that need Swift PATH_INFO like ceilometermiddleware."},{"line_number":1337,"context_line":"            # Store PATH_INFO only the first time to ignore multipart sub-request."},{"line_number":1338,"context_line":"            if \u0027SWIFT_PATH_INFO\u0027 not in self.environ:"},{"line_number":1339,"context_line":"                self.environ[\u0027SWIFT_PATH_INFO\u0027] \u003d sw_resp.environ.get(\u0027PATH_INFO\u0027)"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        resp \u003d S3Response.from_swift_resp(sw_resp)"},{"line_number":1342,"context_line":"        status \u003d resp.status_int  # pylint: disable-msg\u003dE1101"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_3bd28935","line":1339,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (82 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e6da9b33fd38d0af83e1ba1ec196fb54d5ca78c0","unresolved":false,"context_lines":[{"line_number":1336,"context_line":"            # that need Swift PATH_INFO like ceilometermiddleware."},{"line_number":1337,"context_line":"            # Store PATH_INFO only the first time to ignore multipart requests."},{"line_number":1338,"context_line":"            if \u0027SWIFT_PATH_INFO\u0027 not in self.environ:"},{"line_number":1339,"context_line":"                self.environ[\u0027SWIFT_PATH_INFO\u0027] \u003d sw_resp.environ[\u0027PATH_INFO\u0027]"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        resp \u003d S3Response.from_swift_resp(sw_resp)"},{"line_number":1342,"context_line":"        status \u003d resp.status_int  # pylint: disable-msg\u003dE1101"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_662ab1e7","line":1339,"range":{"start_line":1339,"start_character":30,"end_line":1339,"end_character":45},"updated":"2020-04-07 23:52:21.000000000","message":"We usually use a \"swift.\" prefix to namespace this sort of thing in the WSGI environment; what do you think about\n\n swift.backend_path\n\nas the key instead?","commit_id":"e8272b77e8ab2907cfa634298fd59c8a054d260b"},{"author":{"_account_id":28499,"name":"Romain de Joux","email":"romain.de-joux@ovhcloud.com","username":"rdejoux"},"change_message_id":"3d6be41def3a58cc9c967ba3aaf370d383b6f8f6","unresolved":false,"context_lines":[{"line_number":1336,"context_line":"            # that need Swift PATH_INFO like ceilometermiddleware."},{"line_number":1337,"context_line":"            # Store PATH_INFO only the first time to ignore multipart requests."},{"line_number":1338,"context_line":"            if \u0027SWIFT_PATH_INFO\u0027 not in self.environ:"},{"line_number":1339,"context_line":"                self.environ[\u0027SWIFT_PATH_INFO\u0027] \u003d sw_resp.environ[\u0027PATH_INFO\u0027]"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        resp \u003d S3Response.from_swift_resp(sw_resp)"},{"line_number":1342,"context_line":"        status \u003d resp.status_int  # pylint: disable-msg\u003dE1101"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_5228f932","line":1339,"range":{"start_line":1339,"start_character":30,"end_line":1339,"end_character":45},"in_reply_to":"df33271e_662ab1e7","updated":"2020-04-08 13:00:45.000000000","message":"Good naming!\nDone","commit_id":"e8272b77e8ab2907cfa634298fd59c8a054d260b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d9ac6987df5a6c2a20e44392e55877dee14995c7","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"                                            2, 3, True)"},{"line_number":1335,"context_line":"            # Propagate swift.backend_path in environ for middleware"},{"line_number":1336,"context_line":"            # in pipeline that need Swift PATH_INFO like ceilometermiddleware."},{"line_number":1337,"context_line":"            # Store PATH_INFO only the first time to ignore multipart requests."},{"line_number":1338,"context_line":"            if \u0027swift.backend_path\u0027 not in self.environ:"},{"line_number":1339,"context_line":"                self.environ[\u0027swift.backend_path\u0027] \u003d \\"},{"line_number":1340,"context_line":"                    sw_resp.environ[\u0027PATH_INFO\u0027]"},{"line_number":1341,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_5c202df8","line":1338,"range":{"start_line":1337,"start_character":12,"end_line":1338,"end_character":56},"updated":"2020-06-11 05:11:24.000000000","message":"So as I\u0027m playing around with this more in https://review.opendev.org/#/c/728298/, I\u0027m realizing that I don\u0027t really understand why this is here and what we\u0027re trying to fix by including it. So I\u0027ve got a few questions:\n\n* What\u0027s your pipeline like? Where is ceilometer in relation to all this?\n* Is s3_acl enabled or disabled? Did you see what happens when it\u0027s the other way?\n* What do you mean by \"ignore multipart requests\"? Which operations with MPUs did you test with, and what were the bad behaviors observed?","commit_id":"415011e162fad469801e5f5e88a11960f638bdbf"}],"test/unit/common/middleware/s3api/test_s3api.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.assertEqual(path_info, unquote(raw_path_info))"},{"line_number":144,"context_line":"        self.assertEqual(req.path, quote(path_info))"},{"line_number":145,"context_line":"        self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":146,"context_line":"        self.assertEqual(\u0027/v1/AUTH_test/bucket/object:1\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_canonical_string_v2(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_1bd5051c","line":146,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (89 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        self.assertEqual(\u0027/v1/AUTH_test/bucket/object:1\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_canonical_string_v2(self):"},{"line_number":150,"context_line":"        \"\"\""},{"line_number":151,"context_line":"        The hashes here were generated by running the same requests against"},{"line_number":152,"context_line":"        boto.utils.canonical_string"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_7bdc1146","line":149,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":274,"context_line":"        self.assertEqual(status.split()[0], \u0027200\u0027)"},{"line_number":275,"context_line":"        self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":276,"context_line":"        self.assertEqual(\u0027/v1/AUTH_test/bucket/object\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":277,"context_line":"        for _, path, headers in self.swift.calls_with_headers:"},{"line_number":278,"context_line":"            self.assertNotIn(\u0027Authorization\u0027, headers)"},{"line_number":279,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_5bdf8d39","line":276,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        # for signed_url access and it also doesn\u0027t check timestamp"},{"line_number":289,"context_line":"        self.assertEqual(status.split()[0], \u0027200\u0027)"},{"line_number":290,"context_line":"        self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":291,"context_line":"        self.assertEqual(\u0027/v1/AUTH_test/bucket/object\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":292,"context_line":"        for _, _, headers in self.swift.calls_with_headers:"},{"line_number":293,"context_line":"            self.assertNotIn(\u0027Authorization\u0027, headers)"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_bbe5f90c","line":291,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        req.content_type \u003d \u0027text/plain\u0027"},{"line_number":341,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":342,"context_line":"        self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":343,"context_line":"        self.assertEqual(\u0027/v1/AUTH_test/bucket/object\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":344,"context_line":"        self.assertEqual(status.split()[0], \u0027200\u0027, body)"},{"line_number":345,"context_line":"        for _, _, headers in self.swift.calls_with_headers:"},{"line_number":346,"context_line":"            self.assertNotIn(\u0027Authorization\u0027, headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_9be0f5fa","line":343,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":465,"context_line":"        self.assertEqual(status.split()[0], \u0027200\u0027)"},{"line_number":466,"context_line":"        self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":467,"context_line":"        self.assertEqual(\u0027/v1/AUTH_test/bucket\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    def test_object_virtual_hosted_style(self):"},{"line_number":470,"context_line":"        req \u003d Request.blank(\u0027/object\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_fbef81e6","line":467,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":477,"context_line":"        self.assertEqual(status.split()[0], \u0027200\u0027)"},{"line_number":478,"context_line":"        self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":479,"context_line":"        self.assertEqual(\u0027/v1/AUTH_test/bucket/object\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_token_generation(self):"},{"line_number":482,"context_line":"        self.swift.register(\u0027HEAD\u0027, \u0027/v1/AUTH_test/bucket+segments/\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_dbea7dd6","line":479,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":495,"context_line":"                        \u0027S3Request.check_signature\u0027) as mock_cs:"},{"line_number":496,"context_line":"            status, headers, body \u003d self.call_s3api(req)"},{"line_number":497,"context_line":"            self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":498,"context_line":"            self.assertEqual(\u0027/v1/AUTH_test/bucket\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        _, _, headers \u003d self.swift.calls_with_headers[-1]"},{"line_number":501,"context_line":"        self.assertEqual(req.environ[\u0027s3api.auth_details\u0027], {"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_3bbba9e5","line":498,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (84 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":524,"context_line":"                        \u0027S3Request.check_signature\u0027) as mock_cs:"},{"line_number":525,"context_line":"            status, headers, body \u003d self.call_s3api(req)"},{"line_number":526,"context_line":"            self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":527,"context_line":"            self.assertEqual(\u0027/v1/AUTH_test/bucket\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        _, _, headers \u003d self.swift.calls_with_headers[-1]"},{"line_number":530,"context_line":"        self.assertEqual(req.environ[\u0027s3api.auth_details\u0027], {"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_1bbea5d3","line":527,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (84 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":643,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":644,"context_line":"        self.assertEqual(status, \u0027200 OK\u0027)"},{"line_number":645,"context_line":"        self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":646,"context_line":"        self.assertEqual(\u0027/v1/AUTH_X/bucket/object\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":647,"context_line":"        # ...but aws:kms continues to fail"},{"line_number":648,"context_line":"        self._test_unsupported_header(sse_header, \u0027aws:kms\u0027)"},{"line_number":649,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_7bb531ee","line":646,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (84 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":814,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":815,"context_line":"        self.assertEqual(status.split()[0], \u0027200\u0027, body)"},{"line_number":816,"context_line":"        self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":817,"context_line":"        self.assertEqual(\u0027/v1/AUTH_test/bucket/object\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":818,"context_line":"        for _, _, headers in self.swift.calls_with_headers:"},{"line_number":819,"context_line":"            self.assertEqual(authz_header, headers[\u0027Authorization\u0027])"},{"line_number":820,"context_line":"            self.assertNotIn(\u0027X-Auth-Token\u0027, headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_5bb82de4","line":817,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":1166,"context_line":"            self.assertEqual(body, b\u0027\u0027)"},{"line_number":1167,"context_line":"            self.assertEqual(1, mock_req.call_count)"},{"line_number":1168,"context_line":"            self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":1169,"context_line":"            self.assertEqual(\u0027/v1/AUTH_TENANT_ID/bucket\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"    def test_s3api_with_only_s3_token_v3(self):"},{"line_number":1172,"context_line":"        self.swift \u003d FakeSwift()"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_bbce9980","line":1169,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (89 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"            self.assertEqual(body, b\u0027\u0027)"},{"line_number":1196,"context_line":"            self.assertEqual(1, mock_req.call_count)"},{"line_number":1197,"context_line":"            self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":1198,"context_line":"            self.assertEqual(\u0027/v1/AUTH_PROJECT_ID/bucket\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"    def test_s3api_with_s3_token_and_auth_token(self):"},{"line_number":1201,"context_line":"        self.swift \u003d FakeSwift()"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_9bc9157b","line":1198,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (90 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"                # Keystone."},{"line_number":1243,"context_line":"                self.assertEqual(\u0027403 Forbidden\u0027, status)"},{"line_number":1244,"context_line":"                self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":1245,"context_line":"                self.assertEqual(\u0027/v1/AUTH_TENANT_ID/bucket\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":1246,"context_line":"                self.assertEqual(1, mock_req.call_count)"},{"line_number":1247,"context_line":"                # it never even tries to contact keystone"},{"line_number":1248,"context_line":"                self.assertEqual(0, mock_fetch.call_count)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_fbc82175","line":1245,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (93 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"16fc7026987ce8555e37179b3326668868ca2c8f","unresolved":false,"context_lines":[{"line_number":1279,"context_line":"            status, headers, body \u003d self.call_s3api(req)"},{"line_number":1280,"context_line":"            self.assertEqual(body, b\u0027\u0027)"},{"line_number":1281,"context_line":"            self.assertIn(\u0027SWIFT_PATH_INFO\u0027, req.environ)"},{"line_number":1282,"context_line":"            self.assertEqual(\u0027/v1/AUTH_TENANT_ID/bucket\u0027, req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":1283,"context_line":"            self.assertEqual(1, mock_req.call_count)"},{"line_number":1284,"context_line":""},{"line_number":1285,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_dbc39d56","line":1282,"updated":"2020-04-07 18:55:49.000000000","message":"pep8: E501 line too long (89 \u003e 79 characters)","commit_id":"7b12d7eb5abc821f5ad15d2eb5a07c5bfba16b00"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3ce7ce036b72e7f47a3f65a2738b024b503f3025","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                         req.environ[\u0027SWIFT_PATH_INFO\u0027])"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def test_canonical_string_v2(self):"},{"line_number":151,"context_line":"        \"\"\""},{"line_number":152,"context_line":"        The hashes here were generated by running the same requests against"},{"line_number":153,"context_line":"        boto.utils.canonical_string"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_29351adb","line":150,"updated":"2020-04-08 00:16:19.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"e8272b77e8ab2907cfa634298fd59c8a054d260b"}]}
