)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32670,"name":"Rodion","display_name":"lego963","email":"fpsoff@outlook.com","username":"lego963"},"change_message_id":"078827416b0669d9963902ed84e246b28030f1c6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"db02b46f_156479af","updated":"2023-06-22 07:34:08.000000000","message":"yes, you\u0027re right, but it wasn\u0027t intentional. I copied the test above L105","commit_id":"760e0175d2093994180a9a8cdb46fd7e25263c4a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"524f436415afd813a896d09882d7953554185ca0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7ad4af53_5ac4f5c6","updated":"2023-06-23 09:46:53.000000000","message":"Waiting on CI results. Looks reasonable otherwise","commit_id":"a1196bdc0ef0e951b5b9d9c4d27848fe9e83ed9d"},{"author":{"_account_id":32670,"name":"Rodion","display_name":"lego963","email":"fpsoff@outlook.com","username":"lego963"},"change_message_id":"377f7b9649fe75ffe01e2dc8220d91f6d8b8da8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3ac96b2b_f251cffc","in_reply_to":"7ad4af53_5ac4f5c6","updated":"2023-06-23 12:37:48.000000000","message":"Reverted test skip, thanks 😊","commit_id":"a1196bdc0ef0e951b5b9d9c4d27848fe9e83ed9d"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"d7fd19b109f0960ab1dfe45dd581aebb5c3a5146","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"642f4cbf_79efd967","updated":"2023-06-26 15:05:06.000000000","message":"recheck unstable","commit_id":"9fc4b9f26aeee0ed157d21c47aaad600199b4dd4"}],"openstack/tests/functional/cloud/test_compute.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dd3a69a7179c07ba3fd1210b5b2016fbb930c447","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        self.assertIsNone(self.user_cloud.detach_volume(server, volume))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_attach_volume_create_snapshot(self):"},{"line_number":119,"context_line":"        self.skipTest(\u0027Volume functional tests temporarily disabled\u0027)"},{"line_number":120,"context_line":"        server_name \u003d self.getUniqueString()"},{"line_number":121,"context_line":"        self.addCleanup(self._cleanup_servers_and_volumes, server_name)"},{"line_number":122,"context_line":"        server \u003d self.user_cloud.create_server("}],"source_content_type":"text/x-python","patch_set":2,"id":"22e91e7a_3ad9ab5e","line":119,"updated":"2023-06-21 17:37:01.000000000","message":"This is skipping the test. You probably want to remove this to ensure the new code is working as expected?","commit_id":"35b8235f1c75258436553c7f0b4e6834437ffaeb"},{"author":{"_account_id":32670,"name":"Rodion","display_name":"lego963","email":"fpsoff@outlook.com","username":"lego963"},"change_message_id":"078827416b0669d9963902ed84e246b28030f1c6","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        self.assertIsNone(self.user_cloud.detach_volume(server, volume))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_attach_volume_create_snapshot(self):"},{"line_number":119,"context_line":"        self.skipTest(\u0027Volume functional tests temporarily disabled\u0027)"},{"line_number":120,"context_line":"        server_name \u003d self.getUniqueString()"},{"line_number":121,"context_line":"        self.addCleanup(self._cleanup_servers_and_volumes, server_name)"},{"line_number":122,"context_line":"        server \u003d self.user_cloud.create_server("}],"source_content_type":"text/x-python","patch_set":2,"id":"404d3c74_015f805a","line":119,"in_reply_to":"22e91e7a_3ad9ab5e","updated":"2023-06-22 07:34:08.000000000","message":"yes, you\u0027re right, but it wasn\u0027t intentional. I copied the test above L105","commit_id":"35b8235f1c75258436553c7f0b4e6834437ffaeb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4313ddb87fb8150e4f27b1c40ab66b2aab4369e5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertIsNone(self.user_cloud.detach_volume(server, volume))"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_attach_volume_create_snapshot(self):"},{"line_number":119,"context_line":"        self.skipTest(\u0027Volume functional tests temporarily disabled\u0027)"},{"line_number":120,"context_line":"        server_name \u003d self.getUniqueString()"},{"line_number":121,"context_line":"        self.addCleanup(self._cleanup_servers_and_volumes, server_name)"},{"line_number":122,"context_line":"        server \u003d self.user_cloud.create_server("}],"source_content_type":"text/x-python","patch_set":2,"id":"b6624ab9_7c218377","line":119,"in_reply_to":"404d3c74_015f805a","updated":"2023-06-23 09:46:40.000000000","message":"Ack","commit_id":"35b8235f1c75258436553c7f0b4e6834437ffaeb"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"056e1800b0bf62e184b3abcf4901ae5cc8022a73","unresolved":true,"context_lines":[{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":"        volume \u003d self.user_cloud.create_volume(1)"},{"line_number":125,"context_line":"        vol_attachment \u003d self.user_cloud.attach_volume(server, volume)"},{"line_number":126,"context_line":"        for key in (\u0027device\u0027, \u0027volumeId\u0027):"},{"line_number":127,"context_line":"            self.assertIn(key, vol_attachment)"},{"line_number":128,"context_line":"            self.assertTrue(vol_attachment[key])  # assert string is not empty"},{"line_number":129,"context_line":"        snapshot \u003d self.user_cloud.create_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":5,"id":"64e88949_4628989a","line":126,"updated":"2023-06-23 12:24:15.000000000","message":"While the test seams reasonable I can\u0027t explain for now why it fails (with the same stuff in the test above passing - maybe timeout issue?). Actually assertIn on a resource is probably not the best thing and I would rather only leave \"self.assertIsNotNone(getattr(vol_attachment, key))\". Keep in mind server_id is a URI attribute of the VolumeAttachment and therefore might not be available in dict interface of the resource.\n\n On the other side considering scope of your change I wonder whether you need to attach volume to the server at all instead of just making forced snapshot of an unattached volume?","commit_id":"34344689bb40e094aa29b0604e21e8cffbd638d6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"455572e3fe6e841c808aa2eaf69f7ba31e6f3ec9","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":"        volume \u003d self.user_cloud.create_volume(1)"},{"line_number":125,"context_line":"        vol_attachment \u003d self.user_cloud.attach_volume(server, volume)"},{"line_number":126,"context_line":"        for key in (\u0027device\u0027, \u0027volumeId\u0027):"},{"line_number":127,"context_line":"            self.assertIn(key, vol_attachment)"},{"line_number":128,"context_line":"            self.assertTrue(vol_attachment[key])  # assert string is not empty"},{"line_number":129,"context_line":"        snapshot \u003d self.user_cloud.create_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":5,"id":"d114bcd2_1c82da3e","line":126,"in_reply_to":"64e88949_4628989a","updated":"2023-06-23 12:25:04.000000000","message":"I thought I cancelled this after spotting the issue","commit_id":"34344689bb40e094aa29b0604e21e8cffbd638d6"},{"author":{"_account_id":32670,"name":"Rodion","display_name":"lego963","email":"fpsoff@outlook.com","username":"lego963"},"change_message_id":"377f7b9649fe75ffe01e2dc8220d91f6d8b8da8f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":"        volume \u003d self.user_cloud.create_volume(1)"},{"line_number":125,"context_line":"        vol_attachment \u003d self.user_cloud.attach_volume(server, volume)"},{"line_number":126,"context_line":"        for key in (\u0027device\u0027, \u0027volumeId\u0027):"},{"line_number":127,"context_line":"            self.assertIn(key, vol_attachment)"},{"line_number":128,"context_line":"            self.assertTrue(vol_attachment[key])  # assert string is not empty"},{"line_number":129,"context_line":"        snapshot \u003d self.user_cloud.create_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":5,"id":"15228d03_bda32e9a","line":126,"in_reply_to":"d114bcd2_1c82da3e","updated":"2023-06-23 12:37:48.000000000","message":"at the same time it should be in uri and body, but this part of the code is commented out\nhttps://docs.openstack.org/api-ref/compute/?expanded\u003dlist-volume-attachments-for-an-instance-detail#list-volume-attachments-for-an-instance","commit_id":"34344689bb40e094aa29b0604e21e8cffbd638d6"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"056e1800b0bf62e184b3abcf4901ae5cc8022a73","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        )"},{"line_number":125,"context_line":"        volume \u003d self.user_cloud.create_volume(1)"},{"line_number":126,"context_line":"        vol_attachment \u003d self.user_cloud.attach_volume(server, volume)"},{"line_number":127,"context_line":"        for key in (\u0027device\u0027, \u0027serverId\u0027, \u0027volumeId\u0027):"},{"line_number":128,"context_line":"            self.assertIn(key, vol_attachment)"},{"line_number":129,"context_line":"            self.assertTrue(vol_attachment[key])  # assert string is not empty"},{"line_number":130,"context_line":"        snapshot \u003d self.user_cloud.create_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":9,"id":"44d56655_8678a163","line":127,"updated":"2023-06-23 12:24:15.000000000","message":"Considering scope of your change I wonder whether you really need to attach volume to the server at all instead of just making forced snapshot of an unattached volume?","commit_id":"9fc4b9f26aeee0ed157d21c47aaad600199b4dd4"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"5aa3447a42bec9a6f8f5161fc8b49e212615dc4a","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        )"},{"line_number":125,"context_line":"        volume \u003d self.user_cloud.create_volume(1)"},{"line_number":126,"context_line":"        vol_attachment \u003d self.user_cloud.attach_volume(server, volume)"},{"line_number":127,"context_line":"        for key in (\u0027device\u0027, \u0027serverId\u0027, \u0027volumeId\u0027):"},{"line_number":128,"context_line":"            self.assertIn(key, vol_attachment)"},{"line_number":129,"context_line":"            self.assertTrue(vol_attachment[key])  # assert string is not empty"},{"line_number":130,"context_line":"        snapshot \u003d self.user_cloud.create_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":9,"id":"aa379f20_b5f2b9e2","line":127,"in_reply_to":"170edb45_eacc391b","updated":"2023-06-23 12:39:03.000000000","message":"ok, if that is the case - sure.","commit_id":"9fc4b9f26aeee0ed157d21c47aaad600199b4dd4"},{"author":{"_account_id":32670,"name":"Rodion","display_name":"lego963","email":"fpsoff@outlook.com","username":"lego963"},"change_message_id":"377f7b9649fe75ffe01e2dc8220d91f6d8b8da8f","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        )"},{"line_number":125,"context_line":"        volume \u003d self.user_cloud.create_volume(1)"},{"line_number":126,"context_line":"        vol_attachment \u003d self.user_cloud.attach_volume(server, volume)"},{"line_number":127,"context_line":"        for key in (\u0027device\u0027, \u0027serverId\u0027, \u0027volumeId\u0027):"},{"line_number":128,"context_line":"            self.assertIn(key, vol_attachment)"},{"line_number":129,"context_line":"            self.assertTrue(vol_attachment[key])  # assert string is not empty"},{"line_number":130,"context_line":"        snapshot \u003d self.user_cloud.create_volume_snapshot("}],"source_content_type":"text/x-python","patch_set":9,"id":"170edb45_eacc391b","line":127,"in_reply_to":"44d56655_8678a163","updated":"2023-06-23 12:37:48.000000000","message":"You are partially right, but I just wanted to check whether it is possible to make a snapshot with an attached volume. At the moment I can\u0027t make snapshots from a volume that is attached without `force`. I mean, it makes no sense to check `force` param without an attached volume","commit_id":"9fc4b9f26aeee0ed157d21c47aaad600199b4dd4"}]}
