)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a78f3179e5fa9535e92d272a2ae5e07461362970","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0fdbf395_80c9e0fd","updated":"2025-08-20 16:45:07.000000000","message":"This is great. There are two nits inline to fix. The -1 is for that. However, it would be great to see a separate, follow-up patch that combines all of the test methods in this class into a single test method? For example, we do this for access rules:\n\nhttps://github.com/openstack/python-openstackclient/blob/master/openstackclient/tests/functional/identity/v3/test_access_rule.py\n\nThis will be faster to run and much shorter to boot.","commit_id":"a51205d94d592e1647b680baba3aeafcc096a705"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"09084223686581998a3d7a796df19c0f4cf91903","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"76603066_dbdaddf9","updated":"2025-08-30 13:19:32.000000000","message":"Thank you for your review! Changes with the same structure as the code you reviewed have been included into Patch 3. Patch 6 contains the refactored code.","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f73a2a1b_e030144a","updated":"2025-09-09 21:48:07.000000000","message":"There\u0027s a lot of duplication here still. Can you please address it?","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"db269eba0644dd60304dd40e7af16a75c7e35ef1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ec644ea0_149ba66d","in_reply_to":"f73a2a1b_e030144a","updated":"2025-09-14 03:13:50.000000000","message":"Thank you for your review. To eliminate the duplication of volume snapshots, I\u0027ve reordered the sequence of test cases(show, list, set, unset, delete). Therefore, I\u0027ve used only two volume snapshots. Additionally, I\u0027ve changed the comments for the tests.","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"d1520c60c62bf35945eda8bed9ef3360a664caf2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"35c890c5_cf8860a4","updated":"2025-10-22 13:34:09.000000000","message":"recheck","commit_id":"a6cd8ea0a7ffff9caa77d8f6308b475e638df4fe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6e30317ad0051bf160e638541716bed00bb55950","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f6e9c126_6ef61e64","updated":"2025-11-12 12:16:53.000000000","message":"This is getting closer but I think there is more duplication you can remove here.\n\nPlease mark comments as _Resolved_ when you feel you have addressed them. If I or another reviewer disagrees, we can always mark them as _Unresolved_.","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"9217ef427135df6f9364ebb28b115efa68e12fbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a9cca1e1_e821be6f","updated":"2025-11-23 11:38:48.000000000","message":"Hi, thank you very much for the detailed review.\nYour comments were extremely helpful in understanding the intended structure, especially regarding minimizing API calls and keeping each test action tightly aligned with the corresponding CLI command being validated.\n\nBased on your feedback, I revised the test flow to follow:\n**create only one snapshot**\n- show\n- list (by name)\n- list (by volume)\n- set (name/description/properties)\n- unset\n- set (no-property + state error)\n- list (status\u003derror)\n- delete\n\nBelow is how I addressed each of your points.","commit_id":"6366763ce4b73ad5b13e3cca18319ae1d8dfb330"}],"openstackclient/tests/functional/volume/v3/test_volume_snapshot.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a78f3179e5fa9535e92d272a2ae5e07461362970","unresolved":true,"context_lines":[{"line_number":242,"context_line":"            {\u0027Beta\u0027: \u0027b\u0027},"},{"line_number":243,"context_line":"            cmd_output[\"properties\"],"},{"line_number":244,"context_line":"        )"},{"line_number":245,"context_line":"    "},{"line_number":246,"context_line":"    def test_volume_snapshot_show(self):"},{"line_number":247,"context_line":"        \"\"\"Test showing a volume snapshot\"\"\""},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"081c180e_402db21b","line":245,"updated":"2025-08-20 16:45:07.000000000","message":"Can you remove this?","commit_id":"a51205d94d592e1647b680baba3aeafcc096a705"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"09084223686581998a3d7a796df19c0f4cf91903","unresolved":true,"context_lines":[{"line_number":242,"context_line":"            {\u0027Beta\u0027: \u0027b\u0027},"},{"line_number":243,"context_line":"            cmd_output[\"properties\"],"},{"line_number":244,"context_line":"        )"},{"line_number":245,"context_line":"    "},{"line_number":246,"context_line":"    def test_volume_snapshot_show(self):"},{"line_number":247,"context_line":"        \"\"\"Test showing a volume snapshot\"\"\""},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"88537bae_f83080ee","line":245,"in_reply_to":"081c180e_402db21b","updated":"2025-08-30 13:19:32.000000000","message":"I\u0027ve removed blank line to correct nit.","commit_id":"a51205d94d592e1647b680baba3aeafcc096a705"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            {\u0027Beta\u0027: \u0027b\u0027},"},{"line_number":243,"context_line":"            cmd_output[\"properties\"],"},{"line_number":244,"context_line":"        )"},{"line_number":245,"context_line":"    "},{"line_number":246,"context_line":"    def test_volume_snapshot_show(self):"},{"line_number":247,"context_line":"        \"\"\"Test showing a volume snapshot\"\"\""},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dbfc2e5a_b5623657","line":245,"in_reply_to":"88537bae_f83080ee","updated":"2025-09-09 21:48:07.000000000","message":"Acknowledged","commit_id":"a51205d94d592e1647b680baba3aeafcc096a705"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a78f3179e5fa9535e92d272a2ae5e07461362970","unresolved":true,"context_lines":[{"line_number":267,"context_line":"            \u0027volume snapshot show \u0027 + name1,"},{"line_number":268,"context_line":"            parse_output\u003dTrue,"},{"line_number":269,"context_line":"        )"},{"line_number":270,"context_line":"        print(snapshot_info)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        self.assertEqual(name1, snapshot_info[\u0027name\u0027])"},{"line_number":273,"context_line":"        self.assertEqual(cmd_output[\u0027id\u0027], snapshot_info[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"f996c713_2e84f860","line":270,"updated":"2025-08-20 16:45:07.000000000","message":"whoops","commit_id":"a51205d94d592e1647b680baba3aeafcc096a705"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            \u0027volume snapshot show \u0027 + name1,"},{"line_number":268,"context_line":"            parse_output\u003dTrue,"},{"line_number":269,"context_line":"        )"},{"line_number":270,"context_line":"        print(snapshot_info)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        self.assertEqual(name1, snapshot_info[\u0027name\u0027])"},{"line_number":273,"context_line":"        self.assertEqual(cmd_output[\u0027id\u0027], snapshot_info[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b16a90a_d98973b0","line":270,"in_reply_to":"31dc96eb_fd55578e","updated":"2025-09-09 21:48:07.000000000","message":"Acknowledged","commit_id":"a51205d94d592e1647b680baba3aeafcc096a705"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"09084223686581998a3d7a796df19c0f4cf91903","unresolved":true,"context_lines":[{"line_number":267,"context_line":"            \u0027volume snapshot show \u0027 + name1,"},{"line_number":268,"context_line":"            parse_output\u003dTrue,"},{"line_number":269,"context_line":"        )"},{"line_number":270,"context_line":"        print(snapshot_info)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        self.assertEqual(name1, snapshot_info[\u0027name\u0027])"},{"line_number":273,"context_line":"        self.assertEqual(cmd_output[\u0027id\u0027], snapshot_info[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"31dc96eb_fd55578e","line":270,"in_reply_to":"f996c713_2e84f860","updated":"2025-08-30 13:19:32.000000000","message":"It was my mistake that I made while logging. I\u0027ve removed it.","commit_id":"a51205d94d592e1647b680baba3aeafcc096a705"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        finally:"},{"line_number":41,"context_line":"            super().tearDownClass()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_volume_snapshot(self):"},{"line_number":44,"context_line":"        \"\"\"delete\"\"\""},{"line_number":45,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":46,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":47,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"}],"source_content_type":"text/x-python","patch_set":6,"id":"b499afa0_02431cd0","line":44,"range":{"start_line":43,"start_character":4,"end_line":44,"end_character":20},"updated":"2025-09-09 21:48:07.000000000","message":"Can you delete this comment entirely now?\n\n```suggestion\n    def test_volume_snapshot(self):\n```","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        finally:"},{"line_number":41,"context_line":"            super().tearDownClass()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_volume_snapshot(self):"},{"line_number":44,"context_line":"        \"\"\"delete\"\"\""},{"line_number":45,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":46,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":47,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"}],"source_content_type":"text/x-python","patch_set":6,"id":"6f25ced8_3f0bd17a","line":44,"range":{"start_line":43,"start_character":4,"end_line":44,"end_character":20},"in_reply_to":"91b2b092_77ff9863","updated":"2025-09-25 10:15:35.000000000","message":"Okay. Feel free to mark comments as \"Resolved\" if you think you\u0027ve addressed something (I can mark it as \"Unresolved\" if I disagree)","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"db269eba0644dd60304dd40e7af16a75c7e35ef1","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        finally:"},{"line_number":41,"context_line":"            super().tearDownClass()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_volume_snapshot(self):"},{"line_number":44,"context_line":"        \"\"\"delete\"\"\""},{"line_number":45,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":46,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":47,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"}],"source_content_type":"text/x-python","patch_set":6,"id":"91b2b092_77ff9863","line":44,"range":{"start_line":43,"start_character":4,"end_line":44,"end_character":20},"in_reply_to":"b499afa0_02431cd0","updated":"2025-09-14 03:13:50.000000000","message":"I\u0027ve changed the comment for delete test.\n\n```\n# delete volume snapshot\n```","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, name1)"},{"line_number":73,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, name2)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        \"\"\"list\"\"\""},{"line_number":76,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":77,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":78,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"}],"source_content_type":"text/x-python","patch_set":6,"id":"94fc5139_1a802bab","line":75,"updated":"2025-09-09 21:48:07.000000000","message":"```suggestion\n       # list volume snapshots\n```","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"db269eba0644dd60304dd40e7af16a75c7e35ef1","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, name1)"},{"line_number":73,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, name2)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        \"\"\"list\"\"\""},{"line_number":76,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":77,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":78,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"}],"source_content_type":"text/x-python","patch_set":6,"id":"f5b354b1_52a4ee8f","line":75,"in_reply_to":"94fc5139_1a802bab","updated":"2025-09-14 03:13:50.000000000","message":"I\u0027ve changed the comment for list test.\n```\n# list volume snapshot\n```","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, name1)"},{"line_number":73,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, name2)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        \"\"\"list\"\"\""},{"line_number":76,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":77,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":78,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"}],"source_content_type":"text/x-python","patch_set":6,"id":"c519e4c7_13d248fe","line":75,"in_reply_to":"f5b354b1_52a4ee8f","updated":"2025-09-25 10:15:35.000000000","message":"Acknowledged","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        \"\"\"list\"\"\""},{"line_number":76,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":77,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":78,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"},{"line_number":79,"context_line":"            parse_output\u003dTrue,"},{"line_number":80,"context_line":"        )"},{"line_number":81,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, name1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"eeaa75ea_1d8b692e","line":78,"updated":"2025-09-09 21:48:07.000000000","message":"You already created the snapshot above, only to go delete it. It would be better to reorder the combined test case so that we don\u0027t have to create multiple resources unnecessarily.","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        \"\"\"list\"\"\""},{"line_number":76,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":77,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":78,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"},{"line_number":79,"context_line":"            parse_output\u003dTrue,"},{"line_number":80,"context_line":"        )"},{"line_number":81,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, name1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"11f773c9_9fcad8a9","line":78,"in_reply_to":"dce576c3_f0d61bcd","updated":"2025-09-25 10:15:35.000000000","message":"Acknowledged","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"db269eba0644dd60304dd40e7af16a75c7e35ef1","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        \"\"\"list\"\"\""},{"line_number":76,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":77,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":78,"context_line":"            \u0027volume snapshot create \u0027 + name1 + \u0027 --volume \u0027 + self.VOLLY,"},{"line_number":79,"context_line":"            parse_output\u003dTrue,"},{"line_number":80,"context_line":"        )"},{"line_number":81,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, name1)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dce576c3_f0d61bcd","line":78,"in_reply_to":"eeaa75ea_1d8b692e","updated":"2025-09-14 03:13:50.000000000","message":"I reordered the test cases so that I reused volume snapshot for list test.","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        self.assertIn(name1, names)"},{"line_number":147,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        \"\"\"set\"\"\""},{"line_number":150,"context_line":"        name \u003d uuid.uuid4().hex"},{"line_number":151,"context_line":"        new_name \u003d name + \"_\""},{"line_number":152,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":6,"id":"b656da03_f1fe9a6f","line":149,"updated":"2025-09-09 21:48:07.000000000","message":"```suggestion\n        # update volume snapshot\n```","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        self.assertIn(name1, names)"},{"line_number":147,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        \"\"\"set\"\"\""},{"line_number":150,"context_line":"        name \u003d uuid.uuid4().hex"},{"line_number":151,"context_line":"        new_name \u003d name + \"_\""},{"line_number":152,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":6,"id":"8b6760a1_fea5d186","line":149,"in_reply_to":"91bf5c32_09813c93","updated":"2025-09-25 10:15:35.000000000","message":"Acknowledged","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"db269eba0644dd60304dd40e7af16a75c7e35ef1","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        self.assertIn(name1, names)"},{"line_number":147,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        \"\"\"set\"\"\""},{"line_number":150,"context_line":"        name \u003d uuid.uuid4().hex"},{"line_number":151,"context_line":"        new_name \u003d name + \"_\""},{"line_number":152,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":6,"id":"91bf5c32_09813c93","line":149,"in_reply_to":"b656da03_f1fe9a6f","updated":"2025-09-14 03:13:50.000000000","message":"I\u0027ve changed the comment for set, unset test as shown below.\n\n```\n# set volume snapshot\n# unset volume snapshot\n```","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":true,"context_lines":[{"line_number":147,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        \"\"\"set\"\"\""},{"line_number":150,"context_line":"        name \u003d uuid.uuid4().hex"},{"line_number":151,"context_line":"        new_name \u003d name + \"_\""},{"line_number":152,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":153,"context_line":"            \u0027volume snapshot create \u0027"},{"line_number":154,"context_line":"            + \u0027--volume \u0027"},{"line_number":155,"context_line":"            + self.VOLLY"},{"line_number":156,"context_line":"            + \u0027 --description aaaa \u0027"},{"line_number":157,"context_line":"            + \u0027--property Alpha\u003da \u0027"},{"line_number":158,"context_line":"            + name,"},{"line_number":159,"context_line":"            parse_output\u003dTrue,"},{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, new_name)"},{"line_number":162,"context_line":"        self.addCleanup(self.openstack, \u0027volume snapshot delete \u0027 + new_name)"},{"line_number":163,"context_line":"        self.assertEqual("},{"line_number":164,"context_line":"            name,"},{"line_number":165,"context_line":"            cmd_output[\"name\"],"},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        self.assertEqual("},{"line_number":168,"context_line":"            1,"},{"line_number":169,"context_line":"            cmd_output[\"size\"],"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":"        self.assertEqual("},{"line_number":172,"context_line":"            \u0027aaaa\u0027,"},{"line_number":173,"context_line":"            cmd_output[\"description\"],"},{"line_number":174,"context_line":"        )"},{"line_number":175,"context_line":"        self.assertEqual("},{"line_number":176,"context_line":"            {\u0027Alpha\u0027: \u0027a\u0027},"},{"line_number":177,"context_line":"            cmd_output[\"properties\"],"},{"line_number":178,"context_line":"        )"},{"line_number":179,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, name, \u0027available\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # test volume snapshot set"},{"line_number":182,"context_line":"        raw_output \u003d self.openstack("},{"line_number":183,"context_line":"            \u0027volume snapshot set \u0027"},{"line_number":184,"context_line":"            + \u0027--name \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"2e87d27d_40ee08c6","line":181,"range":{"start_line":150,"start_character":1,"end_line":181,"end_character":34},"updated":"2025-09-09 21:48:07.000000000","message":"Same comment as above: you don\u0027t need to do this multiple times. Simply re-order things so that deletion happens at the end.","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        \"\"\"set\"\"\""},{"line_number":150,"context_line":"        name \u003d uuid.uuid4().hex"},{"line_number":151,"context_line":"        new_name \u003d name + \"_\""},{"line_number":152,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":153,"context_line":"            \u0027volume snapshot create \u0027"},{"line_number":154,"context_line":"            + \u0027--volume \u0027"},{"line_number":155,"context_line":"            + self.VOLLY"},{"line_number":156,"context_line":"            + \u0027 --description aaaa \u0027"},{"line_number":157,"context_line":"            + \u0027--property Alpha\u003da \u0027"},{"line_number":158,"context_line":"            + name,"},{"line_number":159,"context_line":"            parse_output\u003dTrue,"},{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, new_name)"},{"line_number":162,"context_line":"        self.addCleanup(self.openstack, \u0027volume snapshot delete \u0027 + new_name)"},{"line_number":163,"context_line":"        self.assertEqual("},{"line_number":164,"context_line":"            name,"},{"line_number":165,"context_line":"            cmd_output[\"name\"],"},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        self.assertEqual("},{"line_number":168,"context_line":"            1,"},{"line_number":169,"context_line":"            cmd_output[\"size\"],"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":"        self.assertEqual("},{"line_number":172,"context_line":"            \u0027aaaa\u0027,"},{"line_number":173,"context_line":"            cmd_output[\"description\"],"},{"line_number":174,"context_line":"        )"},{"line_number":175,"context_line":"        self.assertEqual("},{"line_number":176,"context_line":"            {\u0027Alpha\u0027: \u0027a\u0027},"},{"line_number":177,"context_line":"            cmd_output[\"properties\"],"},{"line_number":178,"context_line":"        )"},{"line_number":179,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, name, \u0027available\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # test volume snapshot set"},{"line_number":182,"context_line":"        raw_output \u003d self.openstack("},{"line_number":183,"context_line":"            \u0027volume snapshot set \u0027"},{"line_number":184,"context_line":"            + \u0027--name \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ca8eeaf_0388fb30","line":181,"range":{"start_line":150,"start_character":1,"end_line":181,"end_character":34},"in_reply_to":"0f9f3743_7e2ff4b0","updated":"2025-09-25 10:15:35.000000000","message":"Acknowledged","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"db269eba0644dd60304dd40e7af16a75c7e35ef1","unresolved":true,"context_lines":[{"line_number":147,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        \"\"\"set\"\"\""},{"line_number":150,"context_line":"        name \u003d uuid.uuid4().hex"},{"line_number":151,"context_line":"        new_name \u003d name + \"_\""},{"line_number":152,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":153,"context_line":"            \u0027volume snapshot create \u0027"},{"line_number":154,"context_line":"            + \u0027--volume \u0027"},{"line_number":155,"context_line":"            + self.VOLLY"},{"line_number":156,"context_line":"            + \u0027 --description aaaa \u0027"},{"line_number":157,"context_line":"            + \u0027--property Alpha\u003da \u0027"},{"line_number":158,"context_line":"            + name,"},{"line_number":159,"context_line":"            parse_output\u003dTrue,"},{"line_number":160,"context_line":"        )"},{"line_number":161,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, new_name)"},{"line_number":162,"context_line":"        self.addCleanup(self.openstack, \u0027volume snapshot delete \u0027 + new_name)"},{"line_number":163,"context_line":"        self.assertEqual("},{"line_number":164,"context_line":"            name,"},{"line_number":165,"context_line":"            cmd_output[\"name\"],"},{"line_number":166,"context_line":"        )"},{"line_number":167,"context_line":"        self.assertEqual("},{"line_number":168,"context_line":"            1,"},{"line_number":169,"context_line":"            cmd_output[\"size\"],"},{"line_number":170,"context_line":"        )"},{"line_number":171,"context_line":"        self.assertEqual("},{"line_number":172,"context_line":"            \u0027aaaa\u0027,"},{"line_number":173,"context_line":"            cmd_output[\"description\"],"},{"line_number":174,"context_line":"        )"},{"line_number":175,"context_line":"        self.assertEqual("},{"line_number":176,"context_line":"            {\u0027Alpha\u0027: \u0027a\u0027},"},{"line_number":177,"context_line":"            cmd_output[\"properties\"],"},{"line_number":178,"context_line":"        )"},{"line_number":179,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, name, \u0027available\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # test volume snapshot set"},{"line_number":182,"context_line":"        raw_output \u003d self.openstack("},{"line_number":183,"context_line":"            \u0027volume snapshot set \u0027"},{"line_number":184,"context_line":"            + \u0027--name \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"0f9f3743_7e2ff4b0","line":181,"range":{"start_line":150,"start_character":1,"end_line":181,"end_character":34},"in_reply_to":"2e87d27d_40ee08c6","updated":"2025-09-14 03:13:50.000000000","message":"I\u0027ve changed them.","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":true,"context_lines":[{"line_number":240,"context_line":"            {\u0027Beta\u0027: \u0027b\u0027},"},{"line_number":241,"context_line":"            cmd_output[\"properties\"],"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":"        \"\"\"show\"\"\""},{"line_number":244,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":6,"id":"9e1293d7_880b6d22","line":243,"updated":"2025-09-09 21:48:07.000000000","message":"```suggestion\n\n        # show volume snapshot\n```","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            {\u0027Beta\u0027: \u0027b\u0027},"},{"line_number":241,"context_line":"            cmd_output[\"properties\"],"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":"        \"\"\"show\"\"\""},{"line_number":244,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":6,"id":"6261e7aa_6d19caa5","line":243,"in_reply_to":"9bb1ef23_9c166d6f","updated":"2025-09-25 10:15:35.000000000","message":"Acknowledged","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"db269eba0644dd60304dd40e7af16a75c7e35ef1","unresolved":true,"context_lines":[{"line_number":240,"context_line":"            {\u0027Beta\u0027: \u0027b\u0027},"},{"line_number":241,"context_line":"            cmd_output[\"properties\"],"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":"        \"\"\"show\"\"\""},{"line_number":244,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":6,"id":"9bb1ef23_9c166d6f","line":243,"in_reply_to":"9e1293d7_880b6d22","updated":"2025-09-14 03:13:50.000000000","message":"As per your recommendation, I\u0027ve changed comment for show test.\n\n```\n# show volume snapshot\n```","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c8b513514a609097b851ddf3de5bf496a06e57be","unresolved":true,"context_lines":[{"line_number":241,"context_line":"            cmd_output[\"properties\"],"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":"        \"\"\"show\"\"\""},{"line_number":244,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":247,"context_line":"            \u0027volume snapshot create\u0027"},{"line_number":248,"context_line":"            + \u0027 --volume \u0027"},{"line_number":249,"context_line":"            + self.VOLLY"},{"line_number":250,"context_line":"            + \u0027 --description \"test snapshot\"\u0027"},{"line_number":251,"context_line":"            + \u0027 --property test_key\u003dtest_value \u0027"},{"line_number":252,"context_line":"            + name1,"},{"line_number":253,"context_line":"            parse_output\u003dTrue,"},{"line_number":254,"context_line":"        )"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, name1)"},{"line_number":257,"context_line":"        self.addCleanup(self.openstack, \u0027volume snapshot delete \u0027 + name1)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, name1, \u0027available\u0027)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        snapshot_info \u003d self.openstack("},{"line_number":262,"context_line":"            \u0027volume snapshot show \u0027 + name1,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7751a9b3_0a1d8839","line":259,"range":{"start_line":244,"start_character":0,"end_line":259,"end_character":67},"updated":"2025-09-09 21:48:07.000000000","message":"Same comment again.","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            cmd_output[\"properties\"],"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":"        \"\"\"show\"\"\""},{"line_number":244,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":247,"context_line":"            \u0027volume snapshot create\u0027"},{"line_number":248,"context_line":"            + \u0027 --volume \u0027"},{"line_number":249,"context_line":"            + self.VOLLY"},{"line_number":250,"context_line":"            + \u0027 --description \"test snapshot\"\u0027"},{"line_number":251,"context_line":"            + \u0027 --property test_key\u003dtest_value \u0027"},{"line_number":252,"context_line":"            + name1,"},{"line_number":253,"context_line":"            parse_output\u003dTrue,"},{"line_number":254,"context_line":"        )"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, name1)"},{"line_number":257,"context_line":"        self.addCleanup(self.openstack, \u0027volume snapshot delete \u0027 + name1)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, name1, \u0027available\u0027)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        snapshot_info \u003d self.openstack("},{"line_number":262,"context_line":"            \u0027volume snapshot show \u0027 + name1,"}],"source_content_type":"text/x-python","patch_set":6,"id":"e0c2f266_9af8450a","line":259,"range":{"start_line":244,"start_character":0,"end_line":259,"end_character":67},"in_reply_to":"2e0e00f0_da1975f8","updated":"2025-09-25 10:15:35.000000000","message":"Acknowledged","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"db269eba0644dd60304dd40e7af16a75c7e35ef1","unresolved":true,"context_lines":[{"line_number":241,"context_line":"            cmd_output[\"properties\"],"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":"        \"\"\"show\"\"\""},{"line_number":244,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":247,"context_line":"            \u0027volume snapshot create\u0027"},{"line_number":248,"context_line":"            + \u0027 --volume \u0027"},{"line_number":249,"context_line":"            + self.VOLLY"},{"line_number":250,"context_line":"            + \u0027 --description \"test snapshot\"\u0027"},{"line_number":251,"context_line":"            + \u0027 --property test_key\u003dtest_value \u0027"},{"line_number":252,"context_line":"            + name1,"},{"line_number":253,"context_line":"            parse_output\u003dTrue,"},{"line_number":254,"context_line":"        )"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, name1)"},{"line_number":257,"context_line":"        self.addCleanup(self.openstack, \u0027volume snapshot delete \u0027 + name1)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, name1, \u0027available\u0027)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        snapshot_info \u003d self.openstack("},{"line_number":262,"context_line":"            \u0027volume snapshot show \u0027 + name1,"}],"source_content_type":"text/x-python","patch_set":6,"id":"2e0e00f0_da1975f8","line":259,"range":{"start_line":244,"start_character":0,"end_line":259,"end_character":67},"in_reply_to":"7751a9b3_0a1d8839","updated":"2025-09-14 03:13:50.000000000","message":"I\u0027ve changed the order of the show test. The modified show test is executed at the very beginning of the test.","commit_id":"dda27c6fee4749cccd12f5ddbfba6bcec9595ac3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":true,"context_lines":[{"line_number":41,"context_line":"            super().tearDownClass()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_volume_snapshot(self):"},{"line_number":44,"context_line":"        # show volume snapshot"},{"line_number":45,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":8,"id":"226c938b_0637e233","line":44,"updated":"2025-09-25 10:15:35.000000000","message":"```suggestion\n        # create volume snapshot\n```\n\n?","commit_id":"05606ba0acd133eec470b06f0a98d841ed1938b8"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"1e7404d92e66374a2e69d388f87230831db436f2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            super().tearDownClass()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_volume_snapshot(self):"},{"line_number":44,"context_line":"        # show volume snapshot"},{"line_number":45,"context_line":"        name1 \u003d uuid.uuid4().hex"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":8,"id":"2dcc481c_326c88d3","line":44,"in_reply_to":"226c938b_0637e233","updated":"2025-10-23 08:20:39.000000000","message":"I\u0027ve changed it.","commit_id":"05606ba0acd133eec470b06f0a98d841ed1938b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":true,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, snap1_id, \u0027available\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        snapshot_info \u003d self.openstack("},{"line_number":61,"context_line":"            \u0027volume snapshot show \u0027 + name1,"},{"line_number":62,"context_line":"            parse_output\u003dTrue,"},{"line_number":63,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":8,"id":"3542f855_33153b9c","line":60,"updated":"2025-09-25 10:15:35.000000000","message":"```suggestion\n        # show volume snapshot\n        snapshot_info \u003d self.openstack(\n```","commit_id":"05606ba0acd133eec470b06f0a98d841ed1938b8"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"1e7404d92e66374a2e69d388f87230831db436f2","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, snap1_id, \u0027available\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        snapshot_info \u003d self.openstack("},{"line_number":61,"context_line":"            \u0027volume snapshot show \u0027 + name1,"},{"line_number":62,"context_line":"            parse_output\u003dTrue,"},{"line_number":63,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":8,"id":"0a96e05d_75502802","line":60,"in_reply_to":"3542f855_33153b9c","updated":"2025-10-23 08:20:39.000000000","message":"I\u0027ve added `#show volume snapshot` comment.","commit_id":"05606ba0acd133eec470b06f0a98d841ed1938b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2dc8dee0ff53affea615564d26ec052d5eb619ae","unresolved":true,"context_lines":[{"line_number":191,"context_line":"            cmd_output[\"properties\"],"},{"line_number":192,"context_line":"        )"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # delete volume snapshot"},{"line_number":195,"context_line":"        del_output \u003d self.openstack("},{"line_number":196,"context_line":"            \u0027volume snapshot delete \u0027 + snap1_id + \u0027 \u0027 + snap2_id"},{"line_number":197,"context_line":"        )"},{"line_number":198,"context_line":"        self.assertOutput(\u0027\u0027, del_output)"},{"line_number":199,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, snap1_id)"},{"line_number":200,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, snap2_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"c760d544_65dc1436","line":200,"range":{"start_line":194,"start_character":8,"end_line":200,"end_character":57},"updated":"2025-09-25 10:15:35.000000000","message":"Rather than doing this here, can you add an `addCleanup` call immediately after you create the volume snapshots above? This will ensure we won\u0027t be left with stale resources if any of the above assertions fail. You will find plenty of examples of doing this in the functional tests if you search for `addCleanup`. However, unlike those examples, you probably want to create an e.g. `_delete_volume_snapshot` method that you call, so you can delete *and* wait. There are examples of *that* in SDK, such as in `openstack/tests/functional/compute/v2/test_server.py`","commit_id":"05606ba0acd133eec470b06f0a98d841ed1938b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6e30317ad0051bf160e638541716bed00bb55950","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            cmd_output[\"properties\"],"},{"line_number":192,"context_line":"        )"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # delete volume snapshot"},{"line_number":195,"context_line":"        del_output \u003d self.openstack("},{"line_number":196,"context_line":"            \u0027volume snapshot delete \u0027 + snap1_id + \u0027 \u0027 + snap2_id"},{"line_number":197,"context_line":"        )"},{"line_number":198,"context_line":"        self.assertOutput(\u0027\u0027, del_output)"},{"line_number":199,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, snap1_id)"},{"line_number":200,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, snap2_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"75514426_1e90c3bc","line":200,"range":{"start_line":194,"start_character":8,"end_line":200,"end_character":57},"in_reply_to":"c5598b83_b2f2ee7d","updated":"2025-11-12 12:16:53.000000000","message":"Acknowledged","commit_id":"05606ba0acd133eec470b06f0a98d841ed1938b8"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"1e7404d92e66374a2e69d388f87230831db436f2","unresolved":true,"context_lines":[{"line_number":191,"context_line":"            cmd_output[\"properties\"],"},{"line_number":192,"context_line":"        )"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # delete volume snapshot"},{"line_number":195,"context_line":"        del_output \u003d self.openstack("},{"line_number":196,"context_line":"            \u0027volume snapshot delete \u0027 + snap1_id + \u0027 \u0027 + snap2_id"},{"line_number":197,"context_line":"        )"},{"line_number":198,"context_line":"        self.assertOutput(\u0027\u0027, del_output)"},{"line_number":199,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, snap1_id)"},{"line_number":200,"context_line":"        self.wait_for_delete(\u0027volume snapshot\u0027, snap2_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"c5598b83_b2f2ee7d","line":200,"range":{"start_line":194,"start_character":8,"end_line":200,"end_character":57},"in_reply_to":"c760d544_65dc1436","updated":"2025-10-23 08:20:39.000000000","message":"I implemented the `addCleanup` logic as you suggested to ensure we don\u0027t leave any stale resources behind if an assertion fails. \n\nFollowing the existing patterns in the functional tests, I added `addCleanup` calls right after creating the volume snapshot. This approach verifies the delete functionality.\n\n```\nself.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, snap1_id)\nself.addCleanup(\n    self.openstack, f\u0027volume snapshot delete --force {snap1_id}\u0027\n)\nself.wait_for_status(\u0027volume snapshot\u0027, snap1_id, \u0027available\u0027)\n```","commit_id":"05606ba0acd133eec470b06f0a98d841ed1938b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6e30317ad0051bf160e638541716bed00bb55950","unresolved":true,"context_lines":[{"line_number":55,"context_line":"        )"},{"line_number":56,"context_line":"        snap1_id \u003d cmd_output[\u0027id\u0027]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, snap1_id)"},{"line_number":59,"context_line":"        self.addCleanup("},{"line_number":60,"context_line":"            self.openstack, f\u0027volume snapshot delete --force {snap1_id}\u0027"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, snap1_id, \u0027available\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # show volume snapshot"}],"source_content_type":"text/x-python","patch_set":11,"id":"7ff62c98_aae5d747","line":61,"range":{"start_line":58,"start_character":74,"end_line":61,"end_character":9},"updated":"2025-11-12 12:16:53.000000000","message":"Do we need to force this? Is there a reason the first call won\u0027t succeed? I don\u0027t believe we were doing this previously.","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"9217ef427135df6f9364ebb28b115efa68e12fbd","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        )"},{"line_number":56,"context_line":"        snap1_id \u003d cmd_output[\u0027id\u0027]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, snap1_id)"},{"line_number":59,"context_line":"        self.addCleanup("},{"line_number":60,"context_line":"            self.openstack, f\u0027volume snapshot delete --force {snap1_id}\u0027"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, snap1_id, \u0027available\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        # show volume snapshot"}],"source_content_type":"text/x-python","patch_set":11,"id":"472e3c4c_e19c6b33","line":61,"range":{"start_line":58,"start_character":74,"end_line":61,"end_character":9},"in_reply_to":"7ff62c98_aae5d747","updated":"2025-11-23 11:38:48.000000000","message":"You\u0027re right. There was no reason to expect the normal call to fail here, and forcing deletion is no ideal for a happy path functional test. I removed the unnecessary `--force` option in this code.","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6e30317ad0051bf160e638541716bed00bb55950","unresolved":true,"context_lines":[{"line_number":67,"context_line":"            parse_output\u003dTrue,"},{"line_number":68,"context_line":"        )"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.assertEqual(name1, snapshot_info[\u0027name\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(cmd_output[\u0027id\u0027], snapshot_info[\u0027id\u0027])"},{"line_number":72,"context_line":"        self.assertEqual("},{"line_number":73,"context_line":"            cmd_output[\u0027created_at\u0027][:16], snapshot_info[\u0027created_at\u0027][:16]"},{"line_number":74,"context_line":"        )"},{"line_number":75,"context_line":"        self.assertEqual(self.VOLUME_ID, snapshot_info[\"volume_id\"])"},{"line_number":76,"context_line":"        self.assertEqual(\u0027aaaa\u0027, snapshot_info[\"description\"])"},{"line_number":77,"context_line":"        self.assertEqual({\u0027Alpha\u0027: \u0027a\u0027}, snapshot_info[\"properties\"])"},{"line_number":78,"context_line":"        self.assertEqual(1, snapshot_info[\"size\"])"},{"line_number":79,"context_line":"        self.assertEqual(\"available\", snapshot_info[\"status\"])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # list volume snapshot"},{"line_number":82,"context_line":"        name2 \u003d uuid.uuid4().hex"},{"line_number":83,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":11,"id":"46e77c7a_ab59a01d","line":80,"range":{"start_line":70,"start_character":54,"end_line":80,"end_character":1},"updated":"2025-11-12 12:16:53.000000000","message":"While this isn\u0027t _wrong_, it\u0027s likely overboard: a simple name check would suffice to prove we retrieve the correct instance. You\u0027ll note we were not doing this previously (intentionally)","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"9217ef427135df6f9364ebb28b115efa68e12fbd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            parse_output\u003dTrue,"},{"line_number":68,"context_line":"        )"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        self.assertEqual(name1, snapshot_info[\u0027name\u0027])"},{"line_number":71,"context_line":"        self.assertEqual(cmd_output[\u0027id\u0027], snapshot_info[\u0027id\u0027])"},{"line_number":72,"context_line":"        self.assertEqual("},{"line_number":73,"context_line":"            cmd_output[\u0027created_at\u0027][:16], snapshot_info[\u0027created_at\u0027][:16]"},{"line_number":74,"context_line":"        )"},{"line_number":75,"context_line":"        self.assertEqual(self.VOLUME_ID, snapshot_info[\"volume_id\"])"},{"line_number":76,"context_line":"        self.assertEqual(\u0027aaaa\u0027, snapshot_info[\"description\"])"},{"line_number":77,"context_line":"        self.assertEqual({\u0027Alpha\u0027: \u0027a\u0027}, snapshot_info[\"properties\"])"},{"line_number":78,"context_line":"        self.assertEqual(1, snapshot_info[\"size\"])"},{"line_number":79,"context_line":"        self.assertEqual(\"available\", snapshot_info[\"status\"])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # list volume snapshot"},{"line_number":82,"context_line":"        name2 \u003d uuid.uuid4().hex"},{"line_number":83,"context_line":"        cmd_output \u003d self.openstack("}],"source_content_type":"text/x-python","patch_set":11,"id":"a35a448c_956aa6ae","line":80,"range":{"start_line":70,"start_character":54,"end_line":80,"end_character":1},"in_reply_to":"46e77c7a_ab59a01d","updated":"2025-11-23 11:38:48.000000000","message":"I reduce the assertions accordingly.\nInstead of checking many fields, I checked only `name`, `description` and `properties`. This is consistent with the previous pattern in the functional test and avoids over asserting.","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6e30317ad0051bf160e638541716bed00bb55950","unresolved":true,"context_lines":[{"line_number":78,"context_line":"        self.assertEqual(1, snapshot_info[\"size\"])"},{"line_number":79,"context_line":"        self.assertEqual(\"available\", snapshot_info[\"status\"])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # list volume snapshot"},{"line_number":82,"context_line":"        name2 \u003d uuid.uuid4().hex"},{"line_number":83,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":84,"context_line":"            \u0027volume snapshot create \u0027 + name2 + \u0027 --volume \u0027 + self.VOLLY,"},{"line_number":85,"context_line":"            parse_output\u003dTrue,"},{"line_number":86,"context_line":"        )"},{"line_number":87,"context_line":"        snap2_id \u003d cmd_output[\u0027id\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, snap2_id)"},{"line_number":90,"context_line":"        self.addCleanup("},{"line_number":91,"context_line":"            self.openstack, f\u0027volume snapshot delete --force {snap2_id}\u0027"},{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, snap2_id, \u0027available\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        self.assertEqual("},{"line_number":96,"context_line":"            name2,"},{"line_number":97,"context_line":"            cmd_output[\"name\"],"},{"line_number":98,"context_line":"        )"},{"line_number":99,"context_line":"        self.assertEqual("},{"line_number":100,"context_line":"            self.VOLUME_ID,"},{"line_number":101,"context_line":"            cmd_output[\"volume_id\"],"},{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":"        self.assertEqual("},{"line_number":104,"context_line":"            1,"},{"line_number":105,"context_line":"            cmd_output[\"size\"],"},{"line_number":106,"context_line":"        )"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        raw_output \u003d self.openstack("},{"line_number":109,"context_line":"            \u0027volume snapshot set \u0027 + \u0027--state error \u0027 + name2"}],"source_content_type":"text/x-python","patch_set":11,"id":"fbf11fd2_27b95121","line":106,"range":{"start_line":81,"start_character":0,"end_line":106,"end_character":9},"updated":"2025-11-12 12:16:53.000000000","message":"The comment on line 81 says you are testing `volume snapshot list`, but you are actually creating a new snapshot.\n\nThat comment should probably be removed since you test `volume snapshot set` before testing `list`. Also, do you need to create a second snapshot? Couldn\u0027t we just use the same snapshot we\u0027ve already created? IMO you can delete all of this.","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e88a078e8c52dd9ccf3654ad1e5b738ab475a734","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.assertEqual(1, snapshot_info[\"size\"])"},{"line_number":79,"context_line":"        self.assertEqual(\"available\", snapshot_info[\"status\"])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # list volume snapshot"},{"line_number":82,"context_line":"        name2 \u003d uuid.uuid4().hex"},{"line_number":83,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":84,"context_line":"            \u0027volume snapshot create \u0027 + name2 + \u0027 --volume \u0027 + self.VOLLY,"},{"line_number":85,"context_line":"            parse_output\u003dTrue,"},{"line_number":86,"context_line":"        )"},{"line_number":87,"context_line":"        snap2_id \u003d cmd_output[\u0027id\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, snap2_id)"},{"line_number":90,"context_line":"        self.addCleanup("},{"line_number":91,"context_line":"            self.openstack, f\u0027volume snapshot delete --force {snap2_id}\u0027"},{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, snap2_id, \u0027available\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        self.assertEqual("},{"line_number":96,"context_line":"            name2,"},{"line_number":97,"context_line":"            cmd_output[\"name\"],"},{"line_number":98,"context_line":"        )"},{"line_number":99,"context_line":"        self.assertEqual("},{"line_number":100,"context_line":"            self.VOLUME_ID,"},{"line_number":101,"context_line":"            cmd_output[\"volume_id\"],"},{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":"        self.assertEqual("},{"line_number":104,"context_line":"            1,"},{"line_number":105,"context_line":"            cmd_output[\"size\"],"},{"line_number":106,"context_line":"        )"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        raw_output \u003d self.openstack("},{"line_number":109,"context_line":"            \u0027volume snapshot set \u0027 + \u0027--state error \u0027 + name2"}],"source_content_type":"text/x-python","patch_set":11,"id":"84478992_8dbfd782","line":106,"range":{"start_line":81,"start_character":0,"end_line":106,"end_character":9},"in_reply_to":"6c302490_5825b0b2","updated":"2026-01-21 12:47:19.000000000","message":"Done","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"9217ef427135df6f9364ebb28b115efa68e12fbd","unresolved":true,"context_lines":[{"line_number":78,"context_line":"        self.assertEqual(1, snapshot_info[\"size\"])"},{"line_number":79,"context_line":"        self.assertEqual(\"available\", snapshot_info[\"status\"])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # list volume snapshot"},{"line_number":82,"context_line":"        name2 \u003d uuid.uuid4().hex"},{"line_number":83,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":84,"context_line":"            \u0027volume snapshot create \u0027 + name2 + \u0027 --volume \u0027 + self.VOLLY,"},{"line_number":85,"context_line":"            parse_output\u003dTrue,"},{"line_number":86,"context_line":"        )"},{"line_number":87,"context_line":"        snap2_id \u003d cmd_output[\u0027id\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self.addCleanup(self.wait_for_delete, \u0027volume snapshot\u0027, snap2_id)"},{"line_number":90,"context_line":"        self.addCleanup("},{"line_number":91,"context_line":"            self.openstack, f\u0027volume snapshot delete --force {snap2_id}\u0027"},{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":"        self.wait_for_status(\u0027volume snapshot\u0027, snap2_id, \u0027available\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        self.assertEqual("},{"line_number":96,"context_line":"            name2,"},{"line_number":97,"context_line":"            cmd_output[\"name\"],"},{"line_number":98,"context_line":"        )"},{"line_number":99,"context_line":"        self.assertEqual("},{"line_number":100,"context_line":"            self.VOLUME_ID,"},{"line_number":101,"context_line":"            cmd_output[\"volume_id\"],"},{"line_number":102,"context_line":"        )"},{"line_number":103,"context_line":"        self.assertEqual("},{"line_number":104,"context_line":"            1,"},{"line_number":105,"context_line":"            cmd_output[\"size\"],"},{"line_number":106,"context_line":"        )"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        raw_output \u003d self.openstack("},{"line_number":109,"context_line":"            \u0027volume snapshot set \u0027 + \u0027--state error \u0027 + name2"}],"source_content_type":"text/x-python","patch_set":11,"id":"6c302490_5825b0b2","line":106,"range":{"start_line":81,"start_character":0,"end_line":106,"end_character":9},"in_reply_to":"fbf11fd2_27b95121","updated":"2025-11-23 11:38:48.000000000","message":"You were absolutely right.\nI removed the misleading comment and restructured the sequence so that **only one snapshot** is created and used across all list related tests.\n\nPreviously, the tests created a second snapshot because an older version of the functional test used two snapshots, and I initially followed that style.\nAs I mentioned in before comment, now snapshot test has been consolidated into a single method and we can safely reuse the same snapshot, I refactored the flow to consistently operate on a single snapshot instead of creating an additional one.","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6e30317ad0051bf160e638541716bed00bb55950","unresolved":true,"context_lines":[{"line_number":105,"context_line":"            cmd_output[\"size\"],"},{"line_number":106,"context_line":"        )"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        raw_output \u003d self.openstack("},{"line_number":109,"context_line":"            \u0027volume snapshot set \u0027 + \u0027--state error \u0027 + name2"},{"line_number":110,"context_line":"        )"},{"line_number":111,"context_line":"        self.assertOutput(\u0027\u0027, raw_output)"}],"source_content_type":"text/x-python","patch_set":11,"id":"d36967f9_6a63a38b","line":108,"updated":"2025-11-12 12:16:53.000000000","message":"```suggestion\n        # update volume snapshot\n        raw_output \u003d self.openstack(\n```","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"9217ef427135df6f9364ebb28b115efa68e12fbd","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            cmd_output[\"size\"],"},{"line_number":106,"context_line":"        )"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        raw_output \u003d self.openstack("},{"line_number":109,"context_line":"            \u0027volume snapshot set \u0027 + \u0027--state error \u0027 + name2"},{"line_number":110,"context_line":"        )"},{"line_number":111,"context_line":"        self.assertOutput(\u0027\u0027, raw_output)"}],"source_content_type":"text/x-python","patch_set":11,"id":"2b66effa_04162ad2","line":108,"in_reply_to":"d36967f9_6a63a38b","updated":"2025-11-23 11:38:48.000000000","message":"The update behavior is now tested entirely through `set volume snapshot`, making the comment redundant.","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6e30317ad0051bf160e638541716bed00bb55950","unresolved":true,"context_lines":[{"line_number":137,"context_line":"        self.assertIn(name1, names)"},{"line_number":138,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # set volume snapshot"},{"line_number":141,"context_line":"        new_name \u003d name1 + \"_\""},{"line_number":142,"context_line":"        raw_output \u003d self.openstack("},{"line_number":143,"context_line":"            \u0027volume snapshot set \u0027"},{"line_number":144,"context_line":"            + \u0027--name \u0027"},{"line_number":145,"context_line":"            + new_name"},{"line_number":146,"context_line":"            + \u0027 --description bbbb \u0027"},{"line_number":147,"context_line":"            + \u0027--property Alpha\u003dc \u0027"},{"line_number":148,"context_line":"            + \u0027--property Beta\u003db \u0027"},{"line_number":149,"context_line":"            + snap1_id,"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        self.assertOutput(\u0027\u0027, raw_output)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":154,"context_line":"            \u0027volume snapshot show \u0027 + new_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"4be9d510_e9112e15","line":151,"range":{"start_line":140,"start_character":0,"end_line":151,"end_character":41},"updated":"2025-11-12 12:16:53.000000000","message":"Could you combine this `set` call with the one above that changes the state? It seems unnecessary to call this more than once.","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":38262,"name":"Yoonsoo Kim","display_name":"Yoonsoo Kim","email":"yoonsookim1102@gmail.com","username":"asdasd7183"},"change_message_id":"9217ef427135df6f9364ebb28b115efa68e12fbd","unresolved":true,"context_lines":[{"line_number":137,"context_line":"        self.assertIn(name1, names)"},{"line_number":138,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # set volume snapshot"},{"line_number":141,"context_line":"        new_name \u003d name1 + \"_\""},{"line_number":142,"context_line":"        raw_output \u003d self.openstack("},{"line_number":143,"context_line":"            \u0027volume snapshot set \u0027"},{"line_number":144,"context_line":"            + \u0027--name \u0027"},{"line_number":145,"context_line":"            + new_name"},{"line_number":146,"context_line":"            + \u0027 --description bbbb \u0027"},{"line_number":147,"context_line":"            + \u0027--property Alpha\u003dc \u0027"},{"line_number":148,"context_line":"            + \u0027--property Beta\u003db \u0027"},{"line_number":149,"context_line":"            + snap1_id,"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        self.assertOutput(\u0027\u0027, raw_output)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":154,"context_line":"            \u0027volume snapshot show \u0027 + new_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"f3d22de3_d6782caa","line":151,"range":{"start_line":140,"start_character":0,"end_line":151,"end_character":41},"in_reply_to":"4be9d510_e9112e15","updated":"2025-11-23 11:38:48.000000000","message":"I\u0027ve redundant `set` calls as suggested.\nNow `volume snapshot set` is invoked only when it is actually needed.\n1) update the snapshot\u0027s `name`, `description`, and `properties`. #93\n2) change the state and clear all properties with `--no-property` and `--state error`. #137","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e88a078e8c52dd9ccf3654ad1e5b738ab475a734","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.assertIn(name1, names)"},{"line_number":138,"context_line":"        self.assertNotIn(name2, names)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # set volume snapshot"},{"line_number":141,"context_line":"        new_name \u003d name1 + \"_\""},{"line_number":142,"context_line":"        raw_output \u003d self.openstack("},{"line_number":143,"context_line":"            \u0027volume snapshot set \u0027"},{"line_number":144,"context_line":"            + \u0027--name \u0027"},{"line_number":145,"context_line":"            + new_name"},{"line_number":146,"context_line":"            + \u0027 --description bbbb \u0027"},{"line_number":147,"context_line":"            + \u0027--property Alpha\u003dc \u0027"},{"line_number":148,"context_line":"            + \u0027--property Beta\u003db \u0027"},{"line_number":149,"context_line":"            + snap1_id,"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        self.assertOutput(\u0027\u0027, raw_output)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        cmd_output \u003d self.openstack("},{"line_number":154,"context_line":"            \u0027volume snapshot show \u0027 + new_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"2dcafa0a_b0c362dc","line":151,"range":{"start_line":140,"start_character":0,"end_line":151,"end_character":41},"in_reply_to":"f3d22de3_d6782caa","updated":"2026-01-21 12:47:19.000000000","message":"Done","commit_id":"7d09d246a9e782f20cb9a46c5e305b53243dfc9e"}]}
