)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"22f6d9ef9809ed3ed5d8e4480cd5dff1aa6a4e0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e65ec21e_1b7ff6bc","updated":"2026-02-25 08:53:31.000000000","message":"-1 for the support matrix change.\n\nThe code and tests looks good enough to support the feature for NetApp driver.\nThe only blocker I\u0027m seeing currently with all the netapp patches is the CI that would validate there are no regressions with the new code additions.\nI\u0027ve also proposed a patch to advertise the clone across pool as a driver feature so we can rebase this patch on top of it (as it also has the image volume cache fix in a dependency) and mark the support as completed.\n\nhttps://review.opendev.org/c/openstack/cinder/+/977924","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"a25ec52041f519c15689f014e076cd8a6d035b55","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"94ed8e26_2f5b2919","updated":"2026-02-20 05:59:21.000000000","message":"LGTM","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"c3e0f9cc4e436e83261d487f50177fe61897819d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"89da5664_f4df3651","updated":"2026-02-23 06:12:12.000000000","message":"recheck","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"375eb19f796d0e88c14da5dee7743da081e5a723","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9ef82001_a5208f8c","updated":"2026-02-24 14:00:32.000000000","message":"recheck","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"c3c7add6af4822de4457b7dd5857b1e161450de5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ae052231_cd5540d4","updated":"2026-02-26 17:42:13.000000000","message":"LGTM","commit_id":"6304af76fc73333a824bd0dfe5b7d21276c0e5bd"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d3be66ed1c574a67c9cdad5c400e5c3983c4d7e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"847f5ccc_d1354300","updated":"2026-02-25 16:44:29.000000000","message":"Thank you! Rajat, i will rebase my changes on top of your support matrix once merged. Also, we are trying to bring up NetApp CI. I will keep you posted once NetApp CI is successful.","commit_id":"6304af76fc73333a824bd0dfe5b7d21276c0e5bd"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"b1660061ac9b3e807bcc3e412fe84e2bb39059c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ff1432b4_5f8193e3","updated":"2026-02-28 16:38:35.000000000","message":"recheck","commit_id":"6304af76fc73333a824bd0dfe5b7d21276c0e5bd"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e206d579_c97fa79c","updated":"2026-04-16 08:50:17.000000000","message":"Along with the comments, please also rebase on master to fix the merge conflict","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"6bd570ed0a0ed0c987cbc01a4394318865227281","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7a662d73_2de129e9","updated":"2026-03-09 06:21:47.000000000","message":"LGTM","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7fb3a36c580d802f266fe92e279137dcc3c05aa4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"24e1659c_82ed363c","updated":"2026-03-09 06:23:12.000000000","message":"LGTM ..!","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"26d248b107c222b132d0e85be61484f6a165d253","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"962cd5b7_ec699910","updated":"2026-03-11 04:30:58.000000000","message":"Run-NetApp CI","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"5c4823fe4ac85da6474f6053c991c0e1efa5dec7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b4d8e27d_972993df","updated":"2026-03-05 16:34:09.000000000","message":"Run-NetApp CI","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"1b8f4b9ee21385f244b83e4a5f516a0d107a24e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1009f63d_4fe15cb3","updated":"2026-03-17 10:59:28.000000000","message":"hi @rajatdhasmana@gmail.com, we are missing release deadline. Can we take up feature matrix update later and let feature checkin to feature branch for customers to consume?","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a5c9751fd1bff3c2c745b9098588c85397bcd66b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fd03ea95_0357ff1d","updated":"2026-03-02 07:20:09.000000000","message":"recheck","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c562ebdd_5b9c17ca","updated":"2026-04-18 15:33:36.000000000","message":"Thank you! Rajat for detailed review. Addressed your comments and provided detail why some design choices are made.","commit_id":"b5772c7d045cb67731c70e8564266a72176926c7"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"113988e02d3504b168dd9888a55aa7b904141bd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c276e5cc_750b903b","updated":"2026-04-20 06:22:21.000000000","message":"recheck","commit_id":"4e59d770263ece43433d444fe398730f585e5424"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7d28967f67dea752b5d39c7636807085d3f6ff1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"5ce15c24_7e598fd6","updated":"2026-04-21 14:25:16.000000000","message":"Thanks for addressing the comments, this looks much better, some feedback on past comments.","commit_id":"4afac5399577c77ed30b09736f45e99251989464"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"8e7b525ddab84772f7a44758f743ed8b06218dd4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"8c470e5e_a8a8a989","updated":"2026-04-28 13:21:23.000000000","message":"All looks okay to me, +2s from Rajat and Walt.","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"eb2f3a1ff0808c53d74483eecdb2903840468e7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"70ec4ac8_75829cd1","updated":"2026-04-28 06:17:20.000000000","message":"Hi @waboring@hemna.com, \n\nyour +2 was resent with latest changes. Can you please review again\n\nThank you!\nJayaanand.","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"222b4c7ed312b7cfacf90303aceff4f53b026ecc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b18bbab6_2135f997","updated":"2026-04-22 12:13:04.000000000","message":"Hi Rajat, Thank you for review again. Log level changed debug and changed error again thinking error will give opportunity for user to investigate LUN copy failure. Again changed back to debug. can you please review again.","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"c029436e67ada623eb86f76107291b3e488f42a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a48785f8_ca16f9e5","updated":"2026-04-24 18:47:12.000000000","message":"Hi Rajath, NetAPP CI is successful. Can you please review again.","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4963850d79609442d96d09975b7dc9be5ffd30a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1906e465_acb2c6c8","updated":"2026-04-27 06:20:13.000000000","message":"I guess i voted too early, I can see that the FC CI is failing and the feature aims to provide optimized cloning in iSCSI and FC setup.\nCan you confirm there is no issue of FC with this patch?","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"43bff80e19cd7a610133eaab8dbb2fd8e2c1c354","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c187836f_1e672fab","updated":"2026-04-27 06:18:44.000000000","message":"LGTM!","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a450e71f0c03a901baef8791c79d7cd6b0f6648e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2b3f0ae7_98a451c9","updated":"2026-04-24 10:46:06.000000000","message":"Run-NetApp CI","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"798c603e0349e5139ad1c75a019ba65b855be67c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"cf053d07_70651d7e","updated":"2026-04-24 15:26:15.000000000","message":"Run-NetApp CI","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"c15f4c6ee8e1945a0e1939db01b785cd560fa1a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"47190156_08c3075d","updated":"2026-04-28 16:22:06.000000000","message":"Thank you! @jobernar@redhat.com and rajatdhasmana@gmail.com","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"3a43b08d02b38f06b205f6e7a3cad4f636961b48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"320277c6_6a220ec7","updated":"2026-04-27 09:58:20.000000000","message":"hi @Rajath, \n\nThank you for reviewing again! There is no logic difference between FC/iSCSI. We are correcting issue with FC infrastructure. We can safely assume FC workflows will work same as iSCSI workflows for this feature.\n\n Thank you!\n Jayaanand.","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a6e35282f55c9ddc1f66b85cec4478df5c1397ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e8f64b1c_23c6b978","updated":"2026-04-23 04:40:33.000000000","message":"recheck devstack-plugin-nfs-tempest-full timed out\nwaiting for netapp CI to pass otherwise LGTM.","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3a944b18838b39badb0a8ff84f7625bd5457593b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2b62bdf8_b63e0ca7","in_reply_to":"320277c6_6a220ec7","updated":"2026-04-28 06:13:27.000000000","message":"Ack, thanks for the confirmation!","commit_id":"f5972c2f356e6c9df13be5bb4216756586ea0365"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_block_cmode.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"22f6d9ef9809ed3ed5d8e4480cd5dff1aa6a4e0e","unresolved":true,"context_lines":[{"line_number":1971,"context_line":"        result \u003d self.library._get_lun_location_info("},{"line_number":1972,"context_line":"            fake.CROSS_POOL_SRC_LUN_PATH)"},{"line_number":1973,"context_line":""},{"line_number":1974,"context_line":"        expected \u003d {"},{"line_number":1975,"context_line":"            \u0027vserver\u0027: fake.CROSS_POOL_VSERVER,"},{"line_number":1976,"context_line":"            \u0027flexvol\u0027: fake.CROSS_POOL_SRC_POOL,"},{"line_number":1977,"context_line":"            \u0027aggregate\u0027: fake.CROSS_POOL_SRC_AGGREGATE,"},{"line_number":1978,"context_line":"            \u0027lun_path\u0027: fake.CROSS_POOL_SRC_LUN_PATH,"},{"line_number":1979,"context_line":"        }"},{"line_number":1980,"context_line":"        self.assertEqual(expected, result)"},{"line_number":1981,"context_line":"        mock_get_flexvol.assert_called_once_with("},{"line_number":1982,"context_line":"            flexvol_name\u003dfake.CROSS_POOL_SRC_POOL)"}],"source_content_type":"text/x-python","patch_set":1,"id":"830b2b75_68a7429b","line":1979,"range":{"start_line":1974,"start_character":0,"end_line":1979,"end_character":9},"updated":"2026-02-25 08:53:31.000000000","message":"nit: good to create this dict at the start of method or at least before calling the main method (_get_lun_location_info here) that we are testing.","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d3be66ed1c574a67c9cdad5c400e5c3983c4d7e8","unresolved":false,"context_lines":[{"line_number":1971,"context_line":"        result \u003d self.library._get_lun_location_info("},{"line_number":1972,"context_line":"            fake.CROSS_POOL_SRC_LUN_PATH)"},{"line_number":1973,"context_line":""},{"line_number":1974,"context_line":"        expected \u003d {"},{"line_number":1975,"context_line":"            \u0027vserver\u0027: fake.CROSS_POOL_VSERVER,"},{"line_number":1976,"context_line":"            \u0027flexvol\u0027: fake.CROSS_POOL_SRC_POOL,"},{"line_number":1977,"context_line":"            \u0027aggregate\u0027: fake.CROSS_POOL_SRC_AGGREGATE,"},{"line_number":1978,"context_line":"            \u0027lun_path\u0027: fake.CROSS_POOL_SRC_LUN_PATH,"},{"line_number":1979,"context_line":"        }"},{"line_number":1980,"context_line":"        self.assertEqual(expected, result)"},{"line_number":1981,"context_line":"        mock_get_flexvol.assert_called_once_with("},{"line_number":1982,"context_line":"            flexvol_name\u003dfake.CROSS_POOL_SRC_POOL)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1b25f368_a3611af6","line":1979,"range":{"start_line":1974,"start_character":0,"end_line":1979,"end_character":9},"in_reply_to":"830b2b75_68a7429b","updated":"2026-02-25 16:44:29.000000000","message":"reused used existing fake from global","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"22f6d9ef9809ed3ed5d8e4480cd5dff1aa6a4e0e","unresolved":true,"context_lines":[{"line_number":2109,"context_line":"        mock_wait.assert_not_called()"},{"line_number":2110,"context_line":""},{"line_number":2111,"context_line":"    # Tests for _clone_source_to_destination (cross-pool path)"},{"line_number":2112,"context_line":"    def test_clone_source_to_destination_cross_aggregate(self):"},{"line_number":2113,"context_line":"        self.library.vserver \u003d fake.CROSS_POOL_VSERVER"},{"line_number":2114,"context_line":"        mock_location \u003d self.mock_object("},{"line_number":2115,"context_line":"            self.library, \u0027_get_lun_location_info\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"19155fee_692ccf24","line":2112,"range":{"start_line":2112,"start_character":8,"end_line":2112,"end_character":56},"updated":"2026-02-25 08:53:31.000000000","message":"we did not cover the case of cross pool/flexvol same aggregate.\nEven though it calls the same _handle_cross_aggregate_clone method, it\u0027s good to validate that case is covered.","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d3be66ed1c574a67c9cdad5c400e5c3983c4d7e8","unresolved":false,"context_lines":[{"line_number":2109,"context_line":"        mock_wait.assert_not_called()"},{"line_number":2110,"context_line":""},{"line_number":2111,"context_line":"    # Tests for _clone_source_to_destination (cross-pool path)"},{"line_number":2112,"context_line":"    def test_clone_source_to_destination_cross_aggregate(self):"},{"line_number":2113,"context_line":"        self.library.vserver \u003d fake.CROSS_POOL_VSERVER"},{"line_number":2114,"context_line":"        mock_location \u003d self.mock_object("},{"line_number":2115,"context_line":"            self.library, \u0027_get_lun_location_info\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"c136c4f9_79fef441","line":2112,"range":{"start_line":2112,"start_character":8,"end_line":2112,"end_character":56},"in_reply_to":"19155fee_692ccf24","updated":"2026-02-25 16:44:29.000000000","message":"added UTs to cover same aggregate scenario.","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"}],"cinder/volume/drivers/netapp/dataontap/block_cmode.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"22f6d9ef9809ed3ed5d8e4480cd5dff1aa6a4e0e","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        # For now we assume same cluster since we\u0027re using same zapi_client"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        # Check SVM boundary"},{"line_number":505,"context_line":"        if source_info[\u0027vserver\u0027] !\u003d dest_info[\u0027vserver\u0027]:"},{"line_number":506,"context_line":"            return na_utils.CloneBoundary.CROSS_SVM"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        # Check aggregate boundary (same SVM)"}],"source_content_type":"text/x-python","patch_set":1,"id":"20bb38ca_4135acd2","line":505,"updated":"2026-02-25 08:53:31.000000000","message":"Right not the cross cluster and cross SVM cases are handled here.\nI see the fallback on L#353 that cross SVM cloning is not supported (as of today) and we fallback. We should keep a note that when we add cross SVM clone functionality, we should also handle the case rejecting the scenario of cross cluster since currently it\u0027s not handled.","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"22f6d9ef9809ed3ed5d8e4480cd5dff1aa6a4e0e","unresolved":false,"context_lines":[{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        try:"},{"line_number":597,"context_line":"            # Start the LUN copy operation (same vserver)"},{"line_number":598,"context_line":"            job_uuid \u003d self.zapi_client.start_lun_copy("},{"line_number":599,"context_line":"                lun_name\u003dsource_lun_name,"},{"line_number":600,"context_line":"                dest_ontap_volume\u003ddest_flexvol,"},{"line_number":601,"context_line":"                dest_vserver\u003ddest_vserver,"}],"source_content_type":"text/x-python","patch_set":1,"id":"b067c50e_a581c300","line":598,"range":{"start_line":598,"start_character":40,"end_line":598,"end_character":54},"updated":"2026-02-25 08:53:31.000000000","message":"good to see the lun copy method already exists supporting this cross pool cloning support\nhttps://opendev.org/openstack/cinder/src/branch/master/cinder/volume/drivers/netapp/dataontap/client/client_cmode.py#L814-L838","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"22f6d9ef9809ed3ed5d8e4480cd5dff1aa6a4e0e","unresolved":false,"context_lines":[{"line_number":598,"context_line":"            job_uuid \u003d self.zapi_client.start_lun_copy("},{"line_number":599,"context_line":"                lun_name\u003dsource_lun_name,"},{"line_number":600,"context_line":"                dest_ontap_volume\u003ddest_flexvol,"},{"line_number":601,"context_line":"                dest_vserver\u003ddest_vserver,"},{"line_number":602,"context_line":"                src_ontap_volume\u003dsource_flexvol,"},{"line_number":603,"context_line":"                src_vserver\u003dsource_vserver,"},{"line_number":604,"context_line":"                dest_lun_name\u003ddest_lun_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"8cdb72a0_a1bde71d","line":601,"range":{"start_line":601,"start_character":0,"end_line":601,"end_character":42},"updated":"2026-02-25 08:53:31.000000000","message":"nit: the source and destination vserver will be the same (as of today) since in case of cross SVM or cross cluster, the code will never reach here but it\u0027s good for future proofing when cross SVM support will be added.","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"22f6d9ef9809ed3ed5d8e4480cd5dff1aa6a4e0e","unresolved":true,"context_lines":[{"line_number":609,"context_line":"            # Wait for copy to complete"},{"line_number":610,"context_line":"            self._wait_for_lun_copy_completion(job_uuid)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"            LOG.info(\"Cross-aggregate LUN copy completed successfully\")"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        except Exception as e:"},{"line_number":615,"context_line":"            LOG.error(\"Cross-aggregate LUN copy failed: %(error)s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"fd829b6c_d30c56aa","line":612,"range":{"start_line":612,"start_character":22,"end_line":612,"end_character":37},"updated":"2026-02-25 08:53:31.000000000","message":"we handle the cross vs same aggregate case with the same lun copy operation so is this log accurate if the copy happens between different flexvol of same aggregate?","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d3be66ed1c574a67c9cdad5c400e5c3983c4d7e8","unresolved":false,"context_lines":[{"line_number":609,"context_line":"            # Wait for copy to complete"},{"line_number":610,"context_line":"            self._wait_for_lun_copy_completion(job_uuid)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"            LOG.info(\"Cross-aggregate LUN copy completed successfully\")"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        except Exception as e:"},{"line_number":615,"context_line":"            LOG.error(\"Cross-aggregate LUN copy failed: %(error)s\","}],"source_content_type":"text/x-python","patch_set":1,"id":"f17d2fad_d8d159f0","line":612,"range":{"start_line":612,"start_character":22,"end_line":612,"end_character":37},"in_reply_to":"fd829b6c_d30c56aa","updated":"2026-02-25 16:44:29.000000000","message":"updated to logs to reflect cross pool changes","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":346,"context_line":"                boundary \u003d self._determine_clone_boundary("},{"line_number":347,"context_line":"                    source_info, dest_info)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"                LOG.info(\"Clone boundary: %(boundary)s\","},{"line_number":350,"context_line":"                         {\u0027boundary\u0027: boundary})"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"                # Handle cross-SVM and cross-aggregate clones"}],"source_content_type":"text/x-python","patch_set":4,"id":"48ee1eda_74128d10","line":349,"range":{"start_line":349,"start_character":20,"end_line":349,"end_character":24},"updated":"2026-04-16 08:50:17.000000000","message":"This should be a DEBUG log, this is a backend specific detail that might not be necessary to log in a normal running deployment","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                boundary \u003d self._determine_clone_boundary("},{"line_number":347,"context_line":"                    source_info, dest_info)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"                LOG.info(\"Clone boundary: %(boundary)s\","},{"line_number":350,"context_line":"                         {\u0027boundary\u0027: boundary})"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"                # Handle cross-SVM and cross-aggregate clones"}],"source_content_type":"text/x-python","patch_set":4,"id":"1b902d68_e6dc610f","line":349,"range":{"start_line":349,"start_character":20,"end_line":349,"end_character":24},"in_reply_to":"48ee1eda_74128d10","updated":"2026-04-18 15:33:36.000000000","message":"modified to debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":352,"context_line":"                # Handle cross-SVM and cross-aggregate clones"},{"line_number":353,"context_line":"                if boundary \u003d\u003d na_utils.CloneBoundary.CROSS_SVM:"},{"line_number":354,"context_line":"                    # CinderException will trigger fallback to image download"},{"line_number":355,"context_line":"                    LOG.warning(\"Cross-pool clone across SVMs not \""},{"line_number":356,"context_line":"                                \"supported, falling back to Glance \""},{"line_number":357,"context_line":"                                \"download.\")"},{"line_number":358,"context_line":"                    raise"}],"source_content_type":"text/x-python","patch_set":4,"id":"2a9ecf31_b89edc2c","line":355,"range":{"start_line":355,"start_character":24,"end_line":355,"end_character":31},"updated":"2026-04-16 08:50:17.000000000","message":"I\u0027m not sure if this is something we should warn about.\nIt\u0027s an optimization workflow that might not work based on the request of the customer and we are really not failing so I would prefer a DEBUG log instead.\nIIRC the warning log also generates a stack trace that might be misleading","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":352,"context_line":"                # Handle cross-SVM and cross-aggregate clones"},{"line_number":353,"context_line":"                if boundary \u003d\u003d na_utils.CloneBoundary.CROSS_SVM:"},{"line_number":354,"context_line":"                    # CinderException will trigger fallback to image download"},{"line_number":355,"context_line":"                    LOG.warning(\"Cross-pool clone across SVMs not \""},{"line_number":356,"context_line":"                                \"supported, falling back to Glance \""},{"line_number":357,"context_line":"                                \"download.\")"},{"line_number":358,"context_line":"                    raise"}],"source_content_type":"text/x-python","patch_set":4,"id":"7e56b6b2_6b0675dd","line":355,"range":{"start_line":355,"start_character":24,"end_line":355,"end_character":31},"in_reply_to":"2a9ecf31_b89edc2c","updated":"2026-04-18 15:33:36.000000000","message":"modified to debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"                elif boundary in (na_utils.CloneBoundary.CROSS_AGGREGATE,"},{"line_number":361,"context_line":"                                  na_utils.CloneBoundary.SAME_AGGREGATE):"},{"line_number":362,"context_line":"                    LOG.debug(\"Handling cross-aggregate clone: \""},{"line_number":363,"context_line":"                              \"src\u003d%(src)s, dst\u003d%(dst)s\","},{"line_number":364,"context_line":"                              {\u0027src\u0027: src_lun_path, \u0027dst\u0027: dest_lun_path})"},{"line_number":365,"context_line":"                    self._handle_cross_aggregate_clone("}],"source_content_type":"text/x-python","patch_set":4,"id":"8dc504f1_98d22b95","line":362,"range":{"start_line":362,"start_character":46,"end_line":362,"end_character":55},"updated":"2026-04-16 08:50:17.000000000","message":"we say it\u0027s cross aggregate here but could be same aggregate","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"                elif boundary in (na_utils.CloneBoundary.CROSS_AGGREGATE,"},{"line_number":361,"context_line":"                                  na_utils.CloneBoundary.SAME_AGGREGATE):"},{"line_number":362,"context_line":"                    LOG.debug(\"Handling cross-aggregate clone: \""},{"line_number":363,"context_line":"                              \"src\u003d%(src)s, dst\u003d%(dst)s\","},{"line_number":364,"context_line":"                              {\u0027src\u0027: src_lun_path, \u0027dst\u0027: dest_lun_path})"},{"line_number":365,"context_line":"                    self._handle_cross_aggregate_clone("}],"source_content_type":"text/x-python","patch_set":4,"id":"0127b1ce_c8ad63d7","line":362,"range":{"start_line":362,"start_character":46,"end_line":362,"end_character":55},"in_reply_to":"8dc504f1_98d22b95","updated":"2026-04-18 15:33:36.000000000","message":"updated log message to reflect API usage","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"            except exception.CinderException:"},{"line_number":370,"context_line":"                # CinderException will trigger fallback to image download"},{"line_number":371,"context_line":"                LOG.warning(\"Cross-pool clone failed, fallback to image \""},{"line_number":372,"context_line":"                            \"download will be used if available.\")"},{"line_number":373,"context_line":"                raise"},{"line_number":374,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7e39a8e4_b227260d","line":371,"range":{"start_line":371,"start_character":20,"end_line":371,"end_character":27},"updated":"2026-04-16 08:50:17.000000000","message":"I\u0027m usure about the warning here since I\u0027m afraid it generates a stack trace that coud be misleading as it\u0027s not a real failure, should we instead have this as debug?","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"            except exception.CinderException:"},{"line_number":370,"context_line":"                # CinderException will trigger fallback to image download"},{"line_number":371,"context_line":"                LOG.warning(\"Cross-pool clone failed, fallback to image \""},{"line_number":372,"context_line":"                            \"download will be used if available.\")"},{"line_number":373,"context_line":"                raise"},{"line_number":374,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3e49be25_0ff9283f","line":371,"range":{"start_line":371,"start_character":20,"end_line":371,"end_character":27},"in_reply_to":"7e39a8e4_b227260d","updated":"2026-04-18 15:33:36.000000000","message":"modified to debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":373,"context_line":"                raise"},{"line_number":374,"context_line":"            except Exception as e:"},{"line_number":375,"context_line":"                # Unexpected error - log and raise CinderException for fallback"},{"line_number":376,"context_line":"                LOG.warning(\"Cross-pool clone setup failed: %(error)s. \""},{"line_number":377,"context_line":"                            \"Fallback to image download will be used.\","},{"line_number":378,"context_line":"                            {\u0027error\u0027: e})"},{"line_number":379,"context_line":"                raise exception.VolumeDriverException("}],"source_content_type":"text/x-python","patch_set":4,"id":"cc969566_dfffb460","line":376,"range":{"start_line":376,"start_character":20,"end_line":376,"end_character":27},"updated":"2026-04-16 08:50:17.000000000","message":"same, i feel debug is more suitable","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                raise"},{"line_number":374,"context_line":"            except Exception as e:"},{"line_number":375,"context_line":"                # Unexpected error - log and raise CinderException for fallback"},{"line_number":376,"context_line":"                LOG.warning(\"Cross-pool clone setup failed: %(error)s. \""},{"line_number":377,"context_line":"                            \"Fallback to image download will be used.\","},{"line_number":378,"context_line":"                            {\u0027error\u0027: e})"},{"line_number":379,"context_line":"                raise exception.VolumeDriverException("}],"source_content_type":"text/x-python","patch_set":4,"id":"10afff9f_05653f9d","line":376,"range":{"start_line":376,"start_character":20,"end_line":376,"end_character":27},"in_reply_to":"cc969566_dfffb460","updated":"2026-04-18 15:33:36.000000000","message":"modified to debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":488,"context_line":"            return location_info"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        except Exception as e:"},{"line_number":491,"context_line":"            LOG.warning(\"Failed to get location info for LUN %(path)s: \""},{"line_number":492,"context_line":"                        \"%(error)s\", {\u0027path\u0027: lun_path, \u0027error\u0027: e})"},{"line_number":493,"context_line":"            raise"},{"line_number":494,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"477e01c3_95e7faea","line":491,"range":{"start_line":491,"start_character":16,"end_line":491,"end_character":23},"updated":"2026-04-16 08:50:17.000000000","message":"same, all these logs are for an optimized path so warning and errors should be avoided IMO","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":488,"context_line":"            return location_info"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        except Exception as e:"},{"line_number":491,"context_line":"            LOG.warning(\"Failed to get location info for LUN %(path)s: \""},{"line_number":492,"context_line":"                        \"%(error)s\", {\u0027path\u0027: lun_path, \u0027error\u0027: e})"},{"line_number":493,"context_line":"            raise"},{"line_number":494,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"957892eb_c739afd3","line":491,"range":{"start_line":491,"start_character":16,"end_line":491,"end_character":23},"in_reply_to":"477e01c3_95e7faea","updated":"2026-04-18 15:33:36.000000000","message":"modified to debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":520,"context_line":"        \"\"\"Monitor LUN copy job status until completion or timeout. \"\"\""},{"line_number":521,"context_line":"        if timeout is None:"},{"line_number":522,"context_line":"            timeout \u003d self.configuration.safe_get("},{"line_number":523,"context_line":"                \u0027netapp_lun_copy_timeout\u0027) or 600"},{"line_number":524,"context_line":"        poll_interval \u003d 5"},{"line_number":525,"context_line":"        elapsed \u003d 0"},{"line_number":526,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f2bce4e_58d093d9","line":523,"range":{"start_line":523,"start_character":46,"end_line":523,"end_character":49},"updated":"2026-04-16 08:50:17.000000000","message":"I think 10 minutes is a lot of time to wait for a lun copy in an optimized path, can we have a realistic number here based on actual testing?","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"222b4c7ed312b7cfacf90303aceff4f53b026ecc","unresolved":false,"context_lines":[{"line_number":520,"context_line":"        \"\"\"Monitor LUN copy job status until completion or timeout. \"\"\""},{"line_number":521,"context_line":"        if timeout is None:"},{"line_number":522,"context_line":"            timeout \u003d self.configuration.safe_get("},{"line_number":523,"context_line":"                \u0027netapp_lun_copy_timeout\u0027) or 600"},{"line_number":524,"context_line":"        poll_interval \u003d 5"},{"line_number":525,"context_line":"        elapsed \u003d 0"},{"line_number":526,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5bee889e_0f0d0f42","line":523,"range":{"start_line":523,"start_character":46,"end_line":523,"end_character":49},"in_reply_to":"282d960a_d5d5eeb5","updated":"2026-04-22 12:13:04.000000000","message":"Understood now, updated timeout to 300 seconds.","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7d28967f67dea752b5d39c7636807085d3f6ff1c","unresolved":false,"context_lines":[{"line_number":520,"context_line":"        \"\"\"Monitor LUN copy job status until completion or timeout. \"\"\""},{"line_number":521,"context_line":"        if timeout is None:"},{"line_number":522,"context_line":"            timeout \u003d self.configuration.safe_get("},{"line_number":523,"context_line":"                \u0027netapp_lun_copy_timeout\u0027) or 600"},{"line_number":524,"context_line":"        poll_interval \u003d 5"},{"line_number":525,"context_line":"        elapsed \u003d 0"},{"line_number":526,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"282d960a_d5d5eeb5","line":523,"range":{"start_line":523,"start_character":46,"end_line":523,"end_character":49},"in_reply_to":"3cf5c19d_64262010","updated":"2026-04-21 14:25:16.000000000","message":"This is a backend specific detail and as you\u0027ve mentioned 40GB LUN taking \u003c 60 seconds to copy is really a good detail to conclude that the optimization works as expected.\nI think 300 seconds (5 minutes) is more reasonable (though still high) is a good compromise between any unexpected event causing delay in the optimization and the expected performance from the optimization.\nPersonally I feel if a customer wants to create a server from a bootable volume, they expect the whole operation to finish under 60 seconds which includes creating bootable volume from image and launching the server from boot volume.","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":520,"context_line":"        \"\"\"Monitor LUN copy job status until completion or timeout. \"\"\""},{"line_number":521,"context_line":"        if timeout is None:"},{"line_number":522,"context_line":"            timeout \u003d self.configuration.safe_get("},{"line_number":523,"context_line":"                \u0027netapp_lun_copy_timeout\u0027) or 600"},{"line_number":524,"context_line":"        poll_interval \u003d 5"},{"line_number":525,"context_line":"        elapsed \u003d 0"},{"line_number":526,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3cf5c19d_64262010","line":523,"range":{"start_line":523,"start_character":46,"end_line":523,"end_character":49},"in_reply_to":"9f2bce4e_58d093d9","updated":"2026-04-18 15:33:36.000000000","message":"Yes Rajat, I agree that 600 is a higher number. In our local testing we observed 40 GB images is taking below 60 sec. Higher number is kept to accommodate bigger backup images and unexpected infrastructure issues. Please let me know this is not appropriate and suggest number based on your broader experience with different clients. I will update the same.","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        while elapsed \u003c timeout:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                status \u003d self.zapi_client.get_lun_copy_status(job_uuid)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"                if not status:"},{"line_number":532,"context_line":"                    LOG.warning(\"LUN copy job %(uuid)s not found\","}],"source_content_type":"text/x-python","patch_set":4,"id":"73cac4c9_0a61ade8","line":529,"range":{"start_line":529,"start_character":0,"end_line":529,"end_character":71},"updated":"2026-04-16 08:50:17.000000000","message":"we are doing this every 5 seconds and I\u0027m unsure how long the operation is going to run, I\u0027m not sure how expensive this call is but doing it every 5 seconds doesn\u0027t seem ideal","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        while elapsed \u003c timeout:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                status \u003d self.zapi_client.get_lun_copy_status(job_uuid)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"                if not status:"},{"line_number":532,"context_line":"                    LOG.warning(\"LUN copy job %(uuid)s not found\","}],"source_content_type":"text/x-python","patch_set":4,"id":"a7de95fd_656957d3","line":529,"range":{"start_line":529,"start_character":0,"end_line":529,"end_character":71},"in_reply_to":"73cac4c9_0a61ade8","updated":"2026-04-18 15:33:36.000000000","message":"modified to exponential backoff.","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":532,"context_line":"                    LOG.warning(\"LUN copy job %(uuid)s not found\","},{"line_number":533,"context_line":"                                {\u0027uuid\u0027: job_uuid})"},{"line_number":534,"context_line":"                    time.sleep(poll_interval)"},{"line_number":535,"context_line":"                    elapsed +\u003d poll_interval"},{"line_number":536,"context_line":"                    continue"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"                job_status \u003d status.get(\u0027job-status\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"551bb710_5d6c74d4","line":535,"range":{"start_line":535,"start_character":20,"end_line":535,"end_character":44},"updated":"2026-04-16 08:50:17.000000000","message":"I\u0027m thinking if we should keep this configurable or rather have exponential backoff? this logic seems something that can cause problems in future","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                    LOG.warning(\"LUN copy job %(uuid)s not found\","},{"line_number":533,"context_line":"                                {\u0027uuid\u0027: job_uuid})"},{"line_number":534,"context_line":"                    time.sleep(poll_interval)"},{"line_number":535,"context_line":"                    elapsed +\u003d poll_interval"},{"line_number":536,"context_line":"                    continue"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"                job_status \u003d status.get(\u0027job-status\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"76d06cbb_119a63ad","line":535,"range":{"start_line":535,"start_character":20,"end_line":535,"end_character":44},"in_reply_to":"551bb710_5d6c74d4","updated":"2026-04-18 15:33:36.000000000","message":"modified to exponential backoff.","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":583,"context_line":"        \"\"\"Copy LUN across different aggregates using lun-copy-start.\"\"\""},{"line_number":584,"context_line":"        source_flexvol \u003d source_info[\u0027flexvol\u0027]"},{"line_number":585,"context_line":"        dest_flexvol \u003d dest_info[\u0027flexvol\u0027]"},{"line_number":586,"context_line":"        source_vserver \u003d source_info.get(\u0027vserver\u0027, self.vserver)"},{"line_number":587,"context_line":"        dest_vserver \u003d dest_info.get(\u0027vserver\u0027, self.vserver)"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        # Extract LUN names from paths"},{"line_number":590,"context_line":"        source_lun_name \u003d source_lun_path.split(\u0027/\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fba4f6d_07ecedf8","line":587,"range":{"start_line":586,"start_character":0,"end_line":587,"end_character":61},"updated":"2026-04-16 08:50:17.000000000","message":"if we\u0027ve reached here, this should be same right?","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        \"\"\"Copy LUN across different aggregates using lun-copy-start.\"\"\""},{"line_number":584,"context_line":"        source_flexvol \u003d source_info[\u0027flexvol\u0027]"},{"line_number":585,"context_line":"        dest_flexvol \u003d dest_info[\u0027flexvol\u0027]"},{"line_number":586,"context_line":"        source_vserver \u003d source_info.get(\u0027vserver\u0027, self.vserver)"},{"line_number":587,"context_line":"        dest_vserver \u003d dest_info.get(\u0027vserver\u0027, self.vserver)"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        # Extract LUN names from paths"},{"line_number":590,"context_line":"        source_lun_name \u003d source_lun_path.split(\u0027/\u0027)[-1]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1c586cad_40aec15e","line":587,"range":{"start_line":586,"start_character":0,"end_line":587,"end_character":61},"in_reply_to":"9fba4f6d_07ecedf8","updated":"2026-04-18 15:33:36.000000000","message":"Original intent is to implement cross SVM cross-pool changes aswell. due to time constraint we didn\u0027t go with that implementation. This source_vserver and dest_vserver will help in cross SVM scenario.","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":590,"context_line":"        source_lun_name \u003d source_lun_path.split(\u0027/\u0027)[-1]"},{"line_number":591,"context_line":"        dest_lun_name \u003d dest_lun_path.split(\u0027/\u0027)[-1]"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"        LOG.info(\"Starting cross-pool LUN copy: %(src)s -\u003e %(dst)s\","},{"line_number":594,"context_line":"                 {\u0027src\u0027: source_lun_path, \u0027dst\u0027: dest_lun_path})"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"6b16ea9b_dd2b193d","line":593,"range":{"start_line":593,"start_character":12,"end_line":593,"end_character":16},"updated":"2026-04-16 08:50:17.000000000","message":"please try to keep logs as less visible as possible, as logs of frequently used operation fill up storage really fast","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":590,"context_line":"        source_lun_name \u003d source_lun_path.split(\u0027/\u0027)[-1]"},{"line_number":591,"context_line":"        dest_lun_name \u003d dest_lun_path.split(\u0027/\u0027)[-1]"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"        LOG.info(\"Starting cross-pool LUN copy: %(src)s -\u003e %(dst)s\","},{"line_number":594,"context_line":"                 {\u0027src\u0027: source_lun_path, \u0027dst\u0027: dest_lun_path})"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"440b6d9f_3fd21477","line":593,"range":{"start_line":593,"start_character":12,"end_line":593,"end_character":16},"in_reply_to":"6b16ea9b_dd2b193d","updated":"2026-04-18 15:33:36.000000000","message":"modified to debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":604,"context_line":"                dest_lun_name\u003ddest_lun_name"},{"line_number":605,"context_line":"            )"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"            LOG.info(\"LUN copy job started: UUID\u003d%(uuid)s\", {\u0027uuid\u0027: job_uuid})"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"            # Wait for copy to complete"},{"line_number":610,"context_line":"            self._wait_for_lun_copy_completion(job_uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df2a8d15_ffd0ac18","line":607,"range":{"start_line":607,"start_character":16,"end_line":607,"end_character":20},"updated":"2026-04-16 08:50:17.000000000","message":"same, please keep it debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":604,"context_line":"                dest_lun_name\u003ddest_lun_name"},{"line_number":605,"context_line":"            )"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"            LOG.info(\"LUN copy job started: UUID\u003d%(uuid)s\", {\u0027uuid\u0027: job_uuid})"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"            # Wait for copy to complete"},{"line_number":610,"context_line":"            self._wait_for_lun_copy_completion(job_uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"d9277be5_13019030","line":607,"range":{"start_line":607,"start_character":16,"end_line":607,"end_character":20},"in_reply_to":"df2a8d15_ffd0ac18","updated":"2026-04-18 15:33:36.000000000","message":"modified to debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":609,"context_line":"            # Wait for copy to complete"},{"line_number":610,"context_line":"            self._wait_for_lun_copy_completion(job_uuid)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"            LOG.info(\"Cross-pool LUN copy completed successfully\")"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        except Exception as e:"},{"line_number":615,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","}],"source_content_type":"text/x-python","patch_set":4,"id":"2c825f52_5f6df489","line":612,"range":{"start_line":612,"start_character":16,"end_line":612,"end_character":20},"updated":"2026-04-16 08:50:17.000000000","message":"same, please keep it debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":609,"context_line":"            # Wait for copy to complete"},{"line_number":610,"context_line":"            self._wait_for_lun_copy_completion(job_uuid)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"            LOG.info(\"Cross-pool LUN copy completed successfully\")"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        except Exception as e:"},{"line_number":615,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","}],"source_content_type":"text/x-python","patch_set":4,"id":"6cdbe716_3d5082f8","line":612,"range":{"start_line":612,"start_character":16,"end_line":612,"end_character":20},"in_reply_to":"2c825f52_5f6df489","updated":"2026-04-18 15:33:36.000000000","message":"modified to debug","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":612,"context_line":"            LOG.info(\"Cross-pool LUN copy completed successfully\")"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        except Exception as e:"},{"line_number":615,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","},{"line_number":616,"context_line":"                      {\u0027error\u0027: e})"},{"line_number":617,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dsource_lun_name)"},{"line_number":618,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9fd3d585_9b4340b9","line":615,"range":{"start_line":615,"start_character":16,"end_line":615,"end_character":21},"updated":"2026-04-16 08:50:17.000000000","message":"why is this an error log? IIUC the exception below will fallback to the image download workflow so this will be misleading in the logs","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":612,"context_line":"            LOG.info(\"Cross-pool LUN copy completed successfully\")"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        except Exception as e:"},{"line_number":615,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","},{"line_number":616,"context_line":"                      {\u0027error\u0027: e})"},{"line_number":617,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dsource_lun_name)"},{"line_number":618,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"964281ac_f59c7c61","line":615,"range":{"start_line":615,"start_character":16,"end_line":615,"end_character":21},"in_reply_to":"9fd3d585_9b4340b9","updated":"2026-04-18 15:33:36.000000000","message":"update to debug and messagining","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7d28967f67dea752b5d39c7636807085d3f6ff1c","unresolved":true,"context_lines":[{"line_number":623,"context_line":"            LOG.debug(\"Cross-pool LUN copy completed successfully\")"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        except Exception as e:"},{"line_number":626,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","},{"line_number":627,"context_line":"                      {\u0027error\u0027: e})"},{"line_number":628,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dsource_lun_name)"},{"line_number":629,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"21deb37c_ba4dc754","line":626,"range":{"start_line":626,"start_character":16,"end_line":626,"end_character":21},"updated":"2026-04-21 14:25:16.000000000","message":"this isn\u0027t changed to DEBUG but the closing message says it was modified","commit_id":"4afac5399577c77ed30b09736f45e99251989464"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"222b4c7ed312b7cfacf90303aceff4f53b026ecc","unresolved":false,"context_lines":[{"line_number":623,"context_line":"            LOG.debug(\"Cross-pool LUN copy completed successfully\")"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        except Exception as e:"},{"line_number":626,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","},{"line_number":627,"context_line":"                      {\u0027error\u0027: e})"},{"line_number":628,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dsource_lun_name)"},{"line_number":629,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"525ee7f6_e993b5f7","line":626,"range":{"start_line":626,"start_character":16,"end_line":626,"end_character":21},"in_reply_to":"21deb37c_ba4dc754","updated":"2026-04-22 12:13:04.000000000","message":"changed debug and changed error again thinking error will give opportunity for user to investigate LUN copy failure. Again changed back to debug. can you please review again.","commit_id":"4afac5399577c77ed30b09736f45e99251989464"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a6e35282f55c9ddc1f66b85cec4478df5c1397ba","unresolved":false,"context_lines":[{"line_number":623,"context_line":"            LOG.debug(\"Cross-pool LUN copy completed successfully\")"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        except Exception as e:"},{"line_number":626,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","},{"line_number":627,"context_line":"                      {\u0027error\u0027: e})"},{"line_number":628,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dsource_lun_name)"},{"line_number":629,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa932b67_c9b30e98","line":626,"range":{"start_line":626,"start_character":16,"end_line":626,"end_character":21},"in_reply_to":"525ee7f6_e993b5f7","updated":"2026-04-23 04:40:33.000000000","message":"IMO they really don\u0027t need to investigate it as long as the operation succeeds. But if LUN copy is failing every time then they will see performance drop and might end up investigating anyway.\nSuppose we LOG an error here and the fallback (image download path) also fails. The operator might end up believing that the LUN copy failure is the reason for the failure of the whole operation whereas it would be somewhere after this checkpoint.","commit_id":"4afac5399577c77ed30b09736f45e99251989464"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cd9969feb21d135ce05954172c09da3b0d2daf87","unresolved":false,"context_lines":[{"line_number":623,"context_line":"            LOG.debug(\"Cross-pool LUN copy completed successfully\")"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        except Exception as e:"},{"line_number":626,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","},{"line_number":627,"context_line":"                      {\u0027error\u0027: e})"},{"line_number":628,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dsource_lun_name)"},{"line_number":629,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"d673c6f9_54c46dc7","line":626,"range":{"start_line":626,"start_character":16,"end_line":626,"end_character":21},"in_reply_to":"bab35ab7_f56616eb","updated":"2026-04-24 10:45:38.000000000","message":"IMO the error log should only be used in case of a failure which clearly this is not the case.\nThe performance lag could be a contributor for failure of the wider operation i.e. instance creation but it\u0027s not the only reason for it.\nI would agree that a warning LOG should be good enough here to investigate if this fails 100% of the time and leads to performance issue.","commit_id":"4afac5399577c77ed30b09736f45e99251989464"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"d981eac944c55b22f3913af79f5682b9cc5b7659","unresolved":false,"context_lines":[{"line_number":623,"context_line":"            LOG.debug(\"Cross-pool LUN copy completed successfully\")"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        except Exception as e:"},{"line_number":626,"context_line":"            LOG.error(\"Cross-pool LUN copy failed: %(error)s\","},{"line_number":627,"context_line":"                      {\u0027error\u0027: e})"},{"line_number":628,"context_line":"            raise exception.VolumeNotFound(volume_id\u003dsource_lun_name)"},{"line_number":629,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bab35ab7_f56616eb","line":626,"range":{"start_line":626,"start_character":16,"end_line":626,"end_character":21},"in_reply_to":"fa932b67_c9b30e98","updated":"2026-04-23 06:48:01.000000000","message":"IMO, an error needs to be logged when we need an action to be taken. An error here where the copy operation has failed may not be acceptable for customer because it increases the time taken for images to be used to create boot volumes since it falls back to host operation. If I am a customer, I would like to know what failed and why my boot volume creation is taking more time inspite of enabling the cross pool caching feature? So shouldnt this be error? Same logic should be applied to all the places.","commit_id":"4afac5399577c77ed30b09736f45e99251989464"}],"cinder/volume/drivers/netapp/options.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"22f6d9ef9809ed3ed5d8e4480cd5dff1aa6a4e0e","unresolved":true,"context_lines":[{"line_number":305,"context_line":"    cfg.IntOpt(\u0027netapp_lun_copy_timeout\u0027,"},{"line_number":306,"context_line":"               min\u003d60,"},{"line_number":307,"context_line":"               default\u003d600,"},{"line_number":308,"context_line":"               help\u003d\u0027Specifies the maximum time (in seconds) to wait for\u0027"},{"line_number":309,"context_line":"                    \u0027 a LUN copy operation to complete during cross-pool\u0027"},{"line_number":310,"context_line":"                    \u0027 cloning. The default value of 600 seconds is\u0027"},{"line_number":311,"context_line":"                    \u0027 sufficient for most LUN copy operations.\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"deb7f2a6_68dcb652","line":308,"updated":"2026-02-25 08:53:31.000000000","message":"nit: for other config options, we leave a space towards the end of the line but here we are using spaces at the start, I would like if we keep the format consistent i.e. leave extra space towards the end instead of beginning of the help text.","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d3be66ed1c574a67c9cdad5c400e5c3983c4d7e8","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    cfg.IntOpt(\u0027netapp_lun_copy_timeout\u0027,"},{"line_number":306,"context_line":"               min\u003d60,"},{"line_number":307,"context_line":"               default\u003d600,"},{"line_number":308,"context_line":"               help\u003d\u0027Specifies the maximum time (in seconds) to wait for\u0027"},{"line_number":309,"context_line":"                    \u0027 a LUN copy operation to complete during cross-pool\u0027"},{"line_number":310,"context_line":"                    \u0027 cloning. The default value of 600 seconds is\u0027"},{"line_number":311,"context_line":"                    \u0027 sufficient for most LUN copy operations.\u0027)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"a2d9c900_3f5ac299","line":308,"in_reply_to":"deb7f2a6_68dcb652","updated":"2026-02-25 16:44:29.000000000","message":"Updated to consistent across other options.","commit_id":"32ed88fa3a7edd24b8fec4e6aa4427f6a21a788b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":304,"context_line":"                    \u0027but reduces the load on ONTAP.\u0027),"},{"line_number":305,"context_line":"    cfg.IntOpt(\u0027netapp_lun_copy_timeout\u0027,"},{"line_number":306,"context_line":"               min\u003d60,"},{"line_number":307,"context_line":"               default\u003d600,"},{"line_number":308,"context_line":"               help\u003d\u0027Specifies the maximum time (in seconds) to wait for \u0027"},{"line_number":309,"context_line":"                    \u0027a LUN copy operation to complete during cross-pool \u0027"},{"line_number":310,"context_line":"                    \u0027cloning. The default value of 600 seconds is \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"b5db0a19_7691e109","line":307,"range":{"start_line":307,"start_character":23,"end_line":307,"end_character":26},"updated":"2026-04-16 08:50:17.000000000","message":"see my comments in previous file, 10 minutes seems too long for a LUN copy operation that is supposed to be in the optimized workflow","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                    \u0027but reduces the load on ONTAP.\u0027),"},{"line_number":305,"context_line":"    cfg.IntOpt(\u0027netapp_lun_copy_timeout\u0027,"},{"line_number":306,"context_line":"               min\u003d60,"},{"line_number":307,"context_line":"               default\u003d600,"},{"line_number":308,"context_line":"               help\u003d\u0027Specifies the maximum time (in seconds) to wait for \u0027"},{"line_number":309,"context_line":"                    \u0027a LUN copy operation to complete during cross-pool \u0027"},{"line_number":310,"context_line":"                    \u0027cloning. The default value of 600 seconds is \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"d0fcbd60_65c6365f","line":307,"range":{"start_line":307,"start_character":23,"end_line":307,"end_character":26},"in_reply_to":"b5db0a19_7691e109","updated":"2026-04-18 15:33:36.000000000","message":"Yes Rajat, I agree that 600 is a higher number. In our local testing we observed 40 GB images is taking below 60 sec. Higher number is kept to accommodate bigger backup images and unexpected infrastructure issues. Please let me know this is not appropriate and suggest number based on your broader experience with different clients. I will update the same.","commit_id":"a830f60b54639d598add88928c190c42d69d8159"}],"releasenotes/notes/netapp-cross-pool-clone-6fe47467ffe9a7a2.yaml":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"683eef9f7630fb0904a74607e351259d6692ab4a","unresolved":true,"context_lines":[{"line_number":9,"context_line":"    storage pool (FlexVol), the driver can now perform the clone operation"},{"line_number":10,"context_line":"    directly on the storage backend instead of falling back to the slower"},{"line_number":11,"context_line":"    \"attach and dd\" method. This significantly improves volume creation"},{"line_number":12,"context_line":"    performance when using the image-volume cache with multiple pools."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The driver automatically detects the clone boundary and uses the"},{"line_number":15,"context_line":"    appropriate ONTAP operation:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1e664ba5_51b32aec","line":12,"range":{"start_line":12,"start_character":30,"end_line":12,"end_character":70},"updated":"2026-04-16 08:50:17.000000000","message":"this is not just for the image-volume cache, it\u0027s also useful when we configure cinder as a backend for glance and glance images are stored in raw format, see[1]\n\n[1] https://docs.openstack.org/cinder/latest/admin/volume-backed-image.html","commit_id":"a830f60b54639d598add88928c190c42d69d8159"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83e306b52fdd917a959a916950b05ec138f2f1c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    storage pool (FlexVol), the driver can now perform the clone operation"},{"line_number":10,"context_line":"    directly on the storage backend instead of falling back to the slower"},{"line_number":11,"context_line":"    \"attach and dd\" method. This significantly improves volume creation"},{"line_number":12,"context_line":"    performance when using the image-volume cache with multiple pools."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    The driver automatically detects the clone boundary and uses the"},{"line_number":15,"context_line":"    appropriate ONTAP operation:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"f9d6faa1_8fa33d49","line":12,"range":{"start_line":12,"start_character":30,"end_line":12,"end_character":70},"in_reply_to":"1e664ba5_51b32aec","updated":"2026-04-18 15:33:36.000000000","message":"updated release notes to reflect raw format","commit_id":"a830f60b54639d598add88928c190c42d69d8159"}]}
