)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c7dae989ac6562a8b0827624be64499ed321385a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ad0c1e38_30f19c88","updated":"2023-07-05 07:46:18.000000000","message":"recheck openstack.tests.functional.compute.v2.test_volume_attachment.TestServerVolumeAttachment failed unrelated to this patch","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e6b89b57_496ede96","updated":"2023-07-19 11:44:01.000000000","message":"Thanks Stephen!","commit_id":"1624154d499ecbeedf0fb7b7435ed30ac18d2078"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2d2c40dd7bfb72129e6db5fa010ca965f6c1c816","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b61aad1c_72d7bc4e","updated":"2023-10-31 09:39:35.000000000","message":"One small docs nit. Otherwise +2. Feel free to +W once that\u0027s addressed","commit_id":"d5eab39b1e2bf43f10fe7983b884e72db5659e69"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b038df452aa3288c07dc92722d6d13d68df6833d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f6ac0f52_1157e81c","updated":"2023-10-31 09:47:56.000000000","message":"Fixed my own nit","commit_id":"0b71363dd6822a7cc72aca78588a208fefc7270a"}],"doc/source/user/proxies/block_storage_v3.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2d2c40dd7bfb72129e6db5fa010ca965f6c1c816","unresolved":true,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":".. autoclass:: openstack.block_storage.v3._proxy.Proxy"},{"line_number":164,"context_line":"  :noindex:"},{"line_number":165,"context_line":"  :members:"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3200093c_eea60b9e","line":165,"updated":"2023-10-31 09:39:35.000000000","message":"You need to state what members you wish to include here or it\u0027ll include them all. That\u0027s okay for the next file but not this one since we\u0027re dividing it up into different sections here.\n\nAlso, nit: extra newline","commit_id":"d5eab39b1e2bf43f10fe7983b884e72db5659e69"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b35505aeb610eeddf86aff3ba35688b8e4b2bf0b","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":".. autoclass:: openstack.block_storage.v3._proxy.Proxy"},{"line_number":164,"context_line":"  :noindex:"},{"line_number":165,"context_line":"  :members:"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba32fc82_d59ee4f2","line":165,"in_reply_to":"3200093c_eea60b9e","updated":"2023-10-31 09:47:48.000000000","message":"Done","commit_id":"d5eab39b1e2bf43f10fe7983b884e72db5659e69"}],"doc/source/user/resources/block_storage/v3/transfer.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb5f8ea62cc314faef85ca1c73b11f14d8dd6411","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":".. autoclass:: openstack.block_storage.v3.transfer.Transfer"},{"line_number":12,"context_line":"   :members:"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"d390b2de_ecf32f58","line":13,"updated":"2023-08-28 10:34:04.000000000","message":"nit: extra newline","commit_id":"1624154d499ecbeedf0fb7b7435ed30ac18d2078"}],"openstack/block_storage/v3/_proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":1633,"context_line":"            _transfer.Transfer, transfer, ignore_missing\u003dignore_missing"},{"line_number":1634,"context_line":"        )"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"    def find_transfer(self, name_or_id, ignore_missing\u003dTrue):"},{"line_number":1637,"context_line":"        \"\"\"Find a single transfer"},{"line_number":1638,"context_line":""},{"line_number":1639,"context_line":"        :param name_or_id: The name or ID a transfer"}],"source_content_type":"text/x-python","patch_set":5,"id":"ed25961a_bb7a1ee7","line":1636,"updated":"2023-07-17 10:39:29.000000000","message":"I find it strange you implemented this but not `get_transfer`?","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":1633,"context_line":"            _transfer.Transfer, transfer, ignore_missing\u003dignore_missing"},{"line_number":1634,"context_line":"        )"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"    def find_transfer(self, name_or_id, ignore_missing\u003dTrue):"},{"line_number":1637,"context_line":"        \"\"\"Find a single transfer"},{"line_number":1638,"context_line":""},{"line_number":1639,"context_line":"        :param name_or_id: The name or ID a transfer"}],"source_content_type":"text/x-python","patch_set":5,"id":"452ea2d7_fe49b09f","line":1636,"in_reply_to":"ed25961a_bb7a1ee7","updated":"2023-07-19 11:44:01.000000000","message":"I implemented that in a follow up patch since the size of this patch was already big\n\nhttps://review.opendev.org/c/openstack/openstacksdk/+/887635/2","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"}],"openstack/block_storage/v3/transfer.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":18,"context_line":"class Transfer(resource.Resource):"},{"line_number":19,"context_line":"    resource_key \u003d \"transfer\""},{"line_number":20,"context_line":"    resources_key \u003d \"transfers\""},{"line_number":21,"context_line":"    base_path \u003d \"/volume-transfers\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # capabilities"},{"line_number":24,"context_line":"    allow_create \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"674eb7db_77670e8b","line":21,"updated":"2023-07-17 10:39:29.000000000","message":"Looking at the [api-ref](https://docs.openstack.org/api-ref/block-storage/v3/index.html#volume-transfer), it appears at some point you changed the base_path URL for this? If so, you probably need to override the methods for all supported capabilities, not just `create`. Fortunately, they all take a `base_path` argument which you can override, as indicated below.","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class Transfer(resource.Resource):"},{"line_number":19,"context_line":"    resource_key \u003d \"transfer\""},{"line_number":20,"context_line":"    resources_key \u003d \"transfers\""},{"line_number":21,"context_line":"    base_path \u003d \"/volume-transfers\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    # capabilities"},{"line_number":24,"context_line":"    allow_create \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"d2f110f5_459ee82e","line":21,"in_reply_to":"674eb7db_77670e8b","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        transfer \u003d Transfer()"},{"line_number":70,"context_line":"        transfer._translate_response(response\u003dresp)"},{"line_number":71,"context_line":"        return transfer"}],"source_content_type":"text/x-python","patch_set":5,"id":"4ae129fb_6dfd17e6","line":71,"updated":"2023-07-17 10:39:29.000000000","message":"You shouldn\u0027t need to redefine all of this. Just let `create` do the correct thing and override `base_path` if needed:\n\n```\ndef create(\n    self,\n    session,\n    prepend_key\u003dTrue,\n    base_path\u003dNone,\n    *,\n    resource_request_key\u003dNone,\n    resource_response_key\u003dNone,\n    microversion\u003dNone,\n    **params,\n):\n    if not utils.supports_microversion(session, \u00273.55\u0027):\n        base_path \u003d \u0027/os-volume-transfers\u0027\n        \n    return super().create(\n        session,\n        prepend_key\u003dprepend_key,\n        base_path\u003dbase_path,\n        resource_request_key\u003dresource_request_key,\n        resource_response_key\u003dresource_response_key,\n        microversion\u003dmicroversion,\n        **params,\n    )\n```\n\nYou can do the same for `fetch`. `delete` will need to be extended to allow overriding this but that should be easy enough.\n\nAs a general point, we don\u0027t try to be too opinionated about what we send or don\u0027t send in these methods. Being opinionated would require us to keep up to speed on the fields that are supported across multiple APIs and multiple API versions, and that\u0027s simply too much work. We defer to the user to know that e.g. `links` is read-only and setting it before calling `create` won\u0027t work.","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        transfer \u003d Transfer()"},{"line_number":70,"context_line":"        transfer._translate_response(response\u003dresp)"},{"line_number":71,"context_line":"        return transfer"}],"source_content_type":"text/x-python","patch_set":5,"id":"493e84f3_99c83aeb","line":71,"in_reply_to":"4ae129fb_6dfd17e6","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb5f8ea62cc314faef85ca1c73b11f14d8dd6411","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        resource_response_key\u003dNone,"},{"line_number":53,"context_line":"        microversion\u003dNone,"},{"line_number":54,"context_line":"        **params,"},{"line_number":55,"context_line":"    ):"},{"line_number":56,"context_line":"        if not utils.supports_microversion(session, \u00273.55\u0027):"},{"line_number":57,"context_line":"            base_path \u003d \u0027/os-volume-transfer\u0027"},{"line_number":58,"context_line":"            if \u0027no_snapshots\u0027 in params:"}],"source_content_type":"text/x-python","patch_set":6,"id":"736cd483_d1139d2c","line":55,"updated":"2023-08-28 10:34:04.000000000","message":"btw, if you add docstrings then these will appear automatically in the docs without needing to explicitly state them in `:members:`. You can simply copy-paste the docstrings from the definition in `Resource`.","commit_id":"1624154d499ecbeedf0fb7b7435ed30ac18d2078"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"560bcbc0f90ca5bc1333cefc7de29da1e242d0e8","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        resource_response_key\u003dNone,"},{"line_number":53,"context_line":"        microversion\u003dNone,"},{"line_number":54,"context_line":"        **params,"},{"line_number":55,"context_line":"    ):"},{"line_number":56,"context_line":"        if not utils.supports_microversion(session, \u00273.55\u0027):"},{"line_number":57,"context_line":"            base_path \u003d \u0027/os-volume-transfer\u0027"},{"line_number":58,"context_line":"            if \u0027no_snapshots\u0027 in params:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3e1390a5_fc590808","line":55,"in_reply_to":"736cd483_d1139d2c","updated":"2023-09-04 19:43:37.000000000","message":"Done but adding the members section had 1 LOC change whereas adding docstring for every method is comparatively more, not sure what the exact advantage to this is.","commit_id":"1624154d499ecbeedf0fb7b7435ed30ac18d2078"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb5f8ea62cc314faef85ca1c73b11f14d8dd6411","unresolved":true,"context_lines":[{"line_number":54,"context_line":"        **params,"},{"line_number":55,"context_line":"    ):"},{"line_number":56,"context_line":"        if not utils.supports_microversion(session, \u00273.55\u0027):"},{"line_number":57,"context_line":"            base_path \u003d \u0027/os-volume-transfer\u0027"},{"line_number":58,"context_line":"            if \u0027no_snapshots\u0027 in params:"},{"line_number":59,"context_line":"                params.pop(\u0027no_snapshots\u0027)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"788b7a5f_d20fe9ac","line":57,"updated":"2023-08-28 10:34:04.000000000","message":"Comments on both of these would be A+","commit_id":"1624154d499ecbeedf0fb7b7435ed30ac18d2078"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"560bcbc0f90ca5bc1333cefc7de29da1e242d0e8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        **params,"},{"line_number":55,"context_line":"    ):"},{"line_number":56,"context_line":"        if not utils.supports_microversion(session, \u00273.55\u0027):"},{"line_number":57,"context_line":"            base_path \u003d \u0027/os-volume-transfer\u0027"},{"line_number":58,"context_line":"            if \u0027no_snapshots\u0027 in params:"},{"line_number":59,"context_line":"                params.pop(\u0027no_snapshots\u0027)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bfdb12f2_6c2d1a13","line":57,"in_reply_to":"788b7a5f_d20fe9ac","updated":"2023-09-04 19:43:37.000000000","message":"Done","commit_id":"1624154d499ecbeedf0fb7b7435ed30ac18d2078"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb5f8ea62cc314faef85ca1c73b11f14d8dd6411","unresolved":true,"context_lines":[{"line_number":99,"context_line":"    ):"},{"line_number":100,"context_line":"        if not utils.supports_microversion(session, \u00273.55\u0027):"},{"line_number":101,"context_line":"            kwargs[\u0027base_path\u0027] \u003d \u0027/os-volume-transfer\u0027"},{"line_number":102,"context_line":"        response \u003d self._raw_delete("},{"line_number":103,"context_line":"            session, microversion\u003dmicroversion, **kwargs"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        kwargs \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"e3e7ce1c_c338a08e","line":102,"updated":"2023-08-28 10:34:04.000000000","message":"Any reason not to call `super().delete(...)` instead of duplicating the code?","commit_id":"1624154d499ecbeedf0fb7b7435ed30ac18d2078"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"560bcbc0f90ca5bc1333cefc7de29da1e242d0e8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    ):"},{"line_number":100,"context_line":"        if not utils.supports_microversion(session, \u00273.55\u0027):"},{"line_number":101,"context_line":"            kwargs[\u0027base_path\u0027] \u003d \u0027/os-volume-transfer\u0027"},{"line_number":102,"context_line":"        response \u003d self._raw_delete("},{"line_number":103,"context_line":"            session, microversion\u003dmicroversion, **kwargs"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        kwargs \u003d {}"}],"source_content_type":"text/x-python","patch_set":6,"id":"d32c74af_cc0be717","line":102,"in_reply_to":"e3e7ce1c_c338a08e","updated":"2023-09-04 19:43:37.000000000","message":"Done","commit_id":"1624154d499ecbeedf0fb7b7435ed30ac18d2078"}],"openstack/tests/functional/block_storage/v3/test_transfer.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class TestTransfer(base.BaseBlockStorageTest):"},{"line_number":18,"context_line":"    def setUp(self):"},{"line_number":19,"context_line":"        super(TestTransfer, self).setUp()"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"        self.VOLUME_NAME \u003d self.getUniqueString()"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a4e639b_1dc6027d","line":19,"range":{"start_line":19,"start_character":14,"end_line":19,"end_character":32},"updated":"2023-07-17 10:39:29.000000000","message":"nit: don\u0027t need this in Python 3","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class TestTransfer(base.BaseBlockStorageTest):"},{"line_number":18,"context_line":"    def setUp(self):"},{"line_number":19,"context_line":"        super(TestTransfer, self).setUp()"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"        self.VOLUME_NAME \u003d self.getUniqueString()"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"19a982e3_f66526c7","line":19,"range":{"start_line":19,"start_character":14,"end_line":19,"end_character":32},"in_reply_to":"5a4e639b_1dc6027d","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            self.VOLUME_ID, ignore_missing\u003dFalse"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"        self.assertIsNone(sot)"},{"line_number":41,"context_line":"        super(TestTransfer, self).tearDown()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"74b24ca9_2d45cfea","line":41,"range":{"start_line":41,"start_character":14,"end_line":41,"end_character":32},"updated":"2023-07-17 10:39:29.000000000","message":"nit: don\u0027t need this in Python 3","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            self.VOLUME_ID, ignore_missing\u003dFalse"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"        self.assertIsNone(sot)"},{"line_number":41,"context_line":"        super(TestTransfer, self).tearDown()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"063e01dc_ad1efffc","line":41,"range":{"start_line":41,"start_character":14,"end_line":41,"end_character":32},"in_reply_to":"74b24ca9_2d45cfea","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.assertIsNone(sot)"},{"line_number":41,"context_line":"        super(TestTransfer, self).tearDown()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("}],"source_content_type":"text/x-python","patch_set":5,"id":"a9079249_848326e9","line":43,"range":{"start_line":43,"start_character":8,"end_line":43,"end_character":19},"updated":"2023-07-17 10:39:29.000000000","message":"Can we call this `test_transfer` since you\u0027re testing more than the `create` method here?","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.assertIsNone(sot)"},{"line_number":41,"context_line":"        super(TestTransfer, self).tearDown()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("}],"source_content_type":"text/x-python","patch_set":5,"id":"671fa07d_49fca8c5","line":43,"range":{"start_line":43,"start_character":8,"end_line":43,"end_character":19},"in_reply_to":"a9079249_848326e9","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":41,"context_line":"        super(TestTransfer, self).tearDown()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":47,"context_line":"            self.VOLUME_ID,"}],"source_content_type":"text/x-python","patch_set":5,"id":"403a57b4_e64737a3","line":44,"updated":"2023-07-17 10:39:29.000000000","message":"What\u0027s this doing?","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        super(TestTransfer, self).tearDown()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":47,"context_line":"            self.VOLUME_ID,"}],"source_content_type":"text/x-python","patch_set":5,"id":"2f5c23a1_c8759786","line":44,"in_reply_to":"403a57b4_e64737a3","updated":"2023-07-19 11:44:01.000000000","message":"looks like a leftover from testing, removed it","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":47,"context_line":"            self.VOLUME_ID,"},{"line_number":48,"context_line":"            self.VOLUME_NAME,"},{"line_number":49,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"d617f7ff_9dd35b43","line":46,"updated":"2023-07-17 10:39:29.000000000","message":"Do we need a minimum API microversion check before this?","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb5f8ea62cc314faef85ca1c73b11f14d8dd6411","unresolved":true,"context_lines":[{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":47,"context_line":"            self.VOLUME_ID,"},{"line_number":48,"context_line":"            self.VOLUME_NAME,"},{"line_number":49,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"5d061f57_b706f1a2","line":46,"in_reply_to":"2a3e7865_db7b6e95","updated":"2023-08-28 10:34:04.000000000","message":"You can use the same APIs we use in our main code. Something like the following will do the trick.\n\n```\nfrom openstack import utils\n\n...\n\nif not utils.supports_microversion(self.conn.block_storage, \"3.28\"):\n    self.skipTest(\"...\")\n```","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"560bcbc0f90ca5bc1333cefc7de29da1e242d0e8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":47,"context_line":"            self.VOLUME_ID,"},{"line_number":48,"context_line":"            self.VOLUME_NAME,"},{"line_number":49,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"d81237f2_2167fb23","line":46,"in_reply_to":"5d061f57_b706f1a2","updated":"2023-09-04 19:43:37.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":true,"context_lines":[{"line_number":43,"context_line":"    def test_create(self):"},{"line_number":44,"context_line":"        proxy._json_response(self.conn.block_storage.get(\u0027/volume-transfers\u0027))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":47,"context_line":"            self.VOLUME_ID,"},{"line_number":48,"context_line":"            self.VOLUME_NAME,"},{"line_number":49,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"2a3e7865_db7b6e95","line":46,"in_reply_to":"d617f7ff_9dd35b43","updated":"2023-07-19 11:44:01.000000000","message":"I couldn\u0027t find an example of this, can you help out on this one?","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":57,"context_line":"            sot.id, ignore_missing\u003dFalse"},{"line_number":58,"context_line":"        )"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_create_old_api(self):"},{"line_number":61,"context_line":"        proxy._json_response("},{"line_number":62,"context_line":"            self.conn.block_storage.get(\u0027/os-volume-transfer\u0027)"},{"line_number":63,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"f96aa9cd_398407de","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":27},"updated":"2023-07-17 10:39:29.000000000","message":"As above, can we call this e.g. `test_transfer_pre_v355` since you\u0027re testing more than the `create` method here?","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            sot.id, ignore_missing\u003dFalse"},{"line_number":58,"context_line":"        )"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def test_create_old_api(self):"},{"line_number":61,"context_line":"        proxy._json_response("},{"line_number":62,"context_line":"            self.conn.block_storage.get(\u0027/os-volume-transfer\u0027)"},{"line_number":63,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"167baca1_8ddc7a2b","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":27},"in_reply_to":"f96aa9cd_398407de","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    def test_create_old_api(self):"},{"line_number":61,"context_line":"        proxy._json_response("},{"line_number":62,"context_line":"            self.conn.block_storage.get(\u0027/os-volume-transfer\u0027)"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":66,"context_line":"            self.VOLUME_ID,"}],"source_content_type":"text/x-python","patch_set":5,"id":"a9fb55bc_48d118d3","line":63,"updated":"2023-07-17 10:39:29.000000000","message":"Ditto, what\u0027s this doing?","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_create_old_api(self):"},{"line_number":61,"context_line":"        proxy._json_response("},{"line_number":62,"context_line":"            self.conn.block_storage.get(\u0027/os-volume-transfer\u0027)"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":66,"context_line":"            self.VOLUME_ID,"}],"source_content_type":"text/x-python","patch_set":5,"id":"acba9a50_3aee718f","line":63,"in_reply_to":"a9fb55bc_48d118d3","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            self.conn.block_storage.get(\u0027/os-volume-transfer\u0027)"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":66,"context_line":"            self.VOLUME_ID,"},{"line_number":67,"context_line":"            self.VOLUME_NAME,"},{"line_number":68,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"cbda5903_02c40ed5","line":65,"updated":"2023-07-17 10:39:29.000000000","message":"Shouldn\u0027t you be setting a microversion here before calling this?","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb5f8ea62cc314faef85ca1c73b11f14d8dd6411","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            self.conn.block_storage.get(\u0027/os-volume-transfer\u0027)"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":66,"context_line":"            self.VOLUME_ID,"},{"line_number":67,"context_line":"            self.VOLUME_NAME,"},{"line_number":68,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"bb5121c7_9aaefe4b","line":65,"in_reply_to":"20835a0b_561a0428","updated":"2023-08-28 10:34:04.000000000","message":"actually, tbh, neither do I now that I think about it 😅 We probably need to figure out how to do this programatically *or* drop this test.","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"560bcbc0f90ca5bc1333cefc7de29da1e242d0e8","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            self.conn.block_storage.get(\u0027/os-volume-transfer\u0027)"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":66,"context_line":"            self.VOLUME_ID,"},{"line_number":67,"context_line":"            self.VOLUME_NAME,"},{"line_number":68,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"fdd1cd3f_5132c2f4","line":65,"in_reply_to":"bb5121c7_9aaefe4b","updated":"2023-09-04 19:43:37.000000000","message":"Ack, Dropped the test as of now as it was similar to the test_transfer one","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            self.conn.block_storage.get(\u0027/os-volume-transfer\u0027)"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        sot \u003d self.conn.block_storage.create_transfer("},{"line_number":66,"context_line":"            self.VOLUME_ID,"},{"line_number":67,"context_line":"            self.VOLUME_NAME,"},{"line_number":68,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":5,"id":"20835a0b_561a0428","line":65,"in_reply_to":"cbda5903_02c40ed5","updated":"2023-07-19 11:44:01.000000000","message":"Same as above, not sure how to do it exactly","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"}],"openstack/tests/unit/block_storage/v3/test_transfer.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        return_value\u003dFalse,"},{"line_number":86,"context_line":"    )"},{"line_number":87,"context_line":"    @mock.patch.object(resource.Resource, \u0027_translate_response\u0027)"},{"line_number":88,"context_line":"    def test_create_old_api(self, mock_mv, mock_translate):"},{"line_number":89,"context_line":"        self.sess.default_microversion \u003d \"3.0\""},{"line_number":90,"context_line":"        sot \u003d transfer.Transfer()"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"17f0faa6_efdab536","line":88,"range":{"start_line":88,"start_character":20,"end_line":88,"end_character":27},"updated":"2023-07-17 10:39:29.000000000","message":"nit: `pre_v355` is the usual pattern for this","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        return_value\u003dFalse,"},{"line_number":86,"context_line":"    )"},{"line_number":87,"context_line":"    @mock.patch.object(resource.Resource, \u0027_translate_response\u0027)"},{"line_number":88,"context_line":"    def test_create_old_api(self, mock_mv, mock_translate):"},{"line_number":89,"context_line":"        self.sess.default_microversion \u003d \"3.0\""},{"line_number":90,"context_line":"        sot \u003d transfer.Transfer()"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"e75bb9e9_dcd24654","line":88,"range":{"start_line":88,"start_character":20,"end_line":88,"end_character":27},"in_reply_to":"17f0faa6_efdab536","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1f205ed89c704d094093333c917d8bba70dec2fb","unresolved":true,"context_lines":[{"line_number":97,"context_line":"            },"},{"line_number":98,"context_line":"            microversion\u003d\"3.0\","},{"line_number":99,"context_line":"        )"},{"line_number":100,"context_line":"        self.sess.default_microversion \u003d \"3.55\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ad5dbfd7_bc066bc6","line":100,"updated":"2023-07-17 10:39:29.000000000","message":"You shouldn\u0027t need to do this. `self.sess` is recreated for each test case since we\u0027re creating it in `setUp` and not `setUpClass`.","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b39950c53e37d864c8d6c078a2947c9c6b6118dc","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            },"},{"line_number":98,"context_line":"            microversion\u003d\"3.0\","},{"line_number":99,"context_line":"        )"},{"line_number":100,"context_line":"        self.sess.default_microversion \u003d \"3.55\""}],"source_content_type":"text/x-python","patch_set":5,"id":"d59f8d67_3c64f543","line":100,"in_reply_to":"ad5dbfd7_bc066bc6","updated":"2023-07-19 11:44:01.000000000","message":"Done","commit_id":"18408275843c523b03278a8f0bd360ce98b5d112"}]}
