)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0c9be186d4be6a7f42a64e026498c668c197e699","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bd57eb4e_e8d936f1","updated":"2025-08-18 16:23:04.000000000","message":"Clarification. We cannot land this until *all* the nova bugfix backports are landed. Holding a -1 to prevent accidentally landing this soon after the master bugfix landed.","commit_id":"04570f21c545c619d09137ceb014e22f0f532649"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b007fc364b7a094dc377473f8f3d4e3fd8a54621","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"083d812e_fc191eeb","updated":"2025-08-18 16:16:02.000000000","message":"We can only land this after https://review.opendev.org/c/openstack/nova/+/957757 landed. But the CI will catch that.","commit_id":"04570f21c545c619d09137ceb014e22f0f532649"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e81a0afaa5662c471d52381d7b88a6b1980bd2e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e83e5362_bb7593d6","updated":"2025-08-19 12:42:06.000000000","message":"i will need to update \n\ntest_multiattach_rw_volume_update_failure as well.\n\nin the functional tests i updated this to use a cidner volume migration but that requires 2 cidner backends.\n\ni could update it to use a retryp insteast of calling swap volume but that not actully really the same thing.\n\nim inclined to update it to assert the new expected error which si what i originally did in the functional tests but im intereested in how folks woudl ike me to proceed.","commit_id":"019ae182b52af6a3ad7177e32a5e1beecc667065"}],"tempest/api/compute/admin/test_volume_swap.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5dc7029501f3da39bcc3873528a082f9265d6a72","unresolved":true,"context_lines":[{"line_number":82,"context_line":"    # so it\u0027s marked as such."},{"line_number":83,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":84,"context_line":"    @decorators.idempotent_id(\u00271769f00d-a693-4d67-a631-6a3496773813\u0027)"},{"line_number":85,"context_line":"    def test_volume_swap(self):"},{"line_number":86,"context_line":"        \"\"\"Test swapping of volume attached to server with admin user"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        The following is the scenario outline:"}],"source_content_type":"text/x-python","patch_set":2,"id":"673e5375_04a54cc6","line":85,"updated":"2025-08-19 20:35:25.000000000","message":"todo: move this to be annotated as a negitive test via attr\n\nand or add _fails to the name to make it clear that its not valid to call this api even if you are tempest as `**only**` cinder can call this now.","commit_id":"019ae182b52af6a3ad7177e32a5e1beecc667065"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a0cc67fd0d92971954daa9bf497ed08703361f6d","unresolved":true,"context_lines":[{"line_number":112,"context_line":"            validation_resources\u003dvalidation_resources,"},{"line_number":113,"context_line":"            wait_until\u003d\u0027SSHABLE\u0027"},{"line_number":114,"context_line":"        )"},{"line_number":115,"context_line":"        # Attach \"volume1\" to server"},{"line_number":116,"context_line":"        self.attach_volume(server, volume1)"},{"line_number":117,"context_line":"        # Swap volume from \"volume1\" to \"volume2\""},{"line_number":118,"context_line":"        self.assertRaises("},{"line_number":119,"context_line":"            lib_exc.Conflict, self.admin_servers_client.update_attached_volume,"},{"line_number":120,"context_line":"            server[\u0027id\u0027], volume1[\u0027id\u0027], volumeId\u003dvolume2[\u0027id\u0027])"},{"line_number":121,"context_line":"        # Verify \"volume1\" is attached to the server"},{"line_number":122,"context_line":"        vol_attachments \u003d self.servers_client.list_volume_attachments("},{"line_number":123,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":124,"context_line":"        self.assertEqual(1, len(vol_attachments))"},{"line_number":125,"context_line":"        self.assertIn(volume1[\u0027id\u0027], vol_attachments[0][\u0027volumeId\u0027])"},{"line_number":126,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":127,"context_line":"            self.volumes_client, volume1[\u0027id\u0027], \u0027in-use\u0027)"},{"line_number":128,"context_line":"        # verify \"volume2\" is still available"},{"line_number":129,"context_line":"        waiters.wait_for_volume_resource_status("},{"line_number":130,"context_line":"            self.volumes_client, volume2[\u0027id\u0027], \u0027available\u0027)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"class TestMultiAttachVolumeSwap(TestVolumeSwapBase):"},{"line_number":134,"context_line":"    \"\"\"Test swapping volume attached to multiple servers"}],"source_content_type":"text/x-python","patch_set":2,"id":"ef5e8be0_bfd54cf9","line":131,"range":{"start_line":115,"start_character":8,"end_line":131,"end_character":1},"updated":"2025-08-19 20:38:40.000000000","message":"note to reviewers i updated the logic in the previous patch to assert the new expected behvior where the swap attempt is rejected.\n\n\nhttps://review.opendev.org/c/openstack/tempest/+/957753/2/tempest/api/compute/admin/test_volume_swap.py\n\nbut i forgot to annotate/rename the test appropriately.","commit_id":"019ae182b52af6a3ad7177e32a5e1beecc667065"}],"tempest/api/compute/admin/test_volumes_negative.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5dc7029501f3da39bcc3873528a082f9265d6a72","unresolved":true,"context_lines":[{"line_number":104,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":105,"context_line":"    @decorators.idempotent_id(\u00277576d497-b7c6-44bd-9cc5-c5b4e50fec71\u0027)"},{"line_number":106,"context_line":"    @utils.services(\u0027volume\u0027)"},{"line_number":107,"context_line":"    def test_multiattach_rw_volume_update_failure(self):"},{"line_number":108,"context_line":"        \"\"\"Test swapping volume attached to multi-servers with read-write mode"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        1. Create two volumes \"vol1\" and \"vol2\""}],"source_content_type":"text/x-python","patch_set":2,"id":"0a59b17b_5f947894","line":107,"updated":"2025-08-19 20:35:25.000000000","message":"so we had to skip thsi as well\n\nthis is tricckerer as we cannot use retrpe as you cannot retype mutliattach voluem that is attached to multiple vms (or perhaps that is attached to any vm) \ncinder will block it.\n\n\nso the only way to keep the test coverage is to use cinder volume migrate to move it between 2 hosts in the same backend.\n\nthis will still be rejected by nova but with the orginal expected excption.\n\nto do this i need to refactor the test to only run if there are multipel cinder backend \n\nhttps://github.com/openstack/tempest/blob/290069b157d948b76ab04993d8b6b5ae9e74e212/tempest/scenario/test_volume_migrate_attached.py#L193-L281\n\nhas the logic that i need to verify this - extra vm to test the multi attach behvior where we rejuect ti because you cant move a multi attach volume with 2 RW attachments.\n\nthat will be accpeted on the cinder side an then nova will count the attachmetn and reject it when cidner calls the swap volume api.","commit_id":"019ae182b52af6a3ad7177e32a5e1beecc667065"}]}
