)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2a16abababfe885f7b3b1417ea65564f0a31a338","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests in VolumesSnapshotTestJSON were sharing a class-level volume"},{"line_number":10,"context_line":"(cls.volume_origin) which caused test interdependencies where a"},{"line_number":11,"context_line":"failure in one test (e.g., snapshot stuck in creating status) could"},{"line_number":12,"context_line":"cascade to other tests using the same volume."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6513078e053cae13035de26d382ecd8eecfcb51e"},{"line_number":15,"context_line":"Signed-off-by: lkuchlan \u003clkuchlan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"e100fee8_b91c8b5c","line":12,"range":{"start_line":11,"start_character":20,"end_line":12,"end_character":45},"updated":"2026-01-20 18:24:03.000000000","message":"this is interesting, will snapshot creation impact the volume state also? I mean why snapshot creation will impact the volume in any write way?","commit_id":"2470f8ac7f2420a05b407b5d9f8b5ad911bae4bf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e5614b613110cb18a11095beab2e5bab7554606a","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests in VolumesSnapshotTestJSON were sharing a class-level volume"},{"line_number":10,"context_line":"(cls.volume_origin) which caused test interdependencies where a"},{"line_number":11,"context_line":"failure in one test (e.g., snapshot stuck in creating status) could"},{"line_number":12,"context_line":"cascade to other tests using the same volume."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6513078e053cae13035de26d382ecd8eecfcb51e"},{"line_number":15,"context_line":"Signed-off-by: lkuchlan \u003clkuchlan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"d8cbeabd_c3a1fdb5","line":12,"range":{"start_line":11,"start_character":20,"end_line":12,"end_character":45},"in_reply_to":"2eadcca6_942e19e7","updated":"2026-01-20 19:54:27.000000000","message":"In that case, we should make sure volume is in good state in tearDown and recreate if needed. Because as much as we can, we should let test operate on the common resources.\n\nI am commenting in the next file how to handle it with class level common resource only.","commit_id":"2470f8ac7f2420a05b407b5d9f8b5ad911bae4bf"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"01da405454cb119c7e6356636b9362e5e0fa06bd","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests in VolumesSnapshotTestJSON were sharing a class-level volume"},{"line_number":10,"context_line":"(cls.volume_origin) which caused test interdependencies where a"},{"line_number":11,"context_line":"failure in one test (e.g., snapshot stuck in creating status) could"},{"line_number":12,"context_line":"cascade to other tests using the same volume."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I6513078e053cae13035de26d382ecd8eecfcb51e"},{"line_number":15,"context_line":"Signed-off-by: lkuchlan \u003clkuchlan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"2eadcca6_942e19e7","line":12,"range":{"start_line":11,"start_character":20,"end_line":12,"end_character":45},"in_reply_to":"e100fee8_b91c8b5c","updated":"2026-01-20 19:32:28.000000000","message":"If a snapshot remains in the creating state, it won’t be cleaned up during teardown. As a result, the volume cannot be deleted because it still has an associated snapshot. Additionally, in the case of a backup, the volume transitions into a backing-up state.","commit_id":"2470f8ac7f2420a05b407b5d9f8b5ad911bae4bf"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":35834,"name":"Yosi Ben Shimon","display_name":"Yosi Ben Shimon","email":"ybenshim@redhat.com","username":"ybenshim"},"change_message_id":"5b95a633e2e087aa8c3a633a44f57c0ba217791b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e938ebdb_4b6b60a9","updated":"2026-01-19 12:46:20.000000000","message":"Thank you, Liron!\ngood catch!\nLGTM","commit_id":"2470f8ac7f2420a05b407b5d9f8b5ad911bae4bf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ee21824d57f22e71ced63adf06fffd25e3269f15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b18b113b_1bd4b38d","updated":"2026-01-28 20:09:07.000000000","message":"thanks, lgtm","commit_id":"fdb4e1b15f32dad345932e97e61c335115935fcb"}],"tempest/api/volume/test_volumes_snapshots.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e5614b613110cb18a11095beab2e5bab7554606a","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    @classmethod"},{"line_number":39,"context_line":"    def resource_setup(cls):"},{"line_number":40,"context_line":"        super(VolumesSnapshotTestJSON, cls).resource_setup()"},{"line_number":41,"context_line":"        cls.volume_origin \u003d cls.create_volume()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @decorators.idempotent_id(\u00278567b54c-4455-446d-a1cf-651ddeaa3ff2\u0027)"},{"line_number":44,"context_line":"    @utils.services(\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c5befefc_b3c68457","side":"PARENT","line":41,"range":{"start_line":41,"start_character":46,"end_line":41,"end_character":47},"updated":"2026-01-20 19:54:27.000000000","message":"you can add \n\n    def tearDown(self):\n        super(VolumesSnapshotTestJSON, self).tearDown()\n        # Check volume and make sure it is in active state before the next test\n        # use it.\n        try:\n            vol \u003d volumes_client.show_volume(self.volume_origin[\u0027id\u0027])[\u0027volume\u0027]\n            if vol[\u0027status\u0027] !\u003d \u0027available\u0027:\n                waiters.wait_for_volume_resource_status(volumes_client,\n                                                    volume_id,\n                                                    \u0027available\u0027)\n        except:\n            self.volume_origin\u003d self.create_volume()","commit_id":"9185a2337f7470d106cc9c44b84cafc931d81ebf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3f9a769c345b7aae542262e5607c5f3594d398e","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    @classmethod"},{"line_number":39,"context_line":"    def resource_setup(cls):"},{"line_number":40,"context_line":"        super(VolumesSnapshotTestJSON, cls).resource_setup()"},{"line_number":41,"context_line":"        cls.volume_origin \u003d cls.create_volume()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @decorators.idempotent_id(\u00278567b54c-4455-446d-a1cf-651ddeaa3ff2\u0027)"},{"line_number":44,"context_line":"    @utils.services(\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef087b18_44b38330","side":"PARENT","line":41,"range":{"start_line":41,"start_character":46,"end_line":41,"end_character":47},"in_reply_to":"232177e3_41b291cb","updated":"2026-01-26 20:34:14.000000000","message":"yes, not only read-only tests share resource but write tests also can share. As you know, all tests in same test class run in serial and if resource is not deleted in test then it can be shared even any test is doing write operation on that. Only thing we need to take care is the shared resource is in good state before next test start performing operation on that resource. That is why handling that in setUp/tearDown can be a good place to do.\n\nI think checking/creating resource in tearDown looks odd so let\u0027s check and create resource in setUp method:\n\n    def setUp(self):\n        super(VolumesSnapshotTestJSON, self).setUp()\n        # Check volume and make sure it is in active state before the next test\n        # use it.\n        try:\n            vol \u003d volumes_client.show_volume(self.volume_origin[\u0027id\u0027])[\u0027volume\u0027]\n            if vol[\u0027status\u0027] !\u003d \u0027available\u0027:\n                waiters.wait_for_volume_resource_status(volumes_client,\n                                                    volume_id,\n                                                    \u0027available\u0027)\n        except:\n            self.volume_origin\u003d self.create_volume()","commit_id":"9185a2337f7470d106cc9c44b84cafc931d81ebf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ee21824d57f22e71ced63adf06fffd25e3269f15","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    @classmethod"},{"line_number":39,"context_line":"    def resource_setup(cls):"},{"line_number":40,"context_line":"        super(VolumesSnapshotTestJSON, cls).resource_setup()"},{"line_number":41,"context_line":"        cls.volume_origin \u003d cls.create_volume()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @decorators.idempotent_id(\u00278567b54c-4455-446d-a1cf-651ddeaa3ff2\u0027)"},{"line_number":44,"context_line":"    @utils.services(\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8a1f5bce_5b1f836a","side":"PARENT","line":41,"range":{"start_line":41,"start_character":46,"end_line":41,"end_character":47},"in_reply_to":"4f46c8f9_68ab1236","updated":"2026-01-28 20:09:07.000000000","message":"Done","commit_id":"9185a2337f7470d106cc9c44b84cafc931d81ebf"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"11c4ede732f6d0426567f8639b6d4efae5ac71b8","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    @classmethod"},{"line_number":39,"context_line":"    def resource_setup(cls):"},{"line_number":40,"context_line":"        super(VolumesSnapshotTestJSON, cls).resource_setup()"},{"line_number":41,"context_line":"        cls.volume_origin \u003d cls.create_volume()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @decorators.idempotent_id(\u00278567b54c-4455-446d-a1cf-651ddeaa3ff2\u0027)"},{"line_number":44,"context_line":"    @utils.services(\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"232177e3_41b291cb","side":"PARENT","line":41,"range":{"start_line":41,"start_character":46,"end_line":41,"end_character":47},"in_reply_to":"c5befefc_b3c68457","updated":"2026-01-26 10:20:46.000000000","message":"Thanks, Ghanshyam\n\nI agree that we should minimize resource creation and allow tests to operate on common resources where possible. Your proposed approach looks like a good solution.\n\nThat said, based on my understanding, to avoid this class of issues and prevent race conditions, we generally create separate resources per test. We usually rely on shared, class level resources only for tests that perform read-only (GET) operations.\n\nIf we decide to move forward with this approach, I think we should consider it more broadly and apply it consistently across Tempest, rather than handling it only in this specific test class.","commit_id":"9185a2337f7470d106cc9c44b84cafc931d81ebf"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"793036f441ae24095eab71f17c434f2a80e8ca23","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    @classmethod"},{"line_number":39,"context_line":"    def resource_setup(cls):"},{"line_number":40,"context_line":"        super(VolumesSnapshotTestJSON, cls).resource_setup()"},{"line_number":41,"context_line":"        cls.volume_origin \u003d cls.create_volume()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @decorators.idempotent_id(\u00278567b54c-4455-446d-a1cf-651ddeaa3ff2\u0027)"},{"line_number":44,"context_line":"    @utils.services(\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"4f46c8f9_68ab1236","side":"PARENT","line":41,"range":{"start_line":41,"start_character":46,"end_line":41,"end_character":47},"in_reply_to":"ef087b18_44b38330","updated":"2026-01-27 10:26:16.000000000","message":"Yes, that makes sense and is a better approach.","commit_id":"9185a2337f7470d106cc9c44b84cafc931d81ebf"}]}
