)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f6e8fd095ed210c80d7a60456a301df8bceaa4cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1b3ea380_ed04953a","updated":"2022-09-07 20:34:09.000000000","message":"Nice! Passes locally with https://review.opendev.org/c/openstack/swift/+/856327 applied :-)","commit_id":"8528fe4b837e435ef7f27e15513b929522c8dd5f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"89acbb535f908c4d1ea4094c65eed4746fb7b850","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bff62d47_a59bb5ce","updated":"2022-09-07 20:21:57.000000000","message":"related: https://review.opendev.org/c/openstack/swift/+/856327","commit_id":"8528fe4b837e435ef7f27e15513b929522c8dd5f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"151b63044e2a0e57cbca8038bcd050b4e7cf3546","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"50fcf25c_0bd0422f","updated":"2022-09-07 20:16:28.000000000","message":"this fails against my vsaio using the default s3api_test config in /etc/swift/test.conf\n\n\tSep  7 20:06:53 saio proxy-server: Invalid path: https%3A//saio/s3api-test-test-address-style-982758b84ed74d53a3a059b6845ea7c0: \n\tTraceback (most recent call last):\n\t  File \"/vagrant/swift/swift/common/middleware/s3api/s3api.py\", line 341, in __call__\n\t    req \u003d req_class(env, self.app, self.conf)\n\t  File \"/vagrant/swift/swift/common/middleware/s3api/s3request.py\", line 1524, in __init__\n\t    super(S3AclRequest, self).__init__(env, app, conf)\n\t  File \"/vagrant/swift/swift/common/middleware/s3api/s3request.py\", line 539, in __init__\n\t    self.container_name, self.object_name \u003d self._parse_uri()\n\t  File \"/vagrant/swift/swift/common/middleware/s3api/s3request.py\", line 639, in _parse_uri\n\t    bucket, obj \u003d self.split_path(0, 2, True)\n\t  File \"/vagrant/swift/swift/common/swob.py\", line 1189, in split_path\n\t    return split_path(\n\t  File \"/vagrant/swift/swift/common/utils.py\", line 1673, in split_path\n\t    raise ValueError(\u0027Invalid path: %s\u0027 % quote(path))\n\tValueError: Invalid path: https%3A//saio/s3api-test-test-address-style-982758b84ed74d53a3a059b6845ea7c0 (txn: tx360eaf3f4a6745acb44ba-006318f9dd)\n\n\nI setup a /vagrant/.scratch/nv_s3api_aws_test.conf using temporary session creds:\n\n\t[default]\n\taws_access_key_id \u003d xxx\n\taws_secret_access_key \u003d xxx\n\taws_session_token \u003d xxx\n\nand ran tests against AWS by pointing them directly at the config:\n\n    SWIFT_TEST_AWS_CONFIG_FILE\u003d/vagrant/.scratch/nv_s3api_aws_test.conf pytest swift/test/s3api/test_request_address_style.py\n    \n... and they PASSED against AWS.  So maybe we need a bug to try and support this.","commit_id":"8528fe4b837e435ef7f27e15513b929522c8dd5f"}],"test/s3api/test_request_address_style.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f6e8fd095ed210c80d7a60456a301df8bceaa4cd","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    def proxy_url_for(self, request_url):"},{"line_number":28,"context_line":"        parsed \u003d parse.urlparse(request_url)"},{"line_number":29,"context_line":"        if parsed.scheme !\u003d \u0027https\u0027:"},{"line_number":30,"context_line":"            raise SkipTest(\u0027Absolute URL test requires https\u0027)"},{"line_number":31,"context_line":"        return request_url"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def proxy_headers_for(self, proxy_url):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f5141a00_29dc28dc","line":30,"updated":"2022-09-07 20:34:09.000000000","message":"Seems like a funny way to do it -- but I suppose this should only ever be used in a test context, right?\n\nStill, I would\u0027ve expected us to do some sanity-check in setUp() like\n\n if not endpoint_url.startswith(\u0027https:\u0027):\n     raise SkipTest(...)\n\nso we could avoid even creating the bucket.\n\nNow to dust off https://review.opendev.org/c/openstack/swift/+/732431 so we can have this run and not skip in the gate...","commit_id":"8528fe4b837e435ef7f27e15513b929522c8dd5f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5121b3908e393fa19ea511f56263473a1f620403","unresolved":true,"context_lines":[{"line_number":27,"context_line":"    def proxy_url_for(self, request_url):"},{"line_number":28,"context_line":"        parsed \u003d parse.urlparse(request_url)"},{"line_number":29,"context_line":"        if parsed.scheme !\u003d \u0027https\u0027:"},{"line_number":30,"context_line":"            raise SkipTest(\u0027Absolute URL test requires https\u0027)"},{"line_number":31,"context_line":"        return request_url"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def proxy_headers_for(self, proxy_url):"}],"source_content_type":"text/x-python","patch_set":1,"id":"84f6af11_609e26fb","line":30,"in_reply_to":"f5141a00_29dc28dc","updated":"2022-09-07 21:02:39.000000000","message":"Ick, yeah, we should LBYL; boto\u0027s gonna wrap the exception, so the gate fails like\n\n   File \".../botocore/retryhandler.py\", line 416, in _check_caught_exception\n     raise caught_exception\n   File \".../botocore/endpoint.py\", line 278, in _do_get_response\n     http_response \u003d self._send(request)\n   File \".../botocore/endpoint.py\", line 374, in _send\n     return self.http_session.send(request)\n   File \".../botocore/httpsession.py\", line 488, in send\n     raise HTTPClientError(error\u003de)\n botocore.exceptions.HTTPClientError: An HTTP Client raised an unhandled exception: Absolute URL test requires https","commit_id":"8528fe4b837e435ef7f27e15513b929522c8dd5f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f6e8fd095ed210c80d7a60456a301df8bceaa4cd","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        return {}"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class TestRequestAddressStyle(BaseS3TestCase):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def setUp(self):"},{"line_number":40,"context_line":"        self.client \u003d self.get_s3_client(1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"0524cd41_7ebde0f7","line":37,"updated":"2022-09-07 20:34:09.000000000","message":"When I hear \"request address style\", I think path-style vs virtual-host-style, like in https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html\n\nMaybe we borrow from the RFC and call it TestRequestTargetStyle?","commit_id":"8528fe4b837e435ef7f27e15513b929522c8dd5f"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"151b63044e2a0e57cbca8038bcd050b4e7cf3546","unresolved":true,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def test_absolute_url(self):"},{"line_number":50,"context_line":"        sess \u003d self.client._endpoint.http_session"},{"line_number":51,"context_line":"        sess._proxy_config \u003d AlwaysAbsoluteURLProxyConfig()"},{"line_number":52,"context_line":"        self.assertEqual({\u0027use_forwarding_for_https\u0027: True},"},{"line_number":53,"context_line":"                         sess._proxies_kwargs())"},{"line_number":54,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"d2815bb8_a1082abe","line":51,"updated":"2022-09-07 20:16:28.000000000","message":"there might be a more sane way to do this?  like maybe ...\n\n    os.environ[\u0027HTTPS_PROXY\u0027] \u003d\u003d \u0027https://saio\u0027","commit_id":"8528fe4b837e435ef7f27e15513b929522c8dd5f"}]}
