)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"54b492cc788d0aedf1dd6f95efcd278fc0f4f36a","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Rajat Dhasmana \u003crajatdhasmana@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-05-15 04:07:13 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add volume snapshot unamange support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds support for unmanaging a snapshot with"},{"line_number":10,"context_line":"``openstack volume snapshot delete --remote`` command."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"98aef881_b936562d","line":7,"range":{"start_line":7,"start_character":20,"end_line":7,"end_character":28},"updated":"2024-06-24 17:03:30.000000000","message":"unmanage","commit_id":"052d8e50116755842ab1fb0828df03c3d928dda7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e383c6c1e0a3f9aac9174b381d89c3ce36d93294","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rajat Dhasmana \u003crajatdhasmana@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-05-15 04:07:13 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add volume snapshot unamange support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds support for unmanaging a snapshot with"},{"line_number":10,"context_line":"``openstack volume snapshot delete --remote`` command."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"54a7af08_24b9fa15","line":7,"range":{"start_line":7,"start_character":20,"end_line":7,"end_character":28},"in_reply_to":"98aef881_b936562d","updated":"2024-06-24 20:22:37.000000000","message":"Done","commit_id":"052d8e50116755842ab1fb0828df03c3d928dda7"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"14565ae7b5088cb33493b0398b9e526ca1f23276","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"93abe4ad_4033dc9d","updated":"2023-11-22 10:57:33.000000000","message":"Thanks Stephen","commit_id":"c55aa195db315a823fd727fb20c2d6076fdd0f95"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"95c28ddc640a9cead04d86f7d626fbdde4a4aa49","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"481e8afa_6292c63c","updated":"2024-06-25 10:12:30.000000000","message":"Small nit inline but this looks good now. Feel free to carry my +2 if you respin for that.","commit_id":"4e94c415ed57c0d6366a7e49259e79fd6505ed6a"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"9cfc9ce4c85ae9489abe7884a5633f3d16e6d4d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"067d076a_0f9c917d","updated":"2024-06-25 14:18:44.000000000","message":"Sorry if this sounds naive, but is there an opposite operation to --remote? Can I re-manage that snapshot, or should it always be re-created?","commit_id":"4e94c415ed57c0d6366a7e49259e79fd6505ed6a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e383c6c1e0a3f9aac9174b381d89c3ce36d93294","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c0a06a46_6499935e","updated":"2024-06-24 20:22:37.000000000","message":"Thanks Stephen","commit_id":"4e94c415ed57c0d6366a7e49259e79fd6505ed6a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6d6cbf3b438efffe1a97f9afd77ffcbfebdc0543","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3589e7d5_febbf1c8","in_reply_to":"067d076a_0f9c917d","updated":"2024-06-25 19:22:57.000000000","message":"There is a way to manage the unmanaged snapshot again with the following command:\n\nopenstack volume snapshot create --remote-source \u003ckey\u003dval\u003e\n\nSee the example in help text which might explain this better.\n\nhttps://github.com/openstack/python-openstackclient/blob/master/openstackclient/volume/v2/volume_snapshot.py#L104-L113","commit_id":"4e94c415ed57c0d6366a7e49259e79fd6505ed6a"}],"openstackclient/tests/unit/volume/v2/fakes.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23cbb2461eeaa3cc62e248a5ca1a39caa29f6a79","unresolved":true,"context_lines":[{"line_number":862,"context_line":""},{"line_number":863,"context_line":"# TODO(whoami-rajat): Replace this with create_one_snapshot"},{"line_number":864,"context_line":"# method (above) when all snapshot commands move to SDK"},{"line_number":865,"context_line":"def create_one_snapshot_obj(attrs\u003dNone):"},{"line_number":866,"context_line":"    \"\"\"Create a fake snapshot."},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"    :param dict attrs:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1122493e_28309de5","line":865,"updated":"2023-11-13 15:14:18.000000000","message":"You shouldn\u0027t need this now: just use `generate_fake_resource` from `openstack.test.fakes` instead.","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"14565ae7b5088cb33493b0398b9e526ca1f23276","unresolved":false,"context_lines":[{"line_number":862,"context_line":""},{"line_number":863,"context_line":"# TODO(whoami-rajat): Replace this with create_one_snapshot"},{"line_number":864,"context_line":"# method (above) when all snapshot commands move to SDK"},{"line_number":865,"context_line":"def create_one_snapshot_obj(attrs\u003dNone):"},{"line_number":866,"context_line":"    \"\"\"Create a fake snapshot."},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"    :param dict attrs:"}],"source_content_type":"text/x-python","patch_set":2,"id":"87d7b1b1_389666cc","line":865,"in_reply_to":"1122493e_28309de5","updated":"2023-11-22 10:57:33.000000000","message":"Done","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"}],"openstackclient/tests/unit/volume/v2/test_volume_snapshot.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23cbb2461eeaa3cc62e248a5ca1a39caa29f6a79","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.app.client_manager.sdk_connection \u003d mock.Mock()"},{"line_number":40,"context_line":"        self.app.client_manager.sdk_connection.volume \u003d mock.Mock()"},{"line_number":41,"context_line":"        self.sdk_client \u003d self.app.client_manager.sdk_connection.volume"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class TestVolumeSnapshotCreate(TestVolumeSnapshot):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5adae48c_eec15979","line":41,"updated":"2023-11-13 15:14:18.000000000","message":"You no longer need this. You can use `self.volume_sdk_client` instead.","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"14565ae7b5088cb33493b0398b9e526ca1f23276","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        self.app.client_manager.sdk_connection \u003d mock.Mock()"},{"line_number":40,"context_line":"        self.app.client_manager.sdk_connection.volume \u003d mock.Mock()"},{"line_number":41,"context_line":"        self.sdk_client \u003d self.app.client_manager.sdk_connection.volume"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class TestVolumeSnapshotCreate(TestVolumeSnapshot):"}],"source_content_type":"text/x-python","patch_set":2,"id":"766e7b0d_36b0782b","line":41,"in_reply_to":"5adae48c_eec15979","updated":"2023-11-22 10:57:33.000000000","message":"Done","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23cbb2461eeaa3cc62e248a5ca1a39caa29f6a79","unresolved":true,"context_lines":[{"line_number":748,"context_line":"        self.assertIsNone(result)"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"class TestVolumeSnapshotUnmanage(TestVolumeSnapshot):"},{"line_number":752,"context_line":"    snapshot \u003d volume_fakes.create_one_snapshot_obj()"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d31e6d76_3232ec5c","line":751,"updated":"2023-11-13 15:14:18.000000000","message":"This is a v3-only thing, right? Could we put this in a new `v3/test_volume_snapshot.py` file instead?","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"14565ae7b5088cb33493b0398b9e526ca1f23276","unresolved":false,"context_lines":[{"line_number":748,"context_line":"        self.assertIsNone(result)"},{"line_number":749,"context_line":""},{"line_number":750,"context_line":""},{"line_number":751,"context_line":"class TestVolumeSnapshotUnmanage(TestVolumeSnapshot):"},{"line_number":752,"context_line":"    snapshot \u003d volume_fakes.create_one_snapshot_obj()"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"cbee7c70_14c33eba","line":751,"in_reply_to":"d31e6d76_3232ec5c","updated":"2023-11-22 10:57:33.000000000","message":"Done","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23cbb2461eeaa3cc62e248a5ca1a39caa29f6a79","unresolved":true,"context_lines":[{"line_number":754,"context_line":"    def setUp(self):"},{"line_number":755,"context_line":"        super().setUp()"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        self.sdk_client.find_snapshot.return_value \u003d self.snapshot"},{"line_number":758,"context_line":"        self.sdk_client.unmanage_snapshot.return_value \u003d None"},{"line_number":759,"context_line":"        # Get the command object to mock"},{"line_number":760,"context_line":"        self.cmd \u003d volume_snapshot.UnmanageSnapshot(self.app, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ae5a3530_14419cfb","line":757,"range":{"start_line":757,"start_character":13,"end_line":757,"end_character":23},"updated":"2023-11-13 15:14:18.000000000","message":"`s/sdk_client/volume_sdk_client/`","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"14565ae7b5088cb33493b0398b9e526ca1f23276","unresolved":false,"context_lines":[{"line_number":754,"context_line":"    def setUp(self):"},{"line_number":755,"context_line":"        super().setUp()"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        self.sdk_client.find_snapshot.return_value \u003d self.snapshot"},{"line_number":758,"context_line":"        self.sdk_client.unmanage_snapshot.return_value \u003d None"},{"line_number":759,"context_line":"        # Get the command object to mock"},{"line_number":760,"context_line":"        self.cmd \u003d volume_snapshot.UnmanageSnapshot(self.app, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"88b59b2c_8e76054b","line":757,"range":{"start_line":757,"start_character":13,"end_line":757,"end_character":23},"in_reply_to":"ae5a3530_14419cfb","updated":"2023-11-22 10:57:33.000000000","message":"Done","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"}],"openstackclient/volume/v2/volume_snapshot.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23cbb2461eeaa3cc62e248a5ca1a39caa29f6a79","unresolved":true,"context_lines":[{"line_number":529,"context_line":"            )"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"class UnmanageSnapshot(command.Command):"},{"line_number":533,"context_line":"    _description \u003d _(\"Unmanage volume snapshot\")"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d32c7044_7bb6cd4f","line":532,"updated":"2023-11-13 15:14:18.000000000","message":"This is a v3-only thing, right? Could we put this in a new `v3/volume_snapshot.py` file instead?","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"14565ae7b5088cb33493b0398b9e526ca1f23276","unresolved":false,"context_lines":[{"line_number":529,"context_line":"            )"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"class UnmanageSnapshot(command.Command):"},{"line_number":533,"context_line":"    _description \u003d _(\"Unmanage volume snapshot\")"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7d83f5ba_98610a7d","line":532,"in_reply_to":"d32c7044_7bb6cd4f","updated":"2023-11-22 10:57:33.000000000","message":"Done","commit_id":"327e77e547470c16393fc999e9174c0a72af3b00"}],"openstackclient/volume/v3/volume_snapshot.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"54b492cc788d0aedf1dd6f95efcd278fc0f4f36a","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--remote\u0027,"},{"line_number":49,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":50,"context_line":"            help\u003d_(\"Specify this parameter to unmanage a snapshot.\"),"},{"line_number":51,"context_line":"        )"},{"line_number":52,"context_line":"        return parser"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fb3add94_846e6b42","line":50,"updated":"2024-06-24 17:03:30.000000000","message":"nit: This is a bit verbose. How about:\n\n```\nhelp\u003d_(\n    \u0027Unmanage the snapshot, removing it from the Block Storage service \u0027\n    \u0027but not from the backend.\u0027\n),\n```\n\n?","commit_id":"052d8e50116755842ab1fb0828df03c3d928dda7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e383c6c1e0a3f9aac9174b381d89c3ce36d93294","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        parser.add_argument("},{"line_number":48,"context_line":"            \u0027--remote\u0027,"},{"line_number":49,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":50,"context_line":"            help\u003d_(\"Specify this parameter to unmanage a snapshot.\"),"},{"line_number":51,"context_line":"        )"},{"line_number":52,"context_line":"        return parser"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad1c218_75c51103","line":50,"in_reply_to":"fb3add94_846e6b42","updated":"2024-06-24 20:22:37.000000000","message":"Done","commit_id":"052d8e50116755842ab1fb0828df03c3d928dda7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"54b492cc788d0aedf1dd6f95efcd278fc0f4f36a","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def take_action(self, parsed_args):"},{"line_number":55,"context_line":"        volume_client \u003d self.app.client_manager.volume"},{"line_number":56,"context_line":"        volume_client_sdk \u003d self.app.client_manager.sdk_connection.volume"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        result \u003d 0"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"a55b4d3e_4d1c9bfc","line":56,"updated":"2024-06-24 17:03:30.000000000","message":"It\u0027d be great to only use one client here. Could we migrate to SDK first (and separately)?","commit_id":"052d8e50116755842ab1fb0828df03c3d928dda7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e383c6c1e0a3f9aac9174b381d89c3ce36d93294","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def take_action(self, parsed_args):"},{"line_number":55,"context_line":"        volume_client \u003d self.app.client_manager.volume"},{"line_number":56,"context_line":"        volume_client_sdk \u003d self.app.client_manager.sdk_connection.volume"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        result \u003d 0"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"f9c1fbd4_60a8a797","line":56,"in_reply_to":"a55b4d3e_4d1c9bfc","updated":"2024-06-24 20:22:37.000000000","message":"will do it in https://review.opendev.org/c/openstack/python-openstackclient/+/894824","commit_id":"052d8e50116755842ab1fb0828df03c3d928dda7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"54b492cc788d0aedf1dd6f95efcd278fc0f4f36a","unresolved":true,"context_lines":[{"line_number":65,"context_line":"                            \"The --force option is not supported with the \""},{"line_number":66,"context_line":"                            \"--remote parameter.\""},{"line_number":67,"context_line":"                        )"},{"line_number":68,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":69,"context_line":"                    volume_client_sdk.unmanage_snapshot(i)"},{"line_number":70,"context_line":"                    continue"},{"line_number":71,"context_line":"                snapshot_id \u003d utils.find_resource("}],"source_content_type":"text/x-python","patch_set":8,"id":"6cf7225e_1efa54a0","line":68,"updated":"2024-06-24 17:03:30.000000000","message":"Can we do this outside of the for loop to avoid repeated evaluation?","commit_id":"052d8e50116755842ab1fb0828df03c3d928dda7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e383c6c1e0a3f9aac9174b381d89c3ce36d93294","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                            \"The --force option is not supported with the \""},{"line_number":66,"context_line":"                            \"--remote parameter.\""},{"line_number":67,"context_line":"                        )"},{"line_number":68,"context_line":"                        raise exceptions.CommandError(msg)"},{"line_number":69,"context_line":"                    volume_client_sdk.unmanage_snapshot(i)"},{"line_number":70,"context_line":"                    continue"},{"line_number":71,"context_line":"                snapshot_id \u003d utils.find_resource("}],"source_content_type":"text/x-python","patch_set":8,"id":"5ee2eb70_3541d0f6","line":68,"in_reply_to":"6cf7225e_1efa54a0","updated":"2024-06-24 20:22:37.000000000","message":"Done","commit_id":"052d8e50116755842ab1fb0828df03c3d928dda7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"95c28ddc640a9cead04d86f7d626fbdde4a4aa49","unresolved":true,"context_lines":[{"line_number":61,"context_line":"        result \u003d 0"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        if parsed_args.remote:"},{"line_number":64,"context_line":"            if parsed_args.force:"},{"line_number":65,"context_line":"                msg \u003d _("},{"line_number":66,"context_line":"                    \"The --force option is not supported with the \""},{"line_number":67,"context_line":"                    \"--remote parameter.\""}],"source_content_type":"text/x-python","patch_set":9,"id":"540548bf_2bfdd797","line":64,"updated":"2024-06-25 10:12:30.000000000","message":"nit:\n\n```\nif parsed_args.remote and parsed_args.force:\n```","commit_id":"4e94c415ed57c0d6366a7e49259e79fd6505ed6a"}]}
