)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"7c712089443d45583492668fe3c51f538df868ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9c0df90d_df6700cc","updated":"2026-01-28 23:33:52.000000000","message":"Prasant, can you take a look at the Zuul failures and either update the code or request a recheck?","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"5bfbc72f8bc9f32e271a26bf67aef26cade8d7b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a48193cd_af99066d","updated":"2026-02-12 04:56:27.000000000","message":"recheck","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"2fde86f160aededd8575d831cc593b1b758e2705","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b59c5339_a6c57d52","updated":"2026-01-19 07:24:34.000000000","message":"retry","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"9926b316c6ff0d4afbb78526a602aa49be67ee71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"07ce11b6_5d45c29d","updated":"2026-02-10 04:55:03.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"9b1c18ae78b240bfe33d480804afd2214ac5c5cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0af100f0_a90649bc","updated":"2026-02-14 05:48:39.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"1ed47e1bcb10cb2e6a5bb86528019e7862cf92a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"222b0d76_47bb1b86","updated":"2026-02-03 10:19:26.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"628e5ccc675ebd77cddcfb8779f6532a057bc20b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"43b3a462_f4c2a93e","updated":"2026-02-11 12:28:08.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"2ce01a026b1232b90975ecf3e7e61f2e87533429","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4574405f_8bc75936","updated":"2026-02-12 11:53:13.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"432dc4d696923897c5205207bd34033a69832918","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"79c900b6_bc04c71f","updated":"2026-02-13 17:58:58.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"d0e5ef109d880e8387a084d5471bca1e5d87afd5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"83d0aac2_7237b7cb","updated":"2026-02-13 16:09:44.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"2433f4420142c4d5629f75dacf9d11fe23ba2922","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"887fccb1_8aca8091","updated":"2026-01-19 09:23:43.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"484cd16f02be90cc7c46c7111391d6be5f724e41","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8db36576_2dab897b","updated":"2026-01-22 05:54:39.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"42f2bd5349fbb0dd32632bfe4002916963e2c9ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9dd8ff8a_9cdfc8dd","updated":"2026-02-09 08:06:55.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"1b78c71ba6c99c0baecdaf4c3a240d18882cd1db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"aec2c530_cb605416","updated":"2026-02-13 14:29:01.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"fd3c017d644908f69fe347c946450a920455c17e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"cebed1d3_7f4c8a03","updated":"2026-02-12 06:55:02.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"c738625dc39135be72907ec45f394d462129150d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"cfcbb79d_bc95a621","updated":"2026-02-03 13:54:44.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":37784,"name":"Abhishek Gupta","display_name":"Abhishek Gupta","email":"Abhishek_Gupta14@Dell.com","username":"abhishek-gupta14"},"change_message_id":"0a959cfa05b9ab0f796df4764d2389c926d5290d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d25556a0_70aa86f2","updated":"2026-01-19 07:25:48.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":37784,"name":"Abhishek Gupta","display_name":"Abhishek Gupta","email":"Abhishek_Gupta14@Dell.com","username":"abhishek-gupta14"},"change_message_id":"e20eabb0c9698397a4511c90f4a87b78d08985eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d298c47e_a81d3c1e","updated":"2026-01-19 19:38:31.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"4fd47d2a1fe795d4604a18da902c0fe23fc20a41","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d4fdb329_458dd889","updated":"2026-02-10 05:29:17.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":37792,"name":"Dell Openstack CI","display_name":"Dell Openstack CI","email":"dellopenstackci@dell.com","username":"dellopenstackci"},"change_message_id":"f9eda3e1e5f0a10d98be65970c109edfeeed024c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e1f93e3d_e3664120","updated":"2026-02-09 09:37:46.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"adb5ade2c03689a59db64f8658daca032257326e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f27d073b_77e8c5aa","updated":"2026-02-12 10:05:59.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"77cf0dc0a4142f054903cb35162bdcafab530cb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fba023c3_e0473d7b","updated":"2026-02-03 07:03:46.000000000","message":"run-DellEMC PowerStore CI","commit_id":"e55599db68a27369de0cf787a5aad4bc25f701c0"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"bffa085a0e4b6672bfffb16735b3377d1d361434","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4b8113eb_2c3aa3da","updated":"2026-04-13 08:21:54.000000000","message":"Please resolve PEP issues and resubmit","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"6bba019c2d670bfe074baab0fa48276913a8bee3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"14a313e1_372f7cf9","updated":"2026-08-28 11:36:24.000000000","message":"Please resolve merge conflicts","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"6124f4222da9834809ef8c0f615a1c0993de9efb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2f83dbbd_76a1fdd5","updated":"2026-09-08 06:09:43.000000000","message":"leaving a general note rather then repeating inline\n\nreading through this, the patch looks like generated code that hasn\u0027t had a careful human pass afterwards - patch this size needs a author to go back over it and check more carefully.\n\nthis shows up most in the tests, several of them repeat the same thing and some mock so much that the code they are meant to test never runs - best to have second look on tests.\n\nnot asking for a rewrite, but I think this needs a pass by hand before it\u0027s\nworth more review time from community. \nhappy to look again once that\u0027s done. preferably as small patches - split it into series if that helps.","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"b25186e82bf6f723a418c2107d29c134d8752f4a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"8b30e785_f5a73224","updated":"2026-09-04 01:32:18.000000000","message":"run-DellEMC PowerStore CI","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"cf37a03bc9095ca503934eb4bcbf4dfca91bcb4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"e2c14100_4bac46de","updated":"2026-09-23 07:35:13.000000000","message":"This is a solid feature implementation with good test coverage. \nThe main concern is session cleanup on failure, which should be addressed before merge","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"2bda91b210dbe69b5c3b45d24f7360580bbadeec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"82f61d13_f129ee36","updated":"2026-09-24 05:46:47.000000000","message":"recheck","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"7dbfa829f1d3dd1905b47c40858578040dcfbb50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"18792648_ed4f44ea","updated":"2026-09-26 05:25:42.000000000","message":"please don\u0027t resolve, just address","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"b409028d3aebc16936e75dd622df2ac3eacc35c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"1d3eaef7_b4a8d1c4","updated":"2026-09-25 08:02:27.000000000","message":"recheck","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"79480b290f61ac82a22f1a19b53af635aced4176","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b0d1b4ec_c6bbdd19","updated":"2026-09-29 12:33:04.000000000","message":"recheck","commit_id":"a54ce817fb3723918aa6b3a95b63bed02502003a"}],"cinder/opts.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"6124f4222da9834809ef8c0f615a1c0993de9efb","unresolved":true,"context_lines":[{"line_number":331,"context_line":"                cinder_zonemanager_drivers_cisco_ciscofczonedriver.cisco_opts,"},{"line_number":332,"context_line":"                cinder_zonemanager_fczonemanager.zone_manager_opts,"},{"line_number":333,"context_line":"            )),"},{"line_number":334,"context_line":"        (\u0027group\u0027,"},{"line_number":335,"context_line":"            itertools.chain("},{"line_number":336,"context_line":"                cinder_volume_drivers_dell_emc_powerstore_utils.backend_opts,"},{"line_number":337,"context_line":"            )),"}],"source_content_type":"text/x-python","patch_set":10,"id":"8c8e82da_c72733ff","line":334,"range":{"start_line":334,"start_character":10,"end_line":334,"end_character":15},"updated":"2026-09-08 06:09:43.000000000","message":"^^ \nliterally named \u0027group\u0027, it will show up as a [group] section, and config refrences","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"8d361f1f3bc99520216b7861542606d0902e5cb6","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                cinder_zonemanager_drivers_cisco_ciscofczonedriver.cisco_opts,"},{"line_number":332,"context_line":"                cinder_zonemanager_fczonemanager.zone_manager_opts,"},{"line_number":333,"context_line":"            )),"},{"line_number":334,"context_line":"        (\u0027group\u0027,"},{"line_number":335,"context_line":"            itertools.chain("},{"line_number":336,"context_line":"                cinder_volume_drivers_dell_emc_powerstore_utils.backend_opts,"},{"line_number":337,"context_line":"            )),"}],"source_content_type":"text/x-python","patch_set":10,"id":"5eebef2f_99c41081","line":334,"range":{"start_line":334,"start_character":10,"end_line":334,"end_character":15},"in_reply_to":"8c8e82da_c72733ff","updated":"2026-09-22 11:17:56.000000000","message":"Done","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"}],"cinder/tests/unit/volume/drivers/dell_emc/powerstore/test_client.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"9e4f3ff150fe9a73ac3fab778ac2946a9facc851","unresolved":true,"context_lines":[{"line_number":534,"context_line":"        self, mock_request"},{"line_number":535,"context_line":"    ):"},{"line_number":536,"context_line":"        mock_request.return_value \u003d MockResponse("},{"line_number":537,"context_line":"            content\u003d{\"error\": \"boom\"}, rc\u003d500"},{"line_number":538,"context_line":"        )"},{"line_number":539,"context_line":"        self.assertRaises("},{"line_number":540,"context_line":"            exception.VolumeBackendAPIException,"}],"source_content_type":"text/x-python","patch_set":13,"id":"f34082f7_3f81a88b","line":537,"updated":"2026-09-24 06:55:55.000000000","message":"this doesn\u0027t prove much, it silently loops 120 times and still raise.\n\nno call_count assertion - so it passes identically wherehter code passes or hangs for an hour","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"bbfb74ca587e39aa9787d6d22fbf87e27d098e29","unresolved":false,"context_lines":[{"line_number":534,"context_line":"        self, mock_request"},{"line_number":535,"context_line":"    ):"},{"line_number":536,"context_line":"        mock_request.return_value \u003d MockResponse("},{"line_number":537,"context_line":"            content\u003d{\"error\": \"boom\"}, rc\u003d500"},{"line_number":538,"context_line":"        )"},{"line_number":539,"context_line":"        self.assertRaises("},{"line_number":540,"context_line":"            exception.VolumeBackendAPIException,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5944890a_8c3407c8","line":537,"in_reply_to":"f34082f7_3f81a88b","updated":"2026-09-25 05:37:57.000000000","message":"Done","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"9e4f3ff150fe9a73ac3fab778ac2946a9facc851","unresolved":true,"context_lines":[{"line_number":593,"context_line":"            self.client.get_family_id,"},{"line_number":594,"context_line":"            \"vol-2\","},{"line_number":595,"context_line":"        )"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"    @mock.patch(\"requests.request\")"},{"line_number":598,"context_line":"    def test_get_family_id_missing_family_id_raises(self,"},{"line_number":599,"context_line":"                                                    mock_request):"}],"source_content_type":"text/x-python","patch_set":13,"id":"360162e2_1e9b03d5","line":596,"updated":"2026-09-24 06:55:55.000000000","message":"assert call_count.\nmost of these are duplicte and may be consolidated in single test using ddt","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"bbfb74ca587e39aa9787d6d22fbf87e27d098e29","unresolved":false,"context_lines":[{"line_number":593,"context_line":"            self.client.get_family_id,"},{"line_number":594,"context_line":"            \"vol-2\","},{"line_number":595,"context_line":"        )"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"    @mock.patch(\"requests.request\")"},{"line_number":598,"context_line":"    def test_get_family_id_missing_family_id_raises(self,"},{"line_number":599,"context_line":"                                                    mock_request):"}],"source_content_type":"text/x-python","patch_set":13,"id":"242e6525_e4a5bf36","line":596,"in_reply_to":"360162e2_1e9b03d5","updated":"2026-09-25 05:37:57.000000000","message":"Done","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"7dbfa829f1d3dd1905b47c40858578040dcfbb50","unresolved":true,"context_lines":[{"line_number":556,"context_line":"            \"sess-7\","},{"line_number":557,"context_line":"        )"},{"line_number":558,"context_line":"        self.assertEqual(mock_request.call_count, 120)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    @mock.patch(\"requests.request\")"},{"line_number":561,"context_line":"    def test_cutover_migration_session_success(self,"},{"line_number":562,"context_line":"                                               mock_request):"}],"source_content_type":"text/x-python","patch_set":14,"id":"6ccb546c_160f047e","line":559,"updated":"2026-09-26 05:25:42.000000000","message":"all tests are happy-paths for `wait_for_migration_completion` and dont seems to be retry.\ncovering terminal-state or never\ncan you add a sequence side_effect like `in-progress -\u003e in-progress -\u003e Completed` (retry few times, then succeed)\n\n```\nMockResponse(content\u003d{\"state\": \"Syncing\"}, rc\u003d200)\nMockResponse(content\u003d{\"state\": \"Syncing\"}, rc\u003d200)\nMockResponse(content\u003d{\"state\": \"Completed\"}, rc\u003d200)\n```","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"254560a8df3a39b021eb77d0cbfd6e5687d47402","unresolved":true,"context_lines":[{"line_number":556,"context_line":"            \"sess-7\","},{"line_number":557,"context_line":"        )"},{"line_number":558,"context_line":"        self.assertEqual(mock_request.call_count, 120)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    @mock.patch(\"requests.request\")"},{"line_number":561,"context_line":"    def test_cutover_migration_session_success(self,"},{"line_number":562,"context_line":"                                               mock_request):"}],"source_content_type":"text/x-python","patch_set":14,"id":"24d9fe64_d7eb42bd","line":559,"in_reply_to":"6ccb546c_160f047e","updated":"2026-09-29 09:55:33.000000000","message":"Addressed. Added a retry-success test using the sequence:\n\nSyncing -\u003e Syncing -\u003e Completed","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"}],"cinder/tests/unit/volume/drivers/dell_emc/powerstore/test_volume_migrate.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"6124f4222da9834809ef8c0f615a1c0993de9efb","unresolved":true,"context_lines":[{"line_number":20,"context_line":"# Third-party"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Project (OpenStack Cinder)"},{"line_number":24,"context_line":"from cinder import context"},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder.tests.unit import fake_volume as fvol"}],"source_content_type":"text/x-python","patch_set":10,"id":"50f044f5_d767b885","line":23,"updated":"2026-09-08 06:09:43.000000000","message":"nit: remove these comments, check existing code for ref","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"8d361f1f3bc99520216b7861542606d0902e5cb6","unresolved":false,"context_lines":[{"line_number":20,"context_line":"# Third-party"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Project (OpenStack Cinder)"},{"line_number":24,"context_line":"from cinder import context"},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder.tests.unit import fake_volume as fvol"}],"source_content_type":"text/x-python","patch_set":10,"id":"96910717_34f4a38b","line":23,"in_reply_to":"50f044f5_d767b885","updated":"2026-09-22 11:17:56.000000000","message":"Done","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"6124f4222da9834809ef8c0f615a1c0993de9efb","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        self._vals[key] \u003d val"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class TestDriverMigrateVolume(cinder_test.TestCase):"},{"line_number":55,"context_line":"    \"\"\"Unit tests for driver.migrate_volume() with adapter calls mocked.\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5dd39fe5_3ffee0e7","line":54,"updated":"2026-09-08 06:09:43.000000000","message":"Why not use `powerstore.TestPowerStoreDriver` here ? \nsee other tests -  all other volume-operation tests in powestore are build on it","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"8d361f1f3bc99520216b7861542606d0902e5cb6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        self._vals[key] \u003d val"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class TestDriverMigrateVolume(cinder_test.TestCase):"},{"line_number":55,"context_line":"    \"\"\"Unit tests for driver.migrate_volume() with adapter calls mocked.\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"6e4b5cf5_840e9ac8","line":54,"in_reply_to":"5dd39fe5_3ffee0e7","updated":"2026-09-22 11:17:56.000000000","message":"Done","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"6124f4222da9834809ef8c0f615a1c0993de9efb","unresolved":true,"context_lines":[{"line_number":455,"context_line":"    # since the driver does not expose \u0027automatic_cutover\u0027 kwarg."},{"line_number":456,"context_line":""},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"class DummyException(Exception):"},{"line_number":459,"context_line":"    \"\"\"Test replacement for VolumeBackendAPIException.\"\"\""},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"13410d8c_55ec587a","line":458,"range":{"start_line":458,"start_character":6,"end_line":458,"end_character":20},"updated":"2026-09-08 06:09:43.000000000","message":"^^ !!","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"8d361f1f3bc99520216b7861542606d0902e5cb6","unresolved":false,"context_lines":[{"line_number":455,"context_line":"    # since the driver does not expose \u0027automatic_cutover\u0027 kwarg."},{"line_number":456,"context_line":""},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"class DummyException(Exception):"},{"line_number":459,"context_line":"    \"\"\"Test replacement for VolumeBackendAPIException.\"\"\""},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7e288c4c_04e625f2","line":458,"range":{"start_line":458,"start_character":6,"end_line":458,"end_character":20},"in_reply_to":"13410d8c_55ec587a","updated":"2026-09-22 11:17:56.000000000","message":"Done","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"}],"cinder/volume/drivers/dell_emc/powerstore/adapter.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"319fd058f888dff3d5f1443e632f5a9aca2d9f3b","unresolved":true,"context_lines":[{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"        if not source_appliance:"},{"line_number":1008,"context_line":"            # fallback to THIS driver\u0027s configured appliance_id"},{"line_number":1009,"context_line":"            source_appliance \u003d self.configuration.safe_get(\"appliance_id\")"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"        if not source_appliance:"},{"line_number":1012,"context_line":"            msg \u003d ("}],"source_content_type":"text/x-python","patch_set":9,"id":"d3cfb686_117273f8","line":1009,"updated":"2026-04-15 05:29:07.000000000","message":"I am not finding any configuration in CommonAdapter. you may have to use imported configuration. self not required.","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"c747cb71029d8fad87b26f44fa22186e55f57ac5","unresolved":false,"context_lines":[{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"        if not source_appliance:"},{"line_number":1008,"context_line":"            # fallback to THIS driver\u0027s configured appliance_id"},{"line_number":1009,"context_line":"            source_appliance \u003d self.configuration.safe_get(\"appliance_id\")"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"        if not source_appliance:"},{"line_number":1012,"context_line":"            msg \u003d ("}],"source_content_type":"text/x-python","patch_set":9,"id":"f426cf2a_143873bf","line":1009,"in_reply_to":"d3cfb686_117273f8","updated":"2026-05-26 07:58:52.000000000","message":"Done","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"319fd058f888dff3d5f1443e632f5a9aca2d9f3b","unresolved":true,"context_lines":[{"line_number":1123,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"            try:"},{"line_number":1126,"context_line":"                self.cutover_migration_session(session_id)"},{"line_number":1127,"context_line":"            except Exception as e:"},{"line_number":1128,"context_line":"                msg \u003d ("},{"line_number":1129,"context_line":"                    \"Failed to initiate cutover for migration session %s: %s\""}],"source_content_type":"text/x-python","patch_set":9,"id":"58ccea53_00a08040","line":1126,"updated":"2026-04-15 05:29:07.000000000","message":"i didn\u0027t find implementation of cutover_migration_session in adapter and super in Object. It is there in client","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"c747cb71029d8fad87b26f44fa22186e55f57ac5","unresolved":false,"context_lines":[{"line_number":1123,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1124,"context_line":""},{"line_number":1125,"context_line":"            try:"},{"line_number":1126,"context_line":"                self.cutover_migration_session(session_id)"},{"line_number":1127,"context_line":"            except Exception as e:"},{"line_number":1128,"context_line":"                msg \u003d ("},{"line_number":1129,"context_line":"                    \"Failed to initiate cutover for migration session %s: %s\""}],"source_content_type":"text/x-python","patch_set":9,"id":"76aa6c5d_01d50705","line":1126,"in_reply_to":"58ccea53_00a08040","updated":"2026-05-26 07:58:52.000000000","message":"adapter now correctly delegates to self.client.cutover_migration_session() as the implementation resides in the client layer.","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"b9463d49deed5d64021889d92129c44f056c01a4","unresolved":true,"context_lines":[{"line_number":990,"context_line":"                \"cinder-volume has been restarted.\""},{"line_number":991,"context_line":"            ) % dest_backend"},{"line_number":992,"context_line":"            LOG.error(msg)"},{"line_number":993,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        try:"},{"line_number":996,"context_line":"            volume_id \u003d self.client.get_volume_id_by_name(volume.name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"4ef55373_5e455a3c","line":993,"updated":"2026-09-22 11:50:38.000000000","message":"An unconfigured destination means this driver cannot perform storage-assisted migration; it is not necessarily a backend failure. Could this return (False, None) through the driver entry point so Cinder can fall back to host-assisted migration?","commit_id":"fa22b3775c0a8748072fe9b44a54ef7e1079a184"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"82320e07252a43b840b5618ec6ead4bf9fdb7f52","unresolved":false,"context_lines":[{"line_number":990,"context_line":"                \"cinder-volume has been restarted.\""},{"line_number":991,"context_line":"            ) % dest_backend"},{"line_number":992,"context_line":"            LOG.error(msg)"},{"line_number":993,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        try:"},{"line_number":996,"context_line":"            volume_id \u003d self.client.get_volume_id_by_name(volume.name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"51628da9_7be9ea3c","line":993,"in_reply_to":"4ef55373_5e455a3c","updated":"2026-09-23 07:10:09.000000000","message":"Done","commit_id":"fa22b3775c0a8748072fe9b44a54ef7e1079a184"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"fa280338fe148713c7a08e6f67e666bc7f466bb8","unresolved":true,"context_lines":[{"line_number":957,"context_line":"        )"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        # Validate destination host has \u0027@\u0027"},{"line_number":960,"context_line":"        # we can work without \u0027#Appliance\u0027 now"},{"line_number":961,"context_line":"        if \"@\" not in dest_host_str:"},{"line_number":962,"context_line":"            msg \u003d ("},{"line_number":963,"context_line":"                \"Destination host string \u0027%s\u0027 is invalid; expected \""}],"source_content_type":"text/x-python","patch_set":12,"id":"56684d1a_779feb46","line":960,"updated":"2026-09-23 08:24:48.000000000","message":"Should it be #Pool instead of #Appliance?","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"927cc7d85c95a7d8edae4be5c13050577b7cd69f","unresolved":false,"context_lines":[{"line_number":957,"context_line":"        )"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        # Validate destination host has \u0027@\u0027"},{"line_number":960,"context_line":"        # we can work without \u0027#Appliance\u0027 now"},{"line_number":961,"context_line":"        if \"@\" not in dest_host_str:"},{"line_number":962,"context_line":"            msg \u003d ("},{"line_number":963,"context_line":"                \"Destination host string \u0027%s\u0027 is invalid; expected \""}],"source_content_type":"text/x-python","patch_set":12,"id":"f40b671f_0218a5a2","line":960,"in_reply_to":"56684d1a_779feb46","updated":"2026-09-23 09:59:16.000000000","message":"Done","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"fa280338fe148713c7a08e6f67e666bc7f466bb8","unresolved":true,"context_lines":[{"line_number":968,"context_line":""},{"line_number":969,"context_line":"        # Build/Fetch backend-\u003eappliance map"},{"line_number":970,"context_line":"        backend_map: dict[str, str | None] \u003d ("},{"line_number":971,"context_line":"            utils.get_backend_appliance_id_mapping()"},{"line_number":972,"context_line":"        )"},{"line_number":973,"context_line":"        LOG.debug(\"Backend-\u003eAppliance mapping: %s\", backend_map)"},{"line_number":974,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"a0307ce4_72b92204","line":971,"updated":"2026-09-23 08:24:48.000000000","message":"get_backend_appliance_id_mapping() should be called once during driver initialization as it doesn\u0027t change dynamically after initialization.","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"927cc7d85c95a7d8edae4be5c13050577b7cd69f","unresolved":false,"context_lines":[{"line_number":968,"context_line":""},{"line_number":969,"context_line":"        # Build/Fetch backend-\u003eappliance map"},{"line_number":970,"context_line":"        backend_map: dict[str, str | None] \u003d ("},{"line_number":971,"context_line":"            utils.get_backend_appliance_id_mapping()"},{"line_number":972,"context_line":"        )"},{"line_number":973,"context_line":"        LOG.debug(\"Backend-\u003eAppliance mapping: %s\", backend_map)"},{"line_number":974,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ee6df9bb_21e7f5bc","line":971,"in_reply_to":"a0307ce4_72b92204","updated":"2026-09-23 09:59:16.000000000","message":"Done","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"cf37a03bc9095ca503934eb4bcbf4dfca91bcb4d","unresolved":true,"context_lines":[{"line_number":1055,"context_line":"            session_id,"},{"line_number":1056,"context_line":"            volume.id,"},{"line_number":1057,"context_line":"        )"},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"        # Trigger sync"},{"line_number":1060,"context_line":"        try:"},{"line_number":1061,"context_line":"            self.client.sync_migration_session("}],"source_content_type":"text/x-python","patch_set":12,"id":"5b82eb1b_68d3a3f7","line":1058,"updated":"2026-09-23 07:35:13.000000000","message":"If creation succeeds but sync/migration fails, the session remains orphaned in PowerStore\nRecommendation: Add cleanup/cancel logic on exception, or document session lifecycle clearly","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"927cc7d85c95a7d8edae4be5c13050577b7cd69f","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"            session_id,"},{"line_number":1056,"context_line":"            volume.id,"},{"line_number":1057,"context_line":"        )"},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"        # Trigger sync"},{"line_number":1060,"context_line":"        try:"},{"line_number":1061,"context_line":"            self.client.sync_migration_session("}],"source_content_type":"text/x-python","patch_set":12,"id":"3445f5c1_0d41fcd1","line":1058,"in_reply_to":"5b82eb1b_68d3a3f7","updated":"2026-09-23 09:59:16.000000000","message":"Done. Added cancel_migration_session() to the client (best-effort\nDELETE /migration_session/{id}).","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"fa280338fe148713c7a08e6f67e666bc7f466bb8","unresolved":true,"context_lines":[{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"            LOG.info(\"Cutover initiated for session %s\", session_id)"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"            state \u003d self.client.wait_for_migration_completion(session_id)"},{"line_number":1109,"context_line":"            LOG.info("},{"line_number":1110,"context_line":"                \"Migration session %s completed with state: %s\","},{"line_number":1111,"context_line":"                session_id,"}],"source_content_type":"text/x-python","patch_set":12,"id":"bb3ef754_acd0a72e","line":1108,"updated":"2026-09-23 08:24:48.000000000","message":"There is no timeout or max-retry guard on the second wait. If the cutover stalls, this call blocks indefinitely with no operator escape.","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"927cc7d85c95a7d8edae4be5c13050577b7cd69f","unresolved":false,"context_lines":[{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"            LOG.info(\"Cutover initiated for session %s\", session_id)"},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"            state \u003d self.client.wait_for_migration_completion(session_id)"},{"line_number":1109,"context_line":"            LOG.info("},{"line_number":1110,"context_line":"                \"Migration session %s completed with state: %s\","},{"line_number":1111,"context_line":"                session_id,"}],"source_content_type":"text/x-python","patch_set":12,"id":"6bdc630f_99d6ddd7","line":1108,"in_reply_to":"bb3ef754_acd0a72e","updated":"2026-09-23 09:59:16.000000000","message":"The wait is already bounded by @retry(interval\u003d30, retries\u003d120)\non the client method (~60 min max). Added a clarifying comment\nat the call site so the retry guard is visible to readers.","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"7dbfa829f1d3dd1905b47c40858578040dcfbb50","unresolved":true,"context_lines":[{"line_number":1108,"context_line":"        if automatic_cutover:"},{"line_number":1109,"context_line":"            if state not in (\"Completed\", \"Idle\"):"},{"line_number":1110,"context_line":"                msg \u003d _("},{"line_number":1111,"context_line":"                    \"Unexpected state %(state)s for automatic cutover \""},{"line_number":1112,"context_line":"                    \"(session %(sid)s)\""},{"line_number":1113,"context_line":"                ) % {\"state\": state, \"sid\": session_id}"},{"line_number":1114,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"8cd5559f_64a9d345","line":1111,"range":{"start_line":1111,"start_character":21,"end_line":1111,"end_character":48},"updated":"2026-09-26 05:25:42.000000000","message":"this could write `Unexpected state Failed` !! - which seems sound little ambiguous","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"254560a8df3a39b021eb77d0cbfd6e5687d47402","unresolved":true,"context_lines":[{"line_number":1108,"context_line":"        if automatic_cutover:"},{"line_number":1109,"context_line":"            if state not in (\"Completed\", \"Idle\"):"},{"line_number":1110,"context_line":"                msg \u003d _("},{"line_number":1111,"context_line":"                    \"Unexpected state %(state)s for automatic cutover \""},{"line_number":1112,"context_line":"                    \"(session %(sid)s)\""},{"line_number":1113,"context_line":"                ) % {\"state\": state, \"sid\": session_id}"},{"line_number":1114,"context_line":"                LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"d1f15628_b9f51e47","line":1111,"range":{"start_line":1111,"start_character":21,"end_line":1111,"end_character":48},"in_reply_to":"8cd5559f_64a9d345","updated":"2026-09-29 09:55:33.000000000","message":"Addressed. The adapter now distinguishes a backend-reported Failed migration from an unknown state. Failed now reports:\n\nMigration session \u003cid\u003e failed before automatic cutover.","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"902c8f359725968230319d9525ef65a40334f048","unresolved":true,"context_lines":[{"line_number":1005,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"        # Idempotency"},{"line_number":1008,"context_line":"        if source_appliance \u003d\u003d dest_appliance:"},{"line_number":1009,"context_line":"            LOG.info("},{"line_number":1010,"context_line":"                \"Volume %s is already on destination appliance %s\","},{"line_number":1011,"context_line":"                volume.id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"850e11b8_c1b6faa0","line":1008,"updated":"2026-10-25 15:42:53.000000000","message":"AlreadyOnTarget is decided by comparing the volume’s array appliance_id with powerstore_appliances_id from local config. The driver then returns (True, None), and the manager updates volume.host with no copy. Please compare this backend’s san_ip with the destination backend’s san_ip before that return. The destination appliance id is not read from the destination array. Two sections given the same appliance id on different clusters would retarget the Cinder volume to a backend that does not serve it.\n\nThe same fallback rule belongs on create failures at line 1053. A VolumeBackendAPIException before a session exists is re-raised by driver.py:235-237, and the manager does not call _migrate_volume_generic after an exception. Until create_migration_session has succeeded, return (\"\", MIGRATION_STATE_UNSUPPORTED) so the existing host copy still runs. After the session exists, keep failing closed.","commit_id":"ed1a5426622d2a0b1cd0f89407c6fec2ec3184bc"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"f679bd67d604d8849cb28bca5fa5e79a09960e1d","unresolved":true,"context_lines":[{"line_number":1005,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"        # Idempotency"},{"line_number":1008,"context_line":"        if source_appliance \u003d\u003d dest_appliance:"},{"line_number":1009,"context_line":"            LOG.info("},{"line_number":1010,"context_line":"                \"Volume %s is already on destination appliance %s\","},{"line_number":1011,"context_line":"                volume.id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"3cbdd406_64aedc09","line":1008,"in_reply_to":"850e11b8_c1b6faa0","updated":"2026-10-26 12:19:22.000000000","message":"AlreadyOnTarget now requires both matching appliance_id and matching source/destination san_ip; mismatched or unknown SAN addresses fall back to host-assisted migration. All failures before create_migration_session succeeds, including VolumeBackendAPIException, now return (\"\", MIGRATION_STATE_UNSUPPORTED). Failures after session creation still fail closed.","commit_id":"ed1a5426622d2a0b1cd0f89407c6fec2ec3184bc"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"902c8f359725968230319d9525ef65a40334f048","unresolved":true,"context_lines":[{"line_number":1042,"context_line":"        try:"},{"line_number":1043,"context_line":"            session_id, rescan_required \u003d self.client.create_migration_session("},{"line_number":1044,"context_line":"                destination_appliance_id\u003ddest_appliance,"},{"line_number":1045,"context_line":"                family_id\u003dfamily_id,"},{"line_number":1046,"context_line":"                resource_type\u003dresource_type,"},{"line_number":1047,"context_line":"                automatic_cutover\u003dautomatic_cutover,"},{"line_number":1048,"context_line":"                session_name\u003dsession_name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"0e466a0f_a27d6a83","line":1045,"updated":"2026-10-25 15:42:53.000000000","message":"family_id is sent as the migration resource. The PowerStore create-session schema says a volume migration moves the family together because the primary volume, snapshots, and clones share data.\n\nCinder rejects snapshots, replication, and group membership for the volume being migrated (cinder/volume/api.py:1759-1775, cinder/volume/manager.py:3170-3188). It does not look for other volumes in that family. VolumeManager also skips this driver method when this volume has attachments (manager.py:2697-2699). A clone is a different volume and can be attached. Cutover still moves it, and Cinder does not update that volume’s host.\n\nPlease list the family before create_migration_session. If it contains anything other than this volume, or any host mapping, return (\"\", MIGRATION_STATE_UNSUPPORTED) so the manager uses the generic single-volume copy. Please hold @coordination.synchronized on the family id from session create through cutover. coordination is already imported at line 24, and SUPPORTS_ACTIVE_ACTIVE is true. The migrating status locks only this volume id. The lock cannot be shorter than the session: sync and cutover are the conflicting window.","commit_id":"ed1a5426622d2a0b1cd0f89407c6fec2ec3184bc"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"f679bd67d604d8849cb28bca5fa5e79a09960e1d","unresolved":true,"context_lines":[{"line_number":1042,"context_line":"        try:"},{"line_number":1043,"context_line":"            session_id, rescan_required \u003d self.client.create_migration_session("},{"line_number":1044,"context_line":"                destination_appliance_id\u003ddest_appliance,"},{"line_number":1045,"context_line":"                family_id\u003dfamily_id,"},{"line_number":1046,"context_line":"                resource_type\u003dresource_type,"},{"line_number":1047,"context_line":"                automatic_cutover\u003dautomatic_cutover,"},{"line_number":1048,"context_line":"                session_name\u003dsession_name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"7e9199b5_c4ffcd0d","line":1045,"in_reply_to":"0e466a0f_a27d6a83","updated":"2026-10-26 12:19:22.000000000","message":"Addressed. Before creating a migration session, the driver lists the PowerStore family and rejects migration when additional family members or host mappings are present, returning MIGRATION_STATE_UNSUPPORTED for generic host copy. Session creation through sync, polling, cutover, and cleanup is protected by @coordination.synchronized(\"powerstore-migrate-{family_id}\").","commit_id":"ed1a5426622d2a0b1cd0f89407c6fec2ec3184bc"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"902c8f359725968230319d9525ef65a40334f048","unresolved":true,"context_lines":[{"line_number":1074,"context_line":"                \"best-effort cleanup.\","},{"line_number":1075,"context_line":"                session_id,"},{"line_number":1076,"context_line":"            )"},{"line_number":1077,"context_line":"            self.client.cancel_migration_session(session_id)"},{"line_number":1078,"context_line":"            raise"},{"line_number":1079,"context_line":""},{"line_number":1080,"context_line":"        return session_id, state"}],"source_content_type":"text/x-python","patch_set":16,"id":"0416a78f_1c6c96a2","line":1077,"updated":"2026-10-25 15:42:53.000000000","message":"Any exception from _run_migration_session, including DellPowerStoreMigrationInProgress after the poll budget, calls cancel_migration_session. That method always sends DELETE /migration_session/{id} (client.py:1133) and does not read the state first.\n\nVolumeManager then sets migration_status\u003d\u0027error\u0027 and, for a retype, restores previous_status (manager.py:2689-2690 and 2723-2729). A plain migrate of an available volume never changes status. \u0027error\u0027 is in AVAILABLE_MIGRATION_STATUS (cinder/volume/api.py:108), so the volume is attachable again. If the session is already Cutting_Over, or it reaches Completed after the last poll, that attach meets a volume the array is still moving or has already moved.\n\nPlease GET the session before deleting it. Completed should be returned as success, and the session object deleted only after that decision. Cutting_Over should keep polling. Synchronizing or Idle can be deleted and failed. PowerFlex takes the other timeout path: it returns a model update with status maintenance so the volume cannot be attached while the array operation is unfinished (cinder/volume/drivers/dell_emc/powerflex/driver.py:1480-1496).","commit_id":"ed1a5426622d2a0b1cd0f89407c6fec2ec3184bc"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"f679bd67d604d8849cb28bca5fa5e79a09960e1d","unresolved":true,"context_lines":[{"line_number":1074,"context_line":"                \"best-effort cleanup.\","},{"line_number":1075,"context_line":"                session_id,"},{"line_number":1076,"context_line":"            )"},{"line_number":1077,"context_line":"            self.client.cancel_migration_session(session_id)"},{"line_number":1078,"context_line":"            raise"},{"line_number":1079,"context_line":""},{"line_number":1080,"context_line":"        return session_id, state"}],"source_content_type":"text/x-python","patch_set":16,"id":"e43c6659_33301e9b","line":1077,"in_reply_to":"0416a78f_1c6c96a2","updated":"2026-10-26 12:19:22.000000000","message":"cancel_migration_session now GETs the session state before issuing DELETE. Completed is treated as successful and is not deleted. Cutting_Over is preserved and polling continues. Deletable states such as Synchronizing, Idle, and Failed are cleaned up normally. Tests cover GET failures, terminal states, and delete failures.","commit_id":"ed1a5426622d2a0b1cd0f89407c6fec2ec3184bc"}],"cinder/volume/drivers/dell_emc/powerstore/client.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"319fd058f888dff3d5f1443e632f5a9aca2d9f3b","unresolved":true,"context_lines":[{"line_number":1169,"context_line":"            if state in terminal_states:"},{"line_number":1170,"context_line":"                return state"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"            time.sleep(poll_interval)"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"        msg \u003d _(\"Timeout waiting for migration session %s to complete.\") % ("},{"line_number":1175,"context_line":"            session_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"4f21eec0_bf9fcc11","line":1172,"updated":"2026-04-15 05:29:07.000000000","message":"this is blocking can you check alternatives like cinder.utils.retry","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"319fd058f888dff3d5f1443e632f5a9aca2d9f3b","unresolved":true,"context_lines":[{"line_number":1169,"context_line":"            if state in terminal_states:"},{"line_number":1170,"context_line":"                return state"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"            time.sleep(poll_interval)"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"        msg \u003d _(\"Timeout waiting for migration session %s to complete.\") % ("},{"line_number":1175,"context_line":"            session_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"b9e1c322_ff8aa725","line":1172,"updated":"2026-04-15 05:29:07.000000000","message":"this is blocking can you check alternatives like cinder.utils.retry","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"c747cb71029d8fad87b26f44fa22186e55f57ac5","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"            if state in terminal_states:"},{"line_number":1170,"context_line":"                return state"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"            time.sleep(poll_interval)"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"        msg \u003d _(\"Timeout waiting for migration session %s to complete.\") % ("},{"line_number":1175,"context_line":"            session_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"b66145c6_cc69e8b3","line":1172,"in_reply_to":"4f21eec0_bf9fcc11","updated":"2026-05-26 07:58:52.000000000","message":"Done","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"c747cb71029d8fad87b26f44fa22186e55f57ac5","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"            if state in terminal_states:"},{"line_number":1170,"context_line":"                return state"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"            time.sleep(poll_interval)"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"        msg \u003d _(\"Timeout waiting for migration session %s to complete.\") % ("},{"line_number":1175,"context_line":"            session_id"}],"source_content_type":"text/x-python","patch_set":9,"id":"3969c41a_45e2a299","line":1172,"in_reply_to":"b9e1c322_ff8aa725","updated":"2026-05-26 07:58:52.000000000","message":"Done","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"9e4f3ff150fe9a73ac3fab778ac2946a9facc851","unresolved":true,"context_lines":[{"line_number":1060,"context_line":"        LOG.error(msg)"},{"line_number":1061,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    @cinder_utils.retry(exception.VolumeBackendAPIException,"},{"line_number":1064,"context_line":"                        interval\u003d30, backoff_rate\u003d1, retries\u003d120)"},{"line_number":1065,"context_line":"    def wait_for_migration_completion(self, session_id):"},{"line_number":1066,"context_line":"        \"\"\"Wait for a migration session to complete or fail.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"d32e9382_d5b977ba","line":1063,"range":{"start_line":1063,"start_character":4,"end_line":1063,"end_character":60},"updated":"2026-09-24 06:55:55.000000000","message":"this seems wrong choice - using exception as control flow.\nmay be have different exception `MigrationInProgress` to retry and fail with VolumeBackendAPIException","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"bbfb74ca587e39aa9787d6d22fbf87e27d098e29","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"        LOG.error(msg)"},{"line_number":1061,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    @cinder_utils.retry(exception.VolumeBackendAPIException,"},{"line_number":1064,"context_line":"                        interval\u003d30, backoff_rate\u003d1, retries\u003d120)"},{"line_number":1065,"context_line":"    def wait_for_migration_completion(self, session_id):"},{"line_number":1066,"context_line":"        \"\"\"Wait for a migration session to complete or fail.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"79fd3655_156995db","line":1063,"range":{"start_line":1063,"start_character":4,"end_line":1063,"end_character":60},"in_reply_to":"d32e9382_d5b977ba","updated":"2026-09-25 05:37:57.000000000","message":"Done","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"9e4f3ff150fe9a73ac3fab778ac2946a9facc851","unresolved":true,"context_lines":[{"line_number":1070,"context_line":"            \"/migration_session/%s\" % session_id,"},{"line_number":1071,"context_line":"            params\u003d{\"select\": \"*\"},"},{"line_number":1072,"context_line":"        )"},{"line_number":1073,"context_line":"        if r.status_code not in self.ok_codes:"},{"line_number":1074,"context_line":"            msg \u003d _("},{"line_number":1075,"context_line":"                \"Failed to fetch migration session status \""},{"line_number":1076,"context_line":"                \"for ID %s.\""},{"line_number":1077,"context_line":"            ) % session_id"},{"line_number":1078,"context_line":"            LOG.error(msg)"},{"line_number":1079,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1080,"context_line":""},{"line_number":1081,"context_line":"        state \u003d response.get(\"state\")"},{"line_number":1082,"context_line":"        LOG.info("}],"source_content_type":"text/x-python","patch_set":13,"id":"38ff3873_232844c5","line":1079,"range":{"start_line":1073,"start_character":8,"end_line":1079,"end_character":63},"updated":"2026-09-24 06:55:55.000000000","message":"this could be a real issue, then why try again and agian till `30 * 120` sec\n\nso we should try to know at this point by status-code, why it failed, and fast-fail or retry on that bases - 1 hour is too much waiting on assumptions.","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"bbfb74ca587e39aa9787d6d22fbf87e27d098e29","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"            \"/migration_session/%s\" % session_id,"},{"line_number":1071,"context_line":"            params\u003d{\"select\": \"*\"},"},{"line_number":1072,"context_line":"        )"},{"line_number":1073,"context_line":"        if r.status_code not in self.ok_codes:"},{"line_number":1074,"context_line":"            msg \u003d _("},{"line_number":1075,"context_line":"                \"Failed to fetch migration session status \""},{"line_number":1076,"context_line":"                \"for ID %s.\""},{"line_number":1077,"context_line":"            ) % session_id"},{"line_number":1078,"context_line":"            LOG.error(msg)"},{"line_number":1079,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1080,"context_line":""},{"line_number":1081,"context_line":"        state \u003d response.get(\"state\")"},{"line_number":1082,"context_line":"        LOG.info("}],"source_content_type":"text/x-python","patch_set":13,"id":"8dd69f27_36118626","line":1079,"range":{"start_line":1073,"start_character":8,"end_line":1079,"end_character":63},"in_reply_to":"38ff3873_232844c5","updated":"2026-09-25 05:37:57.000000000","message":"Fixed","commit_id":"43522acc00009aba9984f906f32e7aaf2938adfb"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"7dbfa829f1d3dd1905b47c40858578040dcfbb50","unresolved":true,"context_lines":[{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    @cinder_utils.retry("},{"line_number":1064,"context_line":"        powerstore_exception.DellPowerStoreMigrationInProgress,"},{"line_number":1065,"context_line":"        interval\u003d30, backoff_rate\u003d1, retries\u003d120)"},{"line_number":1066,"context_line":"    def wait_for_migration_completion(self, session_id):"},{"line_number":1067,"context_line":"        \"\"\"Wait for a migration session to complete or fail."},{"line_number":1068,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"a9831fc9_1648e384","line":1065,"range":{"start_line":1065,"start_character":8,"end_line":1065,"end_character":48},"updated":"2026-09-26 05:25:42.000000000","message":"I meant to imply it already - marking it resolved didn\u0027t address it.\n\nthis should be configurable - 1 hour is too much for default.\nalso this would be depend on size of volume which is migrating","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"254560a8df3a39b021eb77d0cbfd6e5687d47402","unresolved":true,"context_lines":[{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    @cinder_utils.retry("},{"line_number":1064,"context_line":"        powerstore_exception.DellPowerStoreMigrationInProgress,"},{"line_number":1065,"context_line":"        interval\u003d30, backoff_rate\u003d1, retries\u003d120)"},{"line_number":1066,"context_line":"    def wait_for_migration_completion(self, session_id):"},{"line_number":1067,"context_line":"        \"\"\"Wait for a migration session to complete or fail."},{"line_number":1068,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"39843274_154774c0","line":1065,"range":{"start_line":1065,"start_character":8,"end_line":1065,"end_character":48},"in_reply_to":"a9831fc9_1648e384","updated":"2026-09-29 09:55:33.000000000","message":"Addressed. Migration polling is now configurable through:\n\npowerstore_migration_poll_interval\npowerstore_migration_poll_retries","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"7dbfa829f1d3dd1905b47c40858578040dcfbb50","unresolved":true,"context_lines":[{"line_number":1072,"context_line":"        exception so transient \"in-progress\" polls are retried while"},{"line_number":1073,"context_line":"        real failures fast-fail."},{"line_number":1074,"context_line":"        \"\"\""},{"line_number":1075,"context_line":"        terminal_states \u003d [\"Completed\", \"Failed\", \"Idle\","},{"line_number":1076,"context_line":"                           \"System_Paused\"]"},{"line_number":1077,"context_line":"        r, response \u003d self._send_get_request("},{"line_number":1078,"context_line":"            \"/migration_session/%s\" % session_id,"},{"line_number":1079,"context_line":"            params\u003d{\"select\": \"*\"},"}],"source_content_type":"text/x-python","patch_set":14,"id":"c032bb79_9f9446eb","line":1076,"range":{"start_line":1075,"start_character":8,"end_line":1076,"end_character":43},"updated":"2026-09-26 05:25:42.000000000","message":"so these session-states are backend defined values right!!\n\nfor now these are repeted as string here and in adapter, probably other palces as well, these should be driver-level constants and used always within driver instead of hardcoding eveytime.","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"254560a8df3a39b021eb77d0cbfd6e5687d47402","unresolved":true,"context_lines":[{"line_number":1072,"context_line":"        exception so transient \"in-progress\" polls are retried while"},{"line_number":1073,"context_line":"        real failures fast-fail."},{"line_number":1074,"context_line":"        \"\"\""},{"line_number":1075,"context_line":"        terminal_states \u003d [\"Completed\", \"Failed\", \"Idle\","},{"line_number":1076,"context_line":"                           \"System_Paused\"]"},{"line_number":1077,"context_line":"        r, response \u003d self._send_get_request("},{"line_number":1078,"context_line":"            \"/migration_session/%s\" % session_id,"},{"line_number":1079,"context_line":"            params\u003d{\"select\": \"*\"},"}],"source_content_type":"text/x-python","patch_set":14,"id":"efe685a4_8944fa09","line":1076,"range":{"start_line":1075,"start_character":8,"end_line":1076,"end_character":43},"in_reply_to":"c032bb79_9f9446eb","updated":"2026-09-29 09:55:33.000000000","message":"Addressed. Centralized migration states in powerstore/utils.py and replaced the duplicated literals across the client, adapter, and driver with shared constants:\n\nCompleted\nFailed\nIdle\nSystem_Paused\nUnsupported\nAlreadyOnTarget","commit_id":"7297e22972a82f95fdd7919f7bf98d3d72172a46"}],"cinder/volume/drivers/dell_emc/powerstore/driver.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"6124f4222da9834809ef8c0f615a1c0993de9efb","unresolved":true,"context_lines":[{"line_number":247,"context_line":"                \"Volume %s already on destination; not accepting.\","},{"line_number":248,"context_line":"                volume.id"},{"line_number":249,"context_line":"            )"},{"line_number":250,"context_line":"            return False, None"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        # For \u0027Completed\u0027 or \u0027Idle\u0027 terminal states, accept."},{"line_number":253,"context_line":"        if state in (\"Completed\", \"Idle\"):"}],"source_content_type":"text/x-python","patch_set":10,"id":"c9828f2e_c93aefb9","line":250,"updated":"2026-09-08 06:09:43.000000000","message":"this doesn\u0027t look right! returning false here means asking cinder to run `self._migrate_volume_generic(ctxt, volume, host, new_type_id)` which creates a new vol and copies the data.\n\ncould you check with powerflex, on which scenarios its ok to return False like different-backends or when storage pool compatibility - those sounds more genuine.\nhttps://github.com/openstack/cinder/blob/a4767351ce74612281497cef7cd7a36f8d784f56/cinder/volume/drivers/dell_emc/powerflex/driver.py#L1401-L1412\n\n--\nsame for netapp, checking backend\nhttps://github.com/openstack/cinder/blob/a4767351ce74612281497cef7cd7a36f8d784f56/cinder/volume/drivers/netapp/dataontap/utils/data_motion.py#L1738-L1755","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"8d361f1f3bc99520216b7861542606d0902e5cb6","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                \"Volume %s already on destination; not accepting.\","},{"line_number":248,"context_line":"                volume.id"},{"line_number":249,"context_line":"            )"},{"line_number":250,"context_line":"            return False, None"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        # For \u0027Completed\u0027 or \u0027Idle\u0027 terminal states, accept."},{"line_number":253,"context_line":"        if state in (\"Completed\", \"Idle\"):"}],"source_content_type":"text/x-python","patch_set":10,"id":"09fc2ef9_cce87772","line":250,"in_reply_to":"c9828f2e_c93aefb9","updated":"2026-09-22 11:17:56.000000000","message":"Done","commit_id":"8cb1e241e3f57166289bed9f2dc09a323e4e4bdd"},{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"fa280338fe148713c7a08e6f67e666bc7f466bb8","unresolved":true,"context_lines":[{"line_number":213,"context_line":"        context,"},{"line_number":214,"context_line":"        volume,"},{"line_number":215,"context_line":"        host"},{"line_number":216,"context_line":"    ) -\u003e tuple[bool, None]:"},{"line_number":217,"context_line":"        \"\"\"Migrate a PowerStore volume via adapter."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        Returns a Cinder-compatible result tuple."}],"source_content_type":"text/x-python","patch_set":12,"id":"06704c7f_e1a59fab","line":216,"updated":"2026-09-23 08:24:48.000000000","message":"Since this implementation never returns metadata, None is correct, but it would be clearer to annotate as tuple[bool, dict | None] to match the Cinder base class signature.","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"927cc7d85c95a7d8edae4be5c13050577b7cd69f","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        context,"},{"line_number":214,"context_line":"        volume,"},{"line_number":215,"context_line":"        host"},{"line_number":216,"context_line":"    ) -\u003e tuple[bool, None]:"},{"line_number":217,"context_line":"        \"\"\"Migrate a PowerStore volume via adapter."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        Returns a Cinder-compatible result tuple."}],"source_content_type":"text/x-python","patch_set":12,"id":"ef2ea989_87f7a0e2","line":216,"in_reply_to":"06704c7f_e1a59fab","updated":"2026-09-23 09:59:16.000000000","message":"Done","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"}],"cinder/volume/drivers/dell_emc/powerstore/options.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"319fd058f888dff3d5f1443e632f5a9aca2d9f3b","unresolved":true,"context_lines":[{"line_number":80,"context_line":"        ),"},{"line_number":81,"context_line":"    ),"},{"line_number":82,"context_line":"    cfg.IntOpt("},{"line_number":83,"context_line":"        store_utils.POWERSTORE_REST_READ_TIMEOUT,"},{"line_number":84,"context_line":"        default\u003d30,"},{"line_number":85,"context_line":"        min\u003d1,"},{"line_number":86,"context_line":"        help\u003d("}],"source_content_type":"text/x-python","patch_set":9,"id":"f17e46d4_5d9dac88","line":83,"updated":"2026-04-15 05:29:07.000000000","message":"i see utils in import not store_tils","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"c747cb71029d8fad87b26f44fa22186e55f57ac5","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        ),"},{"line_number":81,"context_line":"    ),"},{"line_number":82,"context_line":"    cfg.IntOpt("},{"line_number":83,"context_line":"        store_utils.POWERSTORE_REST_READ_TIMEOUT,"},{"line_number":84,"context_line":"        default\u003d30,"},{"line_number":85,"context_line":"        min\u003d1,"},{"line_number":86,"context_line":"        help\u003d("}],"source_content_type":"text/x-python","patch_set":9,"id":"12f4d249_2135a4a3","line":83,"in_reply_to":"f17e46d4_5d9dac88","updated":"2026-05-26 07:58:52.000000000","message":"Done","commit_id":"0202928f5f01b897cfb33a7feb8ca2fc7011f426"}],"cinder/volume/drivers/dell_emc/powerstore/utils.py":[{"author":{"_account_id":38284,"name":"Prasant Padhi","display_name":"Prasant Padhi","email":"prasant.padhi@dell.com","username":"prasant.padhi@dell.com"},"change_message_id":"fa280338fe148713c7a08e6f67e666bc7f466bb8","unresolved":true,"context_lines":[{"line_number":265,"context_line":"            appl_id \u003d group_conf.powerstore_appliances_id"},{"line_number":266,"context_line":"        except Exception as exc:"},{"line_number":267,"context_line":"            LOG.warning(\"group %r missing: %s\", group, exc)"},{"line_number":268,"context_line":"            continue"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        if backend and backend.strip() in allow_set:"},{"line_number":271,"context_line":"            mapping[backend.strip()] \u003d appl_id"}],"source_content_type":"text/x-python","patch_set":12,"id":"1fa4a253_3c05ecae","line":268,"updated":"2026-09-23 08:24:48.000000000","message":"If powerstore_appliances_id is missing or CONF group access fails, the backend is silently skipped with only a warning. If an operator has a typo in the config key name, migration will silently fall back to host-assisted with no error. This can become harder to diagnose as the issue is hit","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"927cc7d85c95a7d8edae4be5c13050577b7cd69f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            appl_id \u003d group_conf.powerstore_appliances_id"},{"line_number":266,"context_line":"        except Exception as exc:"},{"line_number":267,"context_line":"            LOG.warning(\"group %r missing: %s\", group, exc)"},{"line_number":268,"context_line":"            continue"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        if backend and backend.strip() in allow_set:"},{"line_number":271,"context_line":"            mapping[backend.strip()] \u003d appl_id"}],"source_content_type":"text/x-python","patch_set":12,"id":"0e175935_7def1cbe","line":268,"in_reply_to":"1fa4a253_3c05ecae","updated":"2026-09-23 09:59:16.000000000","message":"Done","commit_id":"df0ef0e9b3f23b820d0a1a312938949ae0f70631"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"902c8f359725968230319d9525ef65a40334f048","unresolved":true,"context_lines":[{"line_number":297,"context_line":"                group, backend,"},{"line_number":298,"context_line":"            )"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        if backend and backend.strip() in allow_set:"},{"line_number":301,"context_line":"            mapping[backend.strip()] \u003d appl_id"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    LOG.debug(\"build mapping: done (%d items)\", len(mapping))"}],"source_content_type":"text/x-python","patch_set":16,"id":"808f4c2d_aa518c11","line":300,"updated":"2026-10-25 15:42:53.000000000","message":"The map is keyed by volume_backend_name, and only when that string is also one of the enabled_backends group names. The host token used for lookup is the config group. cinder/cmd/volume.py:79 builds the service host as hostname@\u003cenabled_backends group\u003e, and parse_backend_from_host_str (utils.py:247-248) returns that group. adapter.py:976 and 985 look the group up in this map.\n\nIf volume_backend_name is unset, or it differs from the section name, the group is omitted. The destination lookup logs “No appliance_id configured” and returns unsupported, so Cinder host-copies. The new sample config sets volume_backend_name \u003d powerstore1 on section powerstore1, so that sample works. test_get_mapping_backend_name_not_in_allow_set_not_included at line 754 asserts the drop. Please key the map by the config group, which is the token present in volume.host.","commit_id":"ed1a5426622d2a0b1cd0f89407c6fec2ec3184bc"},{"author":{"_account_id":38286,"name":"Siddharth Kumar","display_name":"Siddharth","email":"siddharth.kumar1@dell.com","username":"siddhvrth"},"change_message_id":"f679bd67d604d8849cb28bca5fa5e79a09960e1d","unresolved":true,"context_lines":[{"line_number":297,"context_line":"                group, backend,"},{"line_number":298,"context_line":"            )"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        if backend and backend.strip() in allow_set:"},{"line_number":301,"context_line":"            mapping[backend.strip()] \u003d appl_id"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    LOG.debug(\"build mapping: done (%d items)\", len(mapping))"}],"source_content_type":"text/x-python","patch_set":16,"id":"223c76b1_e459a401","line":300,"in_reply_to":"808f4c2d_aa518c11","updated":"2026-10-26 12:19:22.000000000","message":"Backend appliance mappings are now keyed by the enabled-backend configuration group, which is the token used in volume.host, rather than volume_backend_name. The related tests were updated to cover differing or unset volume_backend_name values.","commit_id":"ed1a5426622d2a0b1cd0f89407c6fec2ec3184bc"}]}
