)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"578641f781a1050193baa317ff8c11fa061a1330","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5a805984_06e1a210","updated":"2024-05-07 09:56:46.000000000","message":"This is identical, I checked:\n\n```\n❯ diff -u /tmp/create-vol-v2.py /tmp/create-vol-v3.py \n--- /tmp/create-vol-v2.py       2024-05-07 10:54:44.131702655 +0100\n+++ /tmp/create-vol-v3.py       2024-05-07 10:54:24.485678688 +0100\n@@ -79,7 +79,7 @@\n         parser.add_argument(\n             \"--hint\",\n             metavar\u003d\"\u003ckey\u003dvalue\u003e\",\n-            action\u003dKeyValueHintAction,\n+            action\u003dvolume_v2.KeyValueHintAction,\n             help\u003d_(\n                 \"Arbitrary scheduler hint key-value pairs to help creating \"\n                 \"a volume. Repeat the option to set multiple hints. \"\n```","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"84938701542059a2dea436e43fafbd186e93774f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"fa5510d8_851811df","updated":"2024-05-16 14:55:27.000000000","message":"Thanks for accommodating all my requests","commit_id":"0d9ace64250f8ba9d07102f602c47f118d38ef51"}],"openstackclient/volume/v2/volume.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"37c4ec7b1d7c076f1cd7efa56ced101386825191","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            action\u003d\"store_true\","},{"line_number":217,"context_line":"            help\u003d_(\"Set volume to read-write access mode (default)\"),"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        return parser, source_group"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def get_parser(self, prog_name):"},{"line_number":222,"context_line":"        parser, _ \u003d self._get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"a4d833bf_7ac1bec5","line":219,"updated":"2024-05-20 09:29:59.000000000","message":"I was hoping for a mechanism to retrieve groups from an `ArgumentParser` object (so that we could avoid the inner function and just use the return of `super()`) but it seems all we have is the private attribute `_action_groups`. Oh well.","commit_id":"0d9ace64250f8ba9d07102f602c47f118d38ef51"}],"openstackclient/volume/v3/volume.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac74157a9ad7d4b6926babbf8d3293b3df60800b","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        volume_client.revert_volume_to_snapshot(volume, snapshot)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def _check_size_arg(args):"},{"line_number":121,"context_line":"    \"\"\"Check whether --size option is required or not."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    Require size parameter only in case when snapshot or source"}],"source_content_type":"text/x-python","patch_set":1,"id":"1d1fb124_847b4b1b","line":120,"updated":"2024-05-14 09:46:08.000000000","message":"?: Any reason why this is a global method instead of a static method in the `CreateVolume` class?","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"90a54a7ae07582fdbfdec7dfcc5e6b86e3a12d14","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        volume_client.revert_volume_to_snapshot(volume, snapshot)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def _check_size_arg(args):"},{"line_number":121,"context_line":"    \"\"\"Check whether --size option is required or not."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    Require size parameter only in case when snapshot or source"}],"source_content_type":"text/x-python","patch_set":1,"id":"d77372bc_d86e7bc4","line":120,"in_reply_to":"1d1fb124_847b4b1b","updated":"2024-05-14 12:37:13.000000000","message":"This is a copy-paste from `openstackclient/volume/v2/volume.py`, which is what I asked for. We can rework this but please do it in a separate change (either before or after this change).","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"762beeaaa4719734f32f782df1ddc1e3e65e0dd3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        volume_client.revert_volume_to_snapshot(volume, snapshot)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def _check_size_arg(args):"},{"line_number":121,"context_line":"    \"\"\"Check whether --size option is required or not."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    Require size parameter only in case when snapshot or source"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f3fb3eb_11770fe6","line":120,"in_reply_to":"d77372bc_d86e7bc4","updated":"2024-05-15 12:09:11.000000000","message":"Addressed here https://review.opendev.org/c/openstack/python-openstackclient/+/919726","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac74157a9ad7d4b6926babbf8d3293b3df60800b","unresolved":true,"context_lines":[{"line_number":137,"context_line":"class CreateVolume(command.ShowOne):"},{"line_number":138,"context_line":"    _description \u003d _(\"Create new volume\")"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def get_parser(self, prog_name):"},{"line_number":141,"context_line":"        parser \u003d super().get_parser(prog_name)"},{"line_number":142,"context_line":"        parser.add_argument("},{"line_number":143,"context_line":"            \"name\","}],"source_content_type":"text/x-python","patch_set":1,"id":"27b72697_d8838eb8","line":140,"updated":"2024-05-14 09:46:08.000000000","message":"I feel like this should be a common method with the one in v2, and for v3 we just add for manage the addition source_group.\n\nFor example the common method would be called here and v2, and it could return the parser and the source_group. In v2 the source_group is ignored, but here in v3 we would add the `--remote-source` argument.","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"762beeaaa4719734f32f782df1ddc1e3e65e0dd3","unresolved":false,"context_lines":[{"line_number":137,"context_line":"class CreateVolume(command.ShowOne):"},{"line_number":138,"context_line":"    _description \u003d _(\"Create new volume\")"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def get_parser(self, prog_name):"},{"line_number":141,"context_line":"        parser \u003d super().get_parser(prog_name)"},{"line_number":142,"context_line":"        parser.add_argument("},{"line_number":143,"context_line":"            \"name\","}],"source_content_type":"text/x-python","patch_set":1,"id":"026dbd83_74368cd4","line":140,"in_reply_to":"2364cd98_2859d91f","updated":"2024-05-15 12:09:11.000000000","message":"Addressed here https://review.opendev.org/c/openstack/python-openstackclient/+/919726","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"90a54a7ae07582fdbfdec7dfcc5e6b86e3a12d14","unresolved":true,"context_lines":[{"line_number":137,"context_line":"class CreateVolume(command.ShowOne):"},{"line_number":138,"context_line":"    _description \u003d _(\"Create new volume\")"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def get_parser(self, prog_name):"},{"line_number":141,"context_line":"        parser \u003d super().get_parser(prog_name)"},{"line_number":142,"context_line":"        parser.add_argument("},{"line_number":143,"context_line":"            \"name\","}],"source_content_type":"text/x-python","patch_set":1,"id":"2364cd98_2859d91f","line":140,"in_reply_to":"27b72697_d8838eb8","updated":"2024-05-14 12:37:13.000000000","message":"Seems reasonable so long as we\u0027ll never need to _remove_ parser options going from v2 -\u003e v3.","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"ac74157a9ad7d4b6926babbf8d3293b3df60800b","unresolved":true,"context_lines":[{"line_number":247,"context_line":"        )"},{"line_number":248,"context_line":"        return parser"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def take_action(self, parsed_args):"},{"line_number":251,"context_line":"        _check_size_arg(parsed_args)"},{"line_number":252,"context_line":"        # size is validated in the above call to"},{"line_number":253,"context_line":"        # _check_size_arg where we check that size"}],"source_content_type":"text/x-python","patch_set":1,"id":"e77c4493_2eac63a2","line":250,"updated":"2024-05-14 09:46:08.000000000","message":"Same here, I think we should be able to have a common `take_action` for both classes.","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3f4a08cc89c36bba2fb82b6b087fe6a825c93bc6","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        )"},{"line_number":248,"context_line":"        return parser"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def take_action(self, parsed_args):"},{"line_number":251,"context_line":"        _check_size_arg(parsed_args)"},{"line_number":252,"context_line":"        # size is validated in the above call to"},{"line_number":253,"context_line":"        # _check_size_arg where we check that size"}],"source_content_type":"text/x-python","patch_set":1,"id":"a1a19d1f_8e3aa5ae","line":250,"in_reply_to":"e77c4493_2eac63a2","updated":"2024-05-16 12:42:21.000000000","message":"Done","commit_id":"91999effb433262624f64c96e39b63b456d8e3bc"}]}
