)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"49dbefb5755f37edb3b9d43af7c2bfb5922c17b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"ca4886fa_4bebd306","updated":"2026-07-10 05:12:08.000000000","message":"@sanketh.shetty@netapp.com Please address these comments.","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"9bc4f8af_58518251","updated":"2026-07-19 13:15:30.000000000","message":"Updated review comments.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"d2c21c51_9eeb1a92","updated":"2026-08-03 11:03:01.000000000","message":"Please take a look at the comments. Need to see how we can optimize and use the existing volume snapmirror methods to handle share server replication.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"93f68000_04c8ca58","updated":"2026-08-06 08:17:27.000000000","message":"Addressed review comments.","commit_id":"14ac590bf25b21c323566bd0c0839c378aa33389"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"50bb41fcdb70dd03d85a22cbbeabc411a8ce2cd4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"909ed9e1_b7b6f625","updated":"2026-08-07 11:08:52.000000000","message":"recheck","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"d4e55af17a77ec1a91620015b8946dadbad0fc1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"eb7a37ce_d8672680","updated":"2026-08-10 12:21:36.000000000","message":"recheck","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"18b60f86ffdfc3089c808b44e8776fa388627cb6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"30cfb020_a6a0fccc","updated":"2026-08-11 11:55:17.000000000","message":"Fixed the issue of custom IPspace creation in create share server replica workflow.","commit_id":"0b5802d86d5b66eb675fb203d51923fc97467fa1"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"d60e89ef2017f3628c46660bd752b0b4a4161df3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"118111c1_f20e14ae","updated":"2026-08-12 05:18:11.000000000","message":"recheck","commit_id":"99e4f7ee9f748b2133b89da6de6a1c5107cec05e"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6ca50afdec5d58f2c551bedc4e4e5bb90fd708d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"0c68296b_aea81c5f","updated":"2026-08-14 05:53:11.000000000","message":"Responded to few of the feedback comments with details/justification.","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"381837dcdee0136ae43229944b4a0d78c9b4e2ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"09962a0e_3e5ee38c","updated":"2026-08-13 05:13:47.000000000","message":"recheck","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a4395fb8a59f4d335ff404a1ef4742070e993aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"95009092_a6b8039e","updated":"2026-08-14 10:18:26.000000000","message":"IPSpace delete in destination changes pushed.","commit_id":"08f24ae0ddcba12eb09923f2dfd2f15c5304b5ed"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"5a7ad74f1a8b3b54b3e72c24bb97845b145488cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"422511f3_d41c2919","updated":"2026-08-14 10:58:08.000000000","message":"Addressed review comments.","commit_id":"1f6d92860e72e62ed839b85d7fbcc55dceba625a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bae9dc0078c8eff09e4c7fa8c6ab5a7cd66fddfd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"369e9b4c_8f9d005d","updated":"2026-08-18 04:34:38.000000000","message":"Please take a look at the comments.","commit_id":"b0c10e4bc61445ac1eb7191f400229082ab1982b"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"f5f61db4cb8a0756e3bf6facaa99eb2b47b8f117","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"de259822_32093a5b","updated":"2026-08-20 09:44:25.000000000","message":"recheck","commit_id":"b0c10e4bc61445ac1eb7191f400229082ab1982b"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4d8ab5c334e9ab7dd51793e21919a8d672e22e20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"f54538cb_48e31d96","updated":"2026-08-18 05:36:40.000000000","message":"recheck","commit_id":"b0c10e4bc61445ac1eb7191f400229082ab1982b"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"d3c800e35d8fad23b6e66c31992f91b8850c7651","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"204508fe_dc6dc081","updated":"2026-08-20 12:50:26.000000000","message":"recheck","commit_id":"760cb0cfc6dfc42f8bca03351724f3c909a08941"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"ef969b8979bc23dc3d059289c54febc31f989dd0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"255826a5_9e359c9d","updated":"2026-08-21 06:00:24.000000000","message":"run-NetApp CI","commit_id":"760cb0cfc6dfc42f8bca03351724f3c909a08941"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"472cbf14c6632c4c4ed211fad95f5d2990faa479","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"c42df3a2_7e599cb6","updated":"2026-08-21 06:59:33.000000000","message":"Fixed review comments.","commit_id":"2f6976a03e06f2a97e1d5554012ff745a99a1c78"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"83f7a3bf1fe7553b7b51d86f70236bb041be3a1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"e8686133_272e926f","updated":"2026-08-21 15:00:23.000000000","message":"run-NetApp CI","commit_id":"2f6976a03e06f2a97e1d5554012ff745a99a1c78"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"2db105504b40db77e146f0707106039a3ec5f1ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"85ed6720_8d94ae0b","updated":"2026-08-25 07:46:58.000000000","message":"Thanks for this — the happy path looks good to me. Please have a look at my inline remarks","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"c3d3ea8972a5ebf396fe28f6dc70d291a1456be8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"649e700e_78000387","updated":"2026-08-25 07:35:37.000000000","message":"recheck","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"c2a68d85133241b386a059eb738b5916fc1a989e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"f8317b5d_733eb766","updated":"2026-08-25 04:11:18.000000000","message":"recheck","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"95bcfcb9ff93008c77343531635465535659bdf2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"2511922f_38573f15","updated":"2026-08-25 20:51:56.000000000","message":"LGTM ..!","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"66e80bd988aed8e8047e8ed49d517f2080d75a1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"e8508158_dbad19b4","updated":"2026-08-26 17:15:07.000000000","message":"LGTM Thanks for addressing comments and working on this feature Kumar.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"e3eed86961cba2ffbdcbe5cb9f1cc1623722def6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"6dc30ed2_c1b9e78c","updated":"2026-08-26 15:48:08.000000000","message":"Let\u0027s get this going once the core change is in :)","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"d7591a30de881b1d2aaacde609b9737e059bad1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"fc0ac850_5e2aac05","updated":"2026-08-26 20:55:13.000000000","message":"Thank you for working on this change. Please take a look at the comments inline","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"75eef8e278e85c68d4e2a42bd40d7c1c0245faef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"cbd95755_519d999a","updated":"2026-08-25 16:30:52.000000000","message":"run-NetApp CI","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"5b2e4f32_1c938d63","updated":"2026-08-28 17:39:45.000000000","message":"@gouthampravi@gmail.com Thanks for the review comments. Addressed your feedback comments, please review.","commit_id":"dcc3991e6377d4912b801bf86e5488c89c0ffd99"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"69e38c270a5fae1ef715b89c9479110200359392","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"7aeff9ae_19b8e1dd","updated":"2026-08-29 04:05:23.000000000","message":"recheck","commit_id":"dcc3991e6377d4912b801bf86e5488c89c0ffd99"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"eb65a52eeceb5ee2ae9fae29f567a44c7e9ddb24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"331ce201_185f5b91","updated":"2026-08-28 17:41:38.000000000","message":"run-NetApp CI","commit_id":"dcc3991e6377d4912b801bf86e5488c89c0ffd99"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"1c2b6880249956da0464e49293c97c90e8e01434","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"7785ddd1_4c9c36ac","updated":"2026-08-30 13:47:54.000000000","message":"run-NetApp CI","commit_id":"dcc3991e6377d4912b801bf86e5488c89c0ffd99"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"875ec014743401ab38cdab0144f38831cb6f094a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"b1e9c3d0_74078144","updated":"2026-08-29 11:55:31.000000000","message":"run-NetApp CI","commit_id":"dcc3991e6377d4912b801bf86e5488c89c0ffd99"},{"author":{"_account_id":39225,"name":"Prudhvi","display_name":"Prudhvi","email":"prudhvi.openstack@gmail.com","username":"Prudhvi"},"change_message_id":"895ff5998d8e2e5474e1ea3d1f0f492aca861a12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"d89e93ae_8178a719","updated":"2026-08-31 04:42:44.000000000","message":"run-NetApp CI","commit_id":"dcc3991e6377d4912b801bf86e5488c89c0ffd99"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ab621133d163d72262d5e91bade5e42aeba6c2dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"5e573d13_c715d261","updated":"2026-09-01 05:17:46.000000000","message":"Logging guidelines need to be followed. Still reviewing.","commit_id":"50088e3d8ef1e748eef5f6a205e95413001840f2"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"8094c1b6861360e7e396cd4560e7e6322b03e47a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"38b81377_8e50a7e6","updated":"2026-09-01 17:34:00.000000000","message":"Hi @gouthampravi@gmail.com have updated the comments.","commit_id":"00e77a78e316e66592b0dbd40953d856207558cc"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"fbe1950d911a615c011e002d90a1aaa49591c10b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"9bb7ed81_ed294cd8","updated":"2026-09-02 03:25:37.000000000","message":"recheck","commit_id":"b1390b587efe2e5677c0308df52255b33fef4b90"},{"author":{"_account_id":38373,"name":"Manideep","display_name":"Manideep","email":"manideep.openstack@gmail.com","username":"manideepn","status":"NetApp"},"change_message_id":"8e9a8e17922a2e17de5cf605a67c0e4fc90aba95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"ef35da3d_afbbe3e7","updated":"2026-09-02 09:25:13.000000000","message":"recheck","commit_id":"8b6720687fcaa7d19d145273be42ca763e336f96"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"f4b4553dad954b1a441f1bf3b1209fda21b5bbd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"b59997b0_cd9401b0","updated":"2026-09-22 13:04:30.000000000","message":"@kumart.lead@gmail.com Issue we observed during testing. Please fix it.","commit_id":"a3e121d12f38c7848e906d068877c36be99e2a59"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"1726dd970895310e528f5b6d270159db22171c28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"e884ff2d_c045e46a","updated":"2026-09-04 10:15:35.000000000","message":"recheck","commit_id":"a3e121d12f38c7848e906d068877c36be99e2a59"}],"doc/source/admin/netapp_cluster_mode_driver.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":125,"context_line":"Share Server Replicas (DHSS\u003dTrue)"},{"line_number":126,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"The NetApp cDOT driver supports share server replica operations when"},{"line_number":129,"context_line":"``driver_handles_share_servers`` is set to ``True``."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"In this mode, Manila can create an additional share server replica in a"}],"source_content_type":"text/x-rst","patch_set":40,"id":"4ba4b664_fa9ebe4c","line":128,"range":{"start_line":128,"start_character":11,"end_line":128,"end_character":15},"updated":"2026-08-27 08:02:46.000000000","message":"isn\u0027t this legacy naming for ONTAP?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[{"line_number":125,"context_line":"Share Server Replicas (DHSS\u003dTrue)"},{"line_number":126,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"The NetApp cDOT driver supports share server replica operations when"},{"line_number":129,"context_line":"``driver_handles_share_servers`` is set to ``True``."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"In this mode, Manila can create an additional share server replica in a"}],"source_content_type":"text/x-rst","patch_set":40,"id":"bf8aa2d8_6fff0322","line":128,"range":{"start_line":128,"start_character":11,"end_line":128,"end_character":15},"in_reply_to":"4ba4b664_fa9ebe4c","updated":"2026-08-28 17:39:45.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"}],"manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"26d217eef60a6bfb665b6d38ec947e798bbb68f3","unresolved":true,"context_lines":[{"line_number":3936,"context_line":"                               dest_volume\u003ddest_volume)"},{"line_number":3937,"context_line":""},{"line_number":3938,"context_line":"    @na_utils.trace"},{"line_number":3939,"context_line":"    def break_snapmirror_svm(self, source_vserver\u003dNone, dest_vserver\u003dNone):"},{"line_number":3940,"context_line":"        \"\"\"Break an SVM-scoped SnapMirror relationship."},{"line_number":3941,"context_line":""},{"line_number":3942,"context_line":"        Uses POST /private/cli/snapmirror/break to break SVM-DR on the"}],"source_content_type":"text/x-python","patch_set":7,"id":"9b881a99_1aa0fa34","line":3939,"updated":"2026-06-24 15:19:23.000000000","message":"@sanketh.shetty@netapp.com Lets rename this as break_svm_snapmirror to avoid regression(refer line #6905 falling back to ZAPI)","commit_id":"ef63f052eb8eb7d66b0babde93f0bb533505037f"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":3936,"context_line":"                               dest_volume\u003ddest_volume)"},{"line_number":3937,"context_line":""},{"line_number":3938,"context_line":"    @na_utils.trace"},{"line_number":3939,"context_line":"    def break_snapmirror_svm(self, source_vserver\u003dNone, dest_vserver\u003dNone):"},{"line_number":3940,"context_line":"        \"\"\"Break an SVM-scoped SnapMirror relationship."},{"line_number":3941,"context_line":""},{"line_number":3942,"context_line":"        Uses POST /private/cli/snapmirror/break to break SVM-DR on the"}],"source_content_type":"text/x-python","patch_set":7,"id":"1988708e_07d9b241","line":3939,"in_reply_to":"9b881a99_1aa0fa34","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"ef63f052eb8eb7d66b0babde93f0bb533505037f"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"3a60c146ff814a83962347f8cc92fbc11500d6af","unresolved":false,"context_lines":[{"line_number":3936,"context_line":"                               dest_volume\u003ddest_volume)"},{"line_number":3937,"context_line":""},{"line_number":3938,"context_line":"    @na_utils.trace"},{"line_number":3939,"context_line":"    def break_snapmirror_svm(self, source_vserver\u003dNone, dest_vserver\u003dNone):"},{"line_number":3940,"context_line":"        \"\"\"Break an SVM-scoped SnapMirror relationship."},{"line_number":3941,"context_line":""},{"line_number":3942,"context_line":"        Uses POST /private/cli/snapmirror/break to break SVM-DR on the"}],"source_content_type":"text/x-python","patch_set":7,"id":"58905cd5_1ec6d18e","line":3939,"in_reply_to":"9b881a99_1aa0fa34","updated":"2026-07-09 12:46:21.000000000","message":"Done","commit_id":"ef63f052eb8eb7d66b0babde93f0bb533505037f"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                    \"exhausted. Aborting.\") % job_url"},{"line_number":175,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _poll_job_preserve_code(self, job_url):"},{"line_number":178,"context_line":"        \"\"\"Poll a job to terminal state, preserving its error code."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        Behaves like `_wait_job_result` but raises the original"}],"source_content_type":"text/x-python","patch_set":22,"id":"001b4882_9a767004","line":177,"updated":"2026-08-03 11:03:01.000000000","message":"Instead, why dont we pass a param to _wait_job_result to throw error on terminal state? This seems like","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"3432a191996d56aa1e047d46142d8cb9157ecc4c","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                    \"exhausted. Aborting.\") % job_url"},{"line_number":175,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _poll_job_preserve_code(self, job_url):"},{"line_number":178,"context_line":"        \"\"\"Poll a job to terminal state, preserving its error code."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        Behaves like `_wait_job_result` but raises the original"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a6a3367_d0152661","line":177,"in_reply_to":"001b4882_9a767004","updated":"2026-08-03 12:56:25.000000000","message":"Purposes are different, hence different methods. Below are the differences for context:\n\n1. On terminal \u0027failure\u0027, _wait_job_result raises the generic NetAppDriverException (losing code/message), while _poll_job_preserve_code raises the original NaApiError(code, message).\n\n2. _wait_job_result uses @utils.retry on NaRetryableError, wrapping a NaRetryableError around every non-success state — including \u0027failure\u0027. Since that\u0027s the retried exception type, a job that has definitively failed still gets re-polled for the entire timeout budget before finally converting to NetAppDriverException. _poll_job_preserve_code instead uses a plain loop and returns immediately on \u0027failure\u0027 — it\u0027s fail-fast.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":5923,"context_line":"        if not cluster_peers:"},{"line_number":5924,"context_line":"            msg \u003d _(\"Cluster peering with \u0027%(peer)s\u0027 not found.\")"},{"line_number":5925,"context_line":"            raise exception.NetAppException(msg % {\u0027peer\u0027: peer_cluster_name})"},{"line_number":5926,"context_line":"        availability \u003d cluster_peers[0].get(\u0027availability\u0027)"},{"line_number":5927,"context_line":"        if availability !\u003d \u0027available\u0027:"},{"line_number":5928,"context_line":"            msg \u003d _(\"Cluster peer \u0027%(peer)s\u0027 exists but is not in \""},{"line_number":5929,"context_line":"                    \"\u0027available\u0027 state. Current state: %(state)s.\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"2a4434c8_5c984fed","line":5926,"updated":"2026-08-03 11:03:01.000000000","message":"Instead of hardcoding cluster_peers[0], we need to filter the get_cluster_peers request using source and destination cluster name. A single cluster can be peered to multiple clusters. This can turn into false positive if the first peer returned is not the one we are looking for.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":5923,"context_line":"        if not cluster_peers:"},{"line_number":5924,"context_line":"            msg \u003d _(\"Cluster peering with \u0027%(peer)s\u0027 not found.\")"},{"line_number":5925,"context_line":"            raise exception.NetAppException(msg % {\u0027peer\u0027: peer_cluster_name})"},{"line_number":5926,"context_line":"        availability \u003d cluster_peers[0].get(\u0027availability\u0027)"},{"line_number":5927,"context_line":"        if availability !\u003d \u0027available\u0027:"},{"line_number":5928,"context_line":"            msg \u003d _(\"Cluster peer \u0027%(peer)s\u0027 exists but is not in \""},{"line_number":5929,"context_line":"                    \"\u0027available\u0027 state. Current state: %(state)s.\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"30f08fc7_dd1892d2","line":5926,"in_reply_to":"2a4434c8_5c984fed","updated":"2026-08-03 12:19:47.000000000","message":"Here peer_cluster_name is destination cluster name only. \nwe are calling to get the peers clusters(destination clusters) for the source cluster(client instance) by passing destination cluster name already as query param filter.\nONTAP allows only once for peering for each peer cluster(A to B).\n\nOnly one record would exists if it is peered. No false positive here.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bae9dc0078c8eff09e4c7fa8c6ab5a7cd66fddfd","unresolved":false,"context_lines":[{"line_number":5923,"context_line":"        if not cluster_peers:"},{"line_number":5924,"context_line":"            msg \u003d _(\"Cluster peering with \u0027%(peer)s\u0027 not found.\")"},{"line_number":5925,"context_line":"            raise exception.NetAppException(msg % {\u0027peer\u0027: peer_cluster_name})"},{"line_number":5926,"context_line":"        availability \u003d cluster_peers[0].get(\u0027availability\u0027)"},{"line_number":5927,"context_line":"        if availability !\u003d \u0027available\u0027:"},{"line_number":5928,"context_line":"            msg \u003d _(\"Cluster peer \u0027%(peer)s\u0027 exists but is not in \""},{"line_number":5929,"context_line":"                    \"\u0027available\u0027 state. Current state: %(state)s.\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"f42bba83_ae6b6bb1","line":5926,"in_reply_to":"30f08fc7_dd1892d2","updated":"2026-08-18 04:34:38.000000000","message":"acknowledged.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":5953,"context_line":"        return response.get(\u0027records\u0027, [])"},{"line_number":5954,"context_line":""},{"line_number":5955,"context_line":"    @na_utils.trace"},{"line_number":5956,"context_line":"    def validate_mediator_reachable(self, peer_cluster_name):"},{"line_number":5957,"context_line":"        \"\"\"Validate that a mediator is reachable and connected."},{"line_number":5958,"context_line":""},{"line_number":5959,"context_line":"        :param peer_cluster_name: name of the peer cluster."}],"source_content_type":"text/x-python","patch_set":22,"id":"218bd326_a19e92ca","line":5956,"updated":"2026-08-03 11:03:01.000000000","message":"Should this method be in client_cmode_rest? It should be partof the orchestration code, not in the client.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":5953,"context_line":"        return response.get(\u0027records\u0027, [])"},{"line_number":5954,"context_line":""},{"line_number":5955,"context_line":"    @na_utils.trace"},{"line_number":5956,"context_line":"    def validate_mediator_reachable(self, peer_cluster_name):"},{"line_number":5957,"context_line":"        \"\"\"Validate that a mediator is reachable and connected."},{"line_number":5958,"context_line":""},{"line_number":5959,"context_line":"        :param peer_cluster_name: name of the peer cluster."}],"source_content_type":"text/x-python","patch_set":22,"id":"2758bb5e_f578cd52","line":5956,"in_reply_to":"218bd326_a19e92ca","updated":"2026-08-05 10:54:53.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6022,"context_line":"                enable_tunneling\u003dFalse)"},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"    @na_utils.trace"},{"line_number":6025,"context_line":"    def get_volume_details(self, svm_name, volume_name, fields\u003dNone):"},{"line_number":6026,"context_line":"        \"\"\"Get volume details by SVM and volume name."},{"line_number":6027,"context_line":""},{"line_number":6028,"context_line":"        :param svm_name: name of the SVM."}],"source_content_type":"text/x-python","patch_set":22,"id":"2ac72b54_d1b897c7","line":6025,"updated":"2026-08-03 11:03:01.000000000","message":"Why cant we use _get_volume_by_args instead? Introducing a new wrapper method is futile here.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":6022,"context_line":"                enable_tunneling\u003dFalse)"},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"    @na_utils.trace"},{"line_number":6025,"context_line":"    def get_volume_details(self, svm_name, volume_name, fields\u003dNone):"},{"line_number":6026,"context_line":"        \"\"\"Get volume details by SVM and volume name."},{"line_number":6027,"context_line":""},{"line_number":6028,"context_line":"        :param svm_name: name of the SVM."}],"source_content_type":"text/x-python","patch_set":22,"id":"ae5af2e7_57e056d8","line":6025,"in_reply_to":"2ac72b54_d1b897c7","updated":"2026-08-03 12:19:47.000000000","message":"_get_volume_by_args() is marked as non public method by python conventions. There is no public method available/not need so far, hence added one now.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bae9dc0078c8eff09e4c7fa8c6ab5a7cd66fddfd","unresolved":false,"context_lines":[{"line_number":6022,"context_line":"                enable_tunneling\u003dFalse)"},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"    @na_utils.trace"},{"line_number":6025,"context_line":"    def get_volume_details(self, svm_name, volume_name, fields\u003dNone):"},{"line_number":6026,"context_line":"        \"\"\"Get volume details by SVM and volume name."},{"line_number":6027,"context_line":""},{"line_number":6028,"context_line":"        :param svm_name: name of the SVM."}],"source_content_type":"text/x-python","patch_set":22,"id":"7042a9a4_abc037c8","line":6025,"in_reply_to":"ae5af2e7_57e056d8","updated":"2026-08-18 04:34:38.000000000","message":"ack","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6063,"context_line":"            body[\u0027policy\u0027] \u003d policy_name"},{"line_number":6064,"context_line":"        if create_destination_enabled:"},{"line_number":6065,"context_line":"            body[\u0027create_destination\u0027] \u003d {\u0027enabled\u0027: True}"},{"line_number":6066,"context_line":"        return self.send_request(\u0027/snapmirror/relationships/\u0027, \u0027post\u0027,"},{"line_number":6067,"context_line":"                                 body\u003dbody)"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":22,"id":"37587b21_92136c88","line":6066,"updated":"2026-08-03 11:03:01.000000000","message":"Why can we not use the _create_snapmirror() method instead? The method can locally be used and source and destination volume attributes can be renamed to make it more generic?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5319319038149e98b650c5e074b642b8fc7e02d4","unresolved":false,"context_lines":[{"line_number":6063,"context_line":"            body[\u0027policy\u0027] \u003d policy_name"},{"line_number":6064,"context_line":"        if create_destination_enabled:"},{"line_number":6065,"context_line":"            body[\u0027create_destination\u0027] \u003d {\u0027enabled\u0027: True}"},{"line_number":6066,"context_line":"        return self.send_request(\u0027/snapmirror/relationships/\u0027, \u0027post\u0027,"},{"line_number":6067,"context_line":"                                 body\u003dbody)"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":22,"id":"8f3da419_3ff2e791","line":6066,"in_reply_to":"37587b21_92136c88","updated":"2026-08-05 15:38:22.000000000","message":"We hit the same REST endpoint, but _create_snapmirror is volume-centric and can\u0027t be reused by just renaming attributes. It builds paths as vserver + \u0027:\u0027 + volume, maps only ZAPI-compat properties (relationship-type, identity-preserve — the latter isn\u0027t even valid on REST and is kept only for signature parity), and swallows relation-exists as success.\n\nSVM SMAS create needs a different shape: SVM paths (svm:), both source/destination.cluster names, create_destination.enabled, and destination.ipspace — none of which exist in that ZAPI-derived mapping. So create_svm_snapmirror is intentionally separate, mirroring the existing *_vol vs SVM split. Will rename this method (e.g. create_snapmirror_relationship) to be more generic, in line with ONTAP REST API reusability.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6067,"context_line":"                                 body\u003dbody)"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"    @na_utils.trace"},{"line_number":6070,"context_line":"    def update_svm_snapmirror_state(self, relationship_uuid, state\u003dNone):"},{"line_number":6071,"context_line":"        \"\"\"Updates the state of an SVM-level SnapMirror relationship."},{"line_number":6072,"context_line":""},{"line_number":6073,"context_line":"        :param relationship_uuid: uuid of the SnapMirror relationship."}],"source_content_type":"text/x-python","patch_set":22,"id":"1bd02998_ed15a7ed","line":6070,"range":{"start_line":6070,"start_character":8,"end_line":6070,"end_character":35},"updated":"2026-08-03 11:03:01.000000000","message":"existing _set_snapmirror_state method can be reused with minor refactoring?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":6067,"context_line":"                                 body\u003dbody)"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"    @na_utils.trace"},{"line_number":6070,"context_line":"    def update_svm_snapmirror_state(self, relationship_uuid, state\u003dNone):"},{"line_number":6071,"context_line":"        \"\"\"Updates the state of an SVM-level SnapMirror relationship."},{"line_number":6072,"context_line":""},{"line_number":6073,"context_line":"        :param relationship_uuid: uuid of the SnapMirror relationship."}],"source_content_type":"text/x-python","patch_set":22,"id":"a3549d1a_0673fce7","line":6070,"range":{"start_line":6070,"start_character":8,"end_line":6070,"end_character":35},"in_reply_to":"1bd02998_ed15a7ed","updated":"2026-08-03 12:19:47.000000000","message":"_set_snapmirror_state() includes business logic to get the relationship and validate other state which is not aligning ONTAP rest api generic method. We do some of the steps like getting snapmirror relationship in workflow already.\n\nHence, dedicated patch call for state for reuse and do job of what it is responsible for (patch only).","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6079,"context_line":"            body\u003dbody)"},{"line_number":6080,"context_line":""},{"line_number":6081,"context_line":"    @na_utils.trace"},{"line_number":6082,"context_line":"    def failover_svm_snapmirror(self, rel_id, source_path, destination_path,"},{"line_number":6083,"context_line":"                                state\u003d\u0027in_sync\u0027):"},{"line_number":6084,"context_line":"        \"\"\"Failover SVM snapmirror relationship by swapping endpoints."},{"line_number":6085,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"4af18a9a_e7a6701f","line":6082,"range":{"start_line":6082,"start_character":8,"end_line":6082,"end_character":31},"updated":"2026-08-03 11:03:01.000000000","message":"this isnt failover - its reverse resync? Failover only breaks the snapmirror.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":false,"context_lines":[{"line_number":6079,"context_line":"            body\u003dbody)"},{"line_number":6080,"context_line":""},{"line_number":6081,"context_line":"    @na_utils.trace"},{"line_number":6082,"context_line":"    def failover_svm_snapmirror(self, rel_id, source_path, destination_path,"},{"line_number":6083,"context_line":"                                state\u003d\u0027in_sync\u0027):"},{"line_number":6084,"context_line":"        \"\"\"Failover SVM snapmirror relationship by swapping endpoints."},{"line_number":6085,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"296a66bf_83bd69a2","line":6082,"range":{"start_line":6082,"start_character":8,"end_line":6082,"end_character":31},"in_reply_to":"4af18a9a_e7a6701f","updated":"2026-08-05 14:11:17.000000000","message":"we are aligning with smas terminology in ontap where they call it failover.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6104,"context_line":"            f\u0027/snapmirror/relationships/{rel_id}\u0027, \u0027patch\u0027, body\u003dbody)"},{"line_number":6105,"context_line":""},{"line_number":6106,"context_line":"    @na_utils.trace"},{"line_number":6107,"context_line":"    def get_smas_protected_volumes(self, svm_name):"},{"line_number":6108,"context_line":"        \"\"\"Return names of SMAS-protected data volumes on an SVM."},{"line_number":6109,"context_line":""},{"line_number":6110,"context_line":"        GET /storage/volumes?svm.name\u003d\u003csvm\u003e\u0026smas_protection\u003dprotected"}],"source_content_type":"text/x-python","patch_set":22,"id":"3ca09587_4cf141f0","line":6107,"range":{"start_line":6107,"start_character":8,"end_line":6107,"end_character":34},"updated":"2026-08-03 11:03:01.000000000","message":"Why cannot we reuse _get_volume_by_args instead?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":6104,"context_line":"            f\u0027/snapmirror/relationships/{rel_id}\u0027, \u0027patch\u0027, body\u003dbody)"},{"line_number":6105,"context_line":""},{"line_number":6106,"context_line":"    @na_utils.trace"},{"line_number":6107,"context_line":"    def get_smas_protected_volumes(self, svm_name):"},{"line_number":6108,"context_line":"        \"\"\"Return names of SMAS-protected data volumes on an SVM."},{"line_number":6109,"context_line":""},{"line_number":6110,"context_line":"        GET /storage/volumes?svm.name\u003d\u003csvm\u003e\u0026smas_protection\u003dprotected"}],"source_content_type":"text/x-python","patch_set":22,"id":"0cfe4d62_1cb63398","line":6107,"range":{"start_line":6107,"start_character":8,"end_line":6107,"end_character":34},"in_reply_to":"3ca09587_4cf141f0","updated":"2026-08-03 12:19:47.000000000","message":"_get_volume_by_args is single volume record method. We need to list of volumes.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6140,"context_line":"            query\u003dquery)"},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"    @na_utils.trace"},{"line_number":6143,"context_line":"    def get_svm_snapmirror_relationships(self, source_path, dest_path,"},{"line_number":6144,"context_line":"                                         fields\u003dNone,"},{"line_number":6145,"context_line":"                                         list_destinations_only\u003dNone):"},{"line_number":6146,"context_line":"        \"\"\"Gets SVM-level SnapMirror relationships matching the given paths."}],"source_content_type":"text/x-python","patch_set":22,"id":"3a33dba9_71a87f8a","line":6143,"range":{"start_line":6143,"start_character":8,"end_line":6143,"end_character":40},"updated":"2026-08-03 11:03:01.000000000","message":"Please use get_snapmirrors() method instead","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":true,"context_lines":[{"line_number":6140,"context_line":"            query\u003dquery)"},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"    @na_utils.trace"},{"line_number":6143,"context_line":"    def get_svm_snapmirror_relationships(self, source_path, dest_path,"},{"line_number":6144,"context_line":"                                         fields\u003dNone,"},{"line_number":6145,"context_line":"                                         list_destinations_only\u003dNone):"},{"line_number":6146,"context_line":"        \"\"\"Gets SVM-level SnapMirror relationships matching the given paths."}],"source_content_type":"text/x-python","patch_set":22,"id":"abf3e2a1_a2fc55d2","line":6143,"range":{"start_line":6143,"start_character":8,"end_line":6143,"end_character":40},"in_reply_to":"3a33dba9_71a87f8a","updated":"2026-08-05 14:11:17.000000000","message":"good point. @Kumar you will handle this ?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5319319038149e98b650c5e074b642b8fc7e02d4","unresolved":false,"context_lines":[{"line_number":6140,"context_line":"            query\u003dquery)"},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"    @na_utils.trace"},{"line_number":6143,"context_line":"    def get_svm_snapmirror_relationships(self, source_path, dest_path,"},{"line_number":6144,"context_line":"                                         fields\u003dNone,"},{"line_number":6145,"context_line":"                                         list_destinations_only\u003dNone):"},{"line_number":6146,"context_line":"        \"\"\"Gets SVM-level SnapMirror relationships matching the given paths."}],"source_content_type":"text/x-python","patch_set":22,"id":"97075241_8333ddaf","line":6143,"range":{"start_line":6143,"start_character":8,"end_line":6143,"end_character":40},"in_reply_to":"abf3e2a1_a2fc55d2","updated":"2026-08-05 15:38:22.000000000","message":"get_snapmirrors() hits the same endpoint, but it remaps records into the ZAPI-compat shape (mirror-state, source-vserver, is-healthy as \u0027true\u0027/\u0027false\u0027, etc.) and uses a fixed field list. SMAS needs native REST records (state, healthy, unhealthy_reason, uuid) with caller-selected fields, so we kept get_svm_snapmirror_relationships as a thin REST query. Will rename it (e.g. get_snapmirror_relationships) for generic ONTAP REST reusability if preferred.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6951,"context_line":"        return response.get(\u0027records\u0027, [])"},{"line_number":6952,"context_line":""},{"line_number":6953,"context_line":"    @na_utils.trace"},{"line_number":6954,"context_line":"    def get_svm_volumes_with_aggregates(self, svm_name):"},{"line_number":6955,"context_line":"        \"\"\"Return a name-keyed dict of non-root volumes with aggregate info."},{"line_number":6956,"context_line":""},{"line_number":6957,"context_line":"        Issues a single bulk GET against the volumes collection, filtered to"}],"source_content_type":"text/x-python","patch_set":22,"id":"1020b31c_63123ec4","line":6954,"range":{"start_line":6954,"start_character":8,"end_line":6954,"end_character":39},"updated":"2026-08-03 11:03:01.000000000","message":"_get_volume_by_args can be used here.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":6951,"context_line":"        return response.get(\u0027records\u0027, [])"},{"line_number":6952,"context_line":""},{"line_number":6953,"context_line":"    @na_utils.trace"},{"line_number":6954,"context_line":"    def get_svm_volumes_with_aggregates(self, svm_name):"},{"line_number":6955,"context_line":"        \"\"\"Return a name-keyed dict of non-root volumes with aggregate info."},{"line_number":6956,"context_line":""},{"line_number":6957,"context_line":"        Issues a single bulk GET against the volumes collection, filtered to"}],"source_content_type":"text/x-python","patch_set":22,"id":"3879f90f_5eab9b54","line":6954,"range":{"start_line":6954,"start_character":8,"end_line":6954,"end_character":39},"in_reply_to":"1020b31c_63123ec4","updated":"2026-08-03 12:19:47.000000000","message":"_get_volume_by_args is single volume record method. We need to list of volumes.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6996,"context_line":"        self.send_request("},{"line_number":6997,"context_line":"            \u0027/storage/volumes\u0027, \u0027delete\u0027,"},{"line_number":6998,"context_line":"            query\u003d{\u0027uuid\u0027: \u0027|\u0027.join(volume_uuids),"},{"line_number":6999,"context_line":"                   \u0027return_timeout\u0027: 120})"},{"line_number":7000,"context_line":""},{"line_number":7001,"context_line":"    @na_utils.trace"},{"line_number":7002,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"}],"source_content_type":"text/x-python","patch_set":22,"id":"13b84e3c_7c2d72d3","line":6999,"updated":"2026-08-03 11:03:01.000000000","message":"Any particular reason for setting the return_timeout value on this API call?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":true,"context_lines":[{"line_number":6996,"context_line":"        self.send_request("},{"line_number":6997,"context_line":"            \u0027/storage/volumes\u0027, \u0027delete\u0027,"},{"line_number":6998,"context_line":"            query\u003d{\u0027uuid\u0027: \u0027|\u0027.join(volume_uuids),"},{"line_number":6999,"context_line":"                   \u0027return_timeout\u0027: 120})"},{"line_number":7000,"context_line":""},{"line_number":7001,"context_line":"    @na_utils.trace"},{"line_number":7002,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"}],"source_content_type":"text/x-python","patch_set":22,"id":"e6568f8e_bb8b5eda","line":6999,"in_reply_to":"13b84e3c_7c2d72d3","updated":"2026-08-05 14:11:17.000000000","message":"Will be updating this to pass uuid is json body. Timeout will be removed","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[{"line_number":6996,"context_line":"        self.send_request("},{"line_number":6997,"context_line":"            \u0027/storage/volumes\u0027, \u0027delete\u0027,"},{"line_number":6998,"context_line":"            query\u003d{\u0027uuid\u0027: \u0027|\u0027.join(volume_uuids),"},{"line_number":6999,"context_line":"                   \u0027return_timeout\u0027: 120})"},{"line_number":7000,"context_line":""},{"line_number":7001,"context_line":"    @na_utils.trace"},{"line_number":7002,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"}],"source_content_type":"text/x-python","patch_set":22,"id":"262233a6_6f4877de","line":6999,"in_reply_to":"e6568f8e_bb8b5eda","updated":"2026-08-06 08:17:27.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":7024,"context_line":"                body\u003dbody)"},{"line_number":7025,"context_line":"        except netapp_api.api.NaApiError as e:"},{"line_number":7026,"context_line":"            if e.code \u003d\u003d netapp_api.EREST_ENTRY_NOT_FOUND:"},{"line_number":7027,"context_line":"                LOG.info(\u0027No CIFS service to delete on SVM %s.\u0027,"},{"line_number":7028,"context_line":"                         vserver_name)"},{"line_number":7029,"context_line":"            else:"},{"line_number":7030,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":22,"id":"dca3dc15_701f1b2b","line":7027,"range":{"start_line":7027,"start_character":20,"end_line":7027,"end_character":24},"updated":"2026-08-03 11:03:01.000000000","message":"Please log error or warning.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":7024,"context_line":"                body\u003dbody)"},{"line_number":7025,"context_line":"        except netapp_api.api.NaApiError as e:"},{"line_number":7026,"context_line":"            if e.code \u003d\u003d netapp_api.EREST_ENTRY_NOT_FOUND:"},{"line_number":7027,"context_line":"                LOG.info(\u0027No CIFS service to delete on SVM %s.\u0027,"},{"line_number":7028,"context_line":"                         vserver_name)"},{"line_number":7029,"context_line":"            else:"},{"line_number":7030,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":22,"id":"14f4d789_46f46335","line":7027,"range":{"start_line":7027,"start_character":20,"end_line":7027,"end_character":24},"in_reply_to":"dca3dc15_701f1b2b","updated":"2026-08-05 10:54:53.000000000","message":"This is delete_share_server_replica_workflow which follows idempotency.\nInfo make sense.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d210003e4813d15d57b4ca14b7a6359300a942c9","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                    \"exhausted. Aborting.\") % job_url"},{"line_number":175,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _poll_job_preserve_code(self, job_url):"},{"line_number":178,"context_line":"        \"\"\"Poll a job to terminal state, preserving its error code."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        Behaves like `_wait_job_result` but raises the original"}],"source_content_type":"text/x-python","patch_set":24,"id":"98f1766e_14f9b072","line":177,"updated":"2026-08-08 08:15:58.000000000","message":"`_poll_job_preserve_code` is structurally identical to `_wait_job_result`. The only difference is whether the failure branch raises `NetAppDriverException` or `NaApiError`. Add a `preserve_error_code\u003dFalse` parameter to `_wait_job_result` instead.","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"65022c015bb55cbe8c46010a9009f6f0600ada31","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                    \"exhausted. Aborting.\") % job_url"},{"line_number":175,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _poll_job_preserve_code(self, job_url):"},{"line_number":178,"context_line":"        \"\"\"Poll a job to terminal state, preserving its error code."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        Behaves like `_wait_job_result` but raises the original"}],"source_content_type":"text/x-python","patch_set":24,"id":"da9f9828_0ee7219a","line":177,"in_reply_to":"98f1766e_14f9b072","updated":"2026-08-11 11:51:43.000000000","message":"Done","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d210003e4813d15d57b4ca14b7a6359300a942c9","unresolved":true,"context_lines":[{"line_number":7012,"context_line":"            self._poll_job_preserve_code(job_url)"},{"line_number":7013,"context_line":""},{"line_number":7014,"context_line":"    @na_utils.trace"},{"line_number":7015,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"},{"line_number":7016,"context_line":"        \"\"\"Break snapmirror relationship on a dp-destination SVM."},{"line_number":7017,"context_line":""},{"line_number":7018,"context_line":"        Converts the dp-destination SVM from subtype\u003ddp_destination to"}],"source_content_type":"text/x-python","patch_set":24,"id":"b815c6de_cd43d9ad","line":7015,"updated":"2026-08-08 08:15:58.000000000","message":"`snapmirror_break_dest_svm` (1-line wrapper around `break_snapmirror_svm`, line 7015), `get_volume_details` (wraps `_get_volume_by_args`, line 6025), and `_check_svm_smas_snapmirror_state_allows_delete` aren\u0027t called? Please remove dead code, or if `_check_svm_smas_snapmirror_state_allows_delete` is intended to be called, wire it into the delete flow.","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6ca50afdec5d58f2c551bedc4e4e5bb90fd708d6","unresolved":true,"context_lines":[{"line_number":7012,"context_line":"            self._poll_job_preserve_code(job_url)"},{"line_number":7013,"context_line":""},{"line_number":7014,"context_line":"    @na_utils.trace"},{"line_number":7015,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"},{"line_number":7016,"context_line":"        \"\"\"Break snapmirror relationship on a dp-destination SVM."},{"line_number":7017,"context_line":""},{"line_number":7018,"context_line":"        Converts the dp-destination SVM from subtype\u003ddp_destination to"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa1a0dfd_b0b0d884","line":7015,"in_reply_to":"b815c6de_cd43d9ad","updated":"2026-08-14 05:53:11.000000000","message":"Clarification on get_volume_details():\nWe used to have one usage in this PR as part of refactoring we removed it in create_share_server_replica earlier.\n\nHowever, it is being used in multiple workflows(in other .py files) of next patch\nhttps://review.opendev.org/c/openstack/manila/+/996629","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"32c5c8224f35cb5b737a8a3bed3df65ee8ba8c60","unresolved":false,"context_lines":[{"line_number":7012,"context_line":"            self._poll_job_preserve_code(job_url)"},{"line_number":7013,"context_line":""},{"line_number":7014,"context_line":"    @na_utils.trace"},{"line_number":7015,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"},{"line_number":7016,"context_line":"        \"\"\"Break snapmirror relationship on a dp-destination SVM."},{"line_number":7017,"context_line":""},{"line_number":7018,"context_line":"        Converts the dp-destination SVM from subtype\u003ddp_destination to"}],"source_content_type":"text/x-python","patch_set":24,"id":"552684ef_0308aec0","line":7015,"in_reply_to":"fa1a0dfd_b0b0d884","updated":"2026-08-14 11:58:24.000000000","message":"Done","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"e652ce839b62ea5f8b7ddd64440fdb50200017ab","unresolved":true,"context_lines":[{"line_number":3999,"context_line":"        \"\"\""},{"line_number":4000,"context_line":"        if dest_vserver:"},{"line_number":4001,"context_line":"            body \u003d {\u0027destination-path\u0027: \u0027%s:\u0027 % dest_vserver}"},{"line_number":4002,"context_line":"        elif source_vserver:"},{"line_number":4003,"context_line":"            body \u003d {\u0027source-path\u0027: \u0027%s:\u0027 % source_vserver}"},{"line_number":4004,"context_line":"        else:"},{"line_number":4005,"context_line":"            msg \u003d _(\u0027Either source_vserver or dest_vserver must be provided \u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"aae24162_0643a0aa","line":4002,"updated":"2026-08-13 16:10:55.000000000","message":"If user provided both, we need to consider both. With if elif, you endup ignoring source_vserver.","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"5a7ad74f1a8b3b54b3e72c24bb97845b145488cc","unresolved":false,"context_lines":[{"line_number":3999,"context_line":"        \"\"\""},{"line_number":4000,"context_line":"        if dest_vserver:"},{"line_number":4001,"context_line":"            body \u003d {\u0027destination-path\u0027: \u0027%s:\u0027 % dest_vserver}"},{"line_number":4002,"context_line":"        elif source_vserver:"},{"line_number":4003,"context_line":"            body \u003d {\u0027source-path\u0027: \u0027%s:\u0027 % source_vserver}"},{"line_number":4004,"context_line":"        else:"},{"line_number":4005,"context_line":"            msg \u003d _(\u0027Either source_vserver or dest_vserver must be provided \u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"b32ed058_9f8aee94","line":4002,"in_reply_to":"aae24162_0643a0aa","updated":"2026-08-14 10:58:08.000000000","message":"Good point. This private cli only works for dest_vserver. Hence have removed the source_vserver addition to body.","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"90eea88b68d8c6c2fd56e3c53ded9be008687de9","unresolved":true,"context_lines":[{"line_number":3999,"context_line":"        \"\"\""},{"line_number":4000,"context_line":"        if dest_vserver:"},{"line_number":4001,"context_line":"            body \u003d {\u0027destination-path\u0027: \u0027%s:\u0027 % dest_vserver}"},{"line_number":4002,"context_line":"        elif source_vserver:"},{"line_number":4003,"context_line":"            body \u003d {\u0027source-path\u0027: \u0027%s:\u0027 % source_vserver}"},{"line_number":4004,"context_line":"        else:"},{"line_number":4005,"context_line":"            msg \u003d _(\u0027Either source_vserver or dest_vserver must be provided \u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"ebf81255_13683492","line":4002,"in_reply_to":"b32ed058_9f8aee94","updated":"2026-08-24 08:52:59.000000000","message":"source_vserver is not needed in param then","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"db4a10565d2b78b63d22c995410341a4d7e0bebf","unresolved":false,"context_lines":[{"line_number":3999,"context_line":"        \"\"\""},{"line_number":4000,"context_line":"        if dest_vserver:"},{"line_number":4001,"context_line":"            body \u003d {\u0027destination-path\u0027: \u0027%s:\u0027 % dest_vserver}"},{"line_number":4002,"context_line":"        elif source_vserver:"},{"line_number":4003,"context_line":"            body \u003d {\u0027source-path\u0027: \u0027%s:\u0027 % source_vserver}"},{"line_number":4004,"context_line":"        else:"},{"line_number":4005,"context_line":"            msg \u003d _(\u0027Either source_vserver or dest_vserver must be provided \u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"3d62a6bd_15c1446b","line":4002,"in_reply_to":"dae70c0f_53df51a2","updated":"2026-08-25 05:21:49.000000000","message":"Acknowledged","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"63f556aa57b37d28bce7afd3610ddf851a5e1c49","unresolved":true,"context_lines":[{"line_number":3999,"context_line":"        \"\"\""},{"line_number":4000,"context_line":"        if dest_vserver:"},{"line_number":4001,"context_line":"            body \u003d {\u0027destination-path\u0027: \u0027%s:\u0027 % dest_vserver}"},{"line_number":4002,"context_line":"        elif source_vserver:"},{"line_number":4003,"context_line":"            body \u003d {\u0027source-path\u0027: \u0027%s:\u0027 % source_vserver}"},{"line_number":4004,"context_line":"        else:"},{"line_number":4005,"context_line":"            msg \u003d _(\u0027Either source_vserver or dest_vserver must be provided \u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"dae70c0f_53df51a2","line":4002,"in_reply_to":"ebf81255_13683492","updated":"2026-08-25 05:17:43.000000000","message":"This is to match the signature of the function in client_cmode.py.","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d4708ba122b4a1b9b147717141010f7fc5f1108e","unresolved":true,"context_lines":[{"line_number":5982,"context_line":"        \"\"\"Add aggregates to an SVM."},{"line_number":5983,"context_line":""},{"line_number":5984,"context_line":"        :param svm_uuid: uuid of the SVM."},{"line_number":5985,"context_line":""},{"line_number":5986,"context_line":"        :param svm_name: name of the SVM, used by the /private/cli"},{"line_number":5987,"context_line":"            fallback."},{"line_number":5988,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"22998687_dcbbe5cb","line":5985,"updated":"2026-08-13 10:25:35.000000000","message":"unnecessary extra lines","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"2e090297904b683169ed8b19bc7886739e28d308","unresolved":true,"context_lines":[{"line_number":5982,"context_line":"        \"\"\"Add aggregates to an SVM."},{"line_number":5983,"context_line":""},{"line_number":5984,"context_line":"        :param svm_uuid: uuid of the SVM."},{"line_number":5985,"context_line":""},{"line_number":5986,"context_line":"        :param svm_name: name of the SVM, used by the /private/cli"},{"line_number":5987,"context_line":"            fallback."},{"line_number":5988,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"99dd95fa_1d061b41","line":5985,"in_reply_to":"22998687_dcbbe5cb","updated":"2026-08-14 05:55:31.000000000","message":"@sanketh.shetty@netapp.com Please fix this in your diff.","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"935cbe746361ef3db8ae1adfb3a12ecc81f6cd05","unresolved":false,"context_lines":[{"line_number":5982,"context_line":"        \"\"\"Add aggregates to an SVM."},{"line_number":5983,"context_line":""},{"line_number":5984,"context_line":"        :param svm_uuid: uuid of the SVM."},{"line_number":5985,"context_line":""},{"line_number":5986,"context_line":"        :param svm_name: name of the SVM, used by the /private/cli"},{"line_number":5987,"context_line":"            fallback."},{"line_number":5988,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"5f0cb010_0bc6e462","line":5985,"in_reply_to":"99dd95fa_1d061b41","updated":"2026-08-14 11:02:34.000000000","message":"Done","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"5a7ad74f1a8b3b54b3e72c24bb97845b145488cc","unresolved":false,"context_lines":[{"line_number":5982,"context_line":"        \"\"\"Add aggregates to an SVM."},{"line_number":5983,"context_line":""},{"line_number":5984,"context_line":"        :param svm_uuid: uuid of the SVM."},{"line_number":5985,"context_line":""},{"line_number":5986,"context_line":"        :param svm_name: name of the SVM, used by the /private/cli"},{"line_number":5987,"context_line":"            fallback."},{"line_number":5988,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"b9d10164_5fa9ca94","line":5985,"in_reply_to":"99dd95fa_1d061b41","updated":"2026-08-14 10:58:08.000000000","message":"Done","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d4708ba122b4a1b9b147717141010f7fc5f1108e","unresolved":true,"context_lines":[{"line_number":6018,"context_line":"                enable_tunneling\u003dFalse)"},{"line_number":6019,"context_line":""},{"line_number":6020,"context_line":"    @na_utils.trace"},{"line_number":6021,"context_line":"    def get_volume_details(self, svm_name, volume_name, fields\u003dNone):"},{"line_number":6022,"context_line":"        \"\"\"Get volume details by SVM and volume name."},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"        :param svm_name: name of the SVM."}],"source_content_type":"text/x-python","patch_set":29,"id":"bdcadc83_fd44494e","line":6021,"updated":"2026-08-13 10:25:35.000000000","message":"where it is used ? If in same file, better use _get_volume_by_args","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6ca50afdec5d58f2c551bedc4e4e5bb90fd708d6","unresolved":false,"context_lines":[{"line_number":6018,"context_line":"                enable_tunneling\u003dFalse)"},{"line_number":6019,"context_line":""},{"line_number":6020,"context_line":"    @na_utils.trace"},{"line_number":6021,"context_line":"    def get_volume_details(self, svm_name, volume_name, fields\u003dNone):"},{"line_number":6022,"context_line":"        \"\"\"Get volume details by SVM and volume name."},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"        :param svm_name: name of the SVM."}],"source_content_type":"text/x-python","patch_set":29,"id":"d7000798_7c83913d","line":6021,"in_reply_to":"bdcadc83_fd44494e","updated":"2026-08-14 05:53:11.000000000","message":"We used to have one usage in this PR as part of refactoring we removed it in create_share_server_replica earlier.\n\nHowever, it is being used in multiple workflows(in other .py files) of next patch\nhttps://review.opendev.org/c/openstack/manila/+/996629","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d4708ba122b4a1b9b147717141010f7fc5f1108e","unresolved":true,"context_lines":[{"line_number":6029,"context_line":"            vol_name\u003dvolume_name, vserver\u003dsvm_name, fields\u003dfields)"},{"line_number":6030,"context_line":""},{"line_number":6031,"context_line":"    @na_utils.trace"},{"line_number":6032,"context_line":"    def create_snapmirror_relationship(self, src_path, dest_path,"},{"line_number":6033,"context_line":"                                       source_cluster_name,"},{"line_number":6034,"context_line":"                                       destination_cluster_name,"},{"line_number":6035,"context_line":"                                       policy_name\u003dNone,"}],"source_content_type":"text/x-python","patch_set":29,"id":"b71c4ca2_891e1ea8","line":6032,"updated":"2026-08-13 10:25:35.000000000","message":"May be create_snapmirror_svm ?","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6ca50afdec5d58f2c551bedc4e4e5bb90fd708d6","unresolved":false,"context_lines":[{"line_number":6029,"context_line":"            vol_name\u003dvolume_name, vserver\u003dsvm_name, fields\u003dfields)"},{"line_number":6030,"context_line":""},{"line_number":6031,"context_line":"    @na_utils.trace"},{"line_number":6032,"context_line":"    def create_snapmirror_relationship(self, src_path, dest_path,"},{"line_number":6033,"context_line":"                                       source_cluster_name,"},{"line_number":6034,"context_line":"                                       destination_cluster_name,"},{"line_number":6035,"context_line":"                                       policy_name\u003dNone,"}],"source_content_type":"text/x-python","patch_set":29,"id":"e277da50_8c5c1fd6","line":6032,"in_reply_to":"b71c4ca2_891e1ea8","updated":"2026-08-14 05:53:11.000000000","message":"We want to keep it generic named and inline with ONTAP endpoint.\nThis is being discussed at comment: https://review.opendev.org/c/openstack/manila/+/991844/comment/37587b21_92136c88/","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d4708ba122b4a1b9b147717141010f7fc5f1108e","unresolved":true,"context_lines":[{"line_number":6902,"context_line":"        return na_utils.SM_IN_SYNC_STATE"},{"line_number":6903,"context_line":""},{"line_number":6904,"context_line":"    @na_utils.trace"},{"line_number":6905,"context_line":"    def delete_snapmirror_relationship(self, relationship_uuid,"},{"line_number":6906,"context_line":"                                       source_only\u003dFalse):"},{"line_number":6907,"context_line":"        \"\"\"Delete a SnapMirror relationship by UUID."},{"line_number":6908,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"c0463d5c_95deaead","line":6905,"updated":"2026-08-13 10:25:35.000000000","message":"delete_snapmirror_svm ?","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6ca50afdec5d58f2c551bedc4e4e5bb90fd708d6","unresolved":false,"context_lines":[{"line_number":6902,"context_line":"        return na_utils.SM_IN_SYNC_STATE"},{"line_number":6903,"context_line":""},{"line_number":6904,"context_line":"    @na_utils.trace"},{"line_number":6905,"context_line":"    def delete_snapmirror_relationship(self, relationship_uuid,"},{"line_number":6906,"context_line":"                                       source_only\u003dFalse):"},{"line_number":6907,"context_line":"        \"\"\"Delete a SnapMirror relationship by UUID."},{"line_number":6908,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"33f9db10_3050146d","line":6905,"in_reply_to":"c0463d5c_95deaead","updated":"2026-08-14 05:53:11.000000000","message":"We want to keep it generic named and inline with ONTAP endpoint.\nThis is being discussed at comment: https://review.opendev.org/c/openstack/manila/+/991844/comment/37587b21_92136c88/","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bae9dc0078c8eff09e4c7fa8c6ab5a7cd66fddfd","unresolved":true,"context_lines":[{"line_number":7016,"context_line":"            self._wait_job_result(job_url, preserve_error_code\u003dTrue)"},{"line_number":7017,"context_line":""},{"line_number":7018,"context_line":"    @na_utils.trace"},{"line_number":7019,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"},{"line_number":7020,"context_line":"        \"\"\"Break snapmirror relationship on a dp-destination SVM."},{"line_number":7021,"context_line":""},{"line_number":7022,"context_line":"        Converts the dp-destination SVM from subtype\u003ddp_destination to"}],"source_content_type":"text/x-python","patch_set":33,"id":"39733f42_23cb39ab","line":7019,"updated":"2026-08-18 04:34:38.000000000","message":"Is this method used anywhere? If not, do we need it?","commit_id":"fea5032b9e4bf1c225d8e4442e749117a777eefd"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"472cbf14c6632c4c4ed211fad95f5d2990faa479","unresolved":false,"context_lines":[{"line_number":7016,"context_line":"            self._wait_job_result(job_url, preserve_error_code\u003dTrue)"},{"line_number":7017,"context_line":""},{"line_number":7018,"context_line":"    @na_utils.trace"},{"line_number":7019,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"},{"line_number":7020,"context_line":"        \"\"\"Break snapmirror relationship on a dp-destination SVM."},{"line_number":7021,"context_line":""},{"line_number":7022,"context_line":"        Converts the dp-destination SVM from subtype\u003ddp_destination to"}],"source_content_type":"text/x-python","patch_set":33,"id":"625d201f_b5978ab7","line":7019,"in_reply_to":"0fd5ba08_2b0554bd","updated":"2026-08-21 06:59:33.000000000","message":"Done","commit_id":"fea5032b9e4bf1c225d8e4442e749117a777eefd"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5331b5c8bbde105341ee31efc43ee7bcaf88a7cb","unresolved":true,"context_lines":[{"line_number":7016,"context_line":"            self._wait_job_result(job_url, preserve_error_code\u003dTrue)"},{"line_number":7017,"context_line":""},{"line_number":7018,"context_line":"    @na_utils.trace"},{"line_number":7019,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"},{"line_number":7020,"context_line":"        \"\"\"Break snapmirror relationship on a dp-destination SVM."},{"line_number":7021,"context_line":""},{"line_number":7022,"context_line":"        Converts the dp-destination SVM from subtype\u003ddp_destination to"}],"source_content_type":"text/x-python","patch_set":33,"id":"0fd5ba08_2b0554bd","line":7019,"in_reply_to":"39733f42_23cb39ab","updated":"2026-08-18 05:40:35.000000000","message":"@sanketh.shetty@netapp.com Can you confirm/address this comment?","commit_id":"fea5032b9e4bf1c225d8e4442e749117a777eefd"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"d7591a30de881b1d2aaacde609b9737e059bad1d","unresolved":true,"context_lines":[{"line_number":6208,"context_line":"            },"},{"line_number":6209,"context_line":"        }"},{"line_number":6210,"context_line":"        if policy_name:"},{"line_number":6211,"context_line":"            body[\u0027policy\u0027] \u003d policy_name"},{"line_number":6212,"context_line":"        if create_destination:"},{"line_number":6213,"context_line":"            body[\u0027create_destination\u0027] \u003d {\u0027enabled\u0027: True}"},{"line_number":6214,"context_line":"        if destination_ipspace:"}],"source_content_type":"text/x-python","patch_set":40,"id":"2d35faf9_cc31715b","line":6211,"range":{"start_line":6211,"start_character":18,"end_line":6211,"end_character":24},"updated":"2026-08-26 20:55:13.000000000","message":"can this really be policy or should it be policy.name?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"38035c774a8d52a60715a546cc260205519c8777","unresolved":false,"context_lines":[{"line_number":6208,"context_line":"            },"},{"line_number":6209,"context_line":"        }"},{"line_number":6210,"context_line":"        if policy_name:"},{"line_number":6211,"context_line":"            body[\u0027policy\u0027] \u003d policy_name"},{"line_number":6212,"context_line":"        if create_destination:"},{"line_number":6213,"context_line":"            body[\u0027create_destination\u0027] \u003d {\u0027enabled\u0027: True}"},{"line_number":6214,"context_line":"        if destination_ipspace:"}],"source_content_type":"text/x-python","patch_set":40,"id":"c0c15f42_88881844","line":6211,"range":{"start_line":6211,"start_character":18,"end_line":6211,"end_character":24},"in_reply_to":"2d35faf9_cc31715b","updated":"2026-08-27 04:52:34.000000000","message":"This is inline with ONTAP REST documentation. Both ways works and validated internally.\n\nFrom swagger Doc:\nCreate a SnapMirror active sync relationship with SVM endpoint.\nPOST \"/api/snapmirror/relationships/\" \u0027{\"source\": { \"path\": \"src_svm:\"}, \"destination\": { \"path\": \"dst_svm:\"}, \"policy\": \"AutomatedFailOver\"}\u0027\n\nMarking as resolved.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"d7591a30de881b1d2aaacde609b9737e059bad1d","unresolved":true,"context_lines":[{"line_number":6432,"context_line":"        if vserver_info is None:"},{"line_number":6433,"context_line":"            LOG.error(\"Vserver %s does not exist.\", vserver_name)"},{"line_number":6434,"context_line":"            return"},{"line_number":6435,"context_line":"        if vserver_info.get(\u0027state\u0027) \u003d\u003d \u0027deleting\u0027:"},{"line_number":6436,"context_line":"            msg \u003d _(\u0027Vserver %s is in a deleting state on ONTAP. \u0027"},{"line_number":6437,"context_line":"                    \u0027If stuck in this state, manual cleanup on the \u0027"},{"line_number":6438,"context_line":"                    \u0027storage backend may be required.\u0027) % vserver_name"}],"source_content_type":"text/x-python","patch_set":40,"id":"3993f6a6_cd40a251","line":6435,"range":{"start_line":6435,"start_character":0,"end_line":6435,"end_character":51},"updated":"2026-08-26 20:55:13.000000000","message":"this changes the behavior for all svms regardless - is this the intended behavior?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":6432,"context_line":"        if vserver_info is None:"},{"line_number":6433,"context_line":"            LOG.error(\"Vserver %s does not exist.\", vserver_name)"},{"line_number":6434,"context_line":"            return"},{"line_number":6435,"context_line":"        if vserver_info.get(\u0027state\u0027) \u003d\u003d \u0027deleting\u0027:"},{"line_number":6436,"context_line":"            msg \u003d _(\u0027Vserver %s is in a deleting state on ONTAP. \u0027"},{"line_number":6437,"context_line":"                    \u0027If stuck in this state, manual cleanup on the \u0027"},{"line_number":6438,"context_line":"                    \u0027storage backend may be required.\u0027) % vserver_name"}],"source_content_type":"text/x-python","patch_set":40,"id":"77b01b00_7b280923","line":6435,"range":{"start_line":6435,"start_character":0,"end_line":6435,"end_character":51},"in_reply_to":"1f9b4dd0_c782f036","updated":"2026-08-28 11:51:17.000000000","message":"This is not a bug fix. This is an intermittent issue we hit while performing the delete of share server replica. This is mainly happening during destination SVM delete.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":6432,"context_line":"        if vserver_info is None:"},{"line_number":6433,"context_line":"            LOG.error(\"Vserver %s does not exist.\", vserver_name)"},{"line_number":6434,"context_line":"            return"},{"line_number":6435,"context_line":"        if vserver_info.get(\u0027state\u0027) \u003d\u003d \u0027deleting\u0027:"},{"line_number":6436,"context_line":"            msg \u003d _(\u0027Vserver %s is in a deleting state on ONTAP. \u0027"},{"line_number":6437,"context_line":"                    \u0027If stuck in this state, manual cleanup on the \u0027"},{"line_number":6438,"context_line":"                    \u0027storage backend may be required.\u0027) % vserver_name"}],"source_content_type":"text/x-python","patch_set":40,"id":"1f9b4dd0_c782f036","line":6435,"range":{"start_line":6435,"start_character":0,"end_line":6435,"end_character":51},"in_reply_to":"2ab55b0b_12389372","updated":"2026-08-27 08:02:46.000000000","message":"So a bugfix that\u0027s unrelated to the code being added here?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"5e90188ebf2e5052a8b069f5cba33fe4074d123c","unresolved":false,"context_lines":[{"line_number":6432,"context_line":"        if vserver_info is None:"},{"line_number":6433,"context_line":"            LOG.error(\"Vserver %s does not exist.\", vserver_name)"},{"line_number":6434,"context_line":"            return"},{"line_number":6435,"context_line":"        if vserver_info.get(\u0027state\u0027) \u003d\u003d \u0027deleting\u0027:"},{"line_number":6436,"context_line":"            msg \u003d _(\u0027Vserver %s is in a deleting state on ONTAP. \u0027"},{"line_number":6437,"context_line":"                    \u0027If stuck in this state, manual cleanup on the \u0027"},{"line_number":6438,"context_line":"                    \u0027storage backend may be required.\u0027) % vserver_name"}],"source_content_type":"text/x-python","patch_set":40,"id":"2ab55b0b_12389372","line":6435,"range":{"start_line":6435,"start_character":0,"end_line":6435,"end_character":51},"in_reply_to":"3993f6a6_cd40a251","updated":"2026-08-27 04:51:43.000000000","message":"Yes we have seen the behaviour in ontap where the SVM delete gets stuck in deleting state even with the svm root volume deleted. Hence failing here and not proceeding to next steps.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"d7591a30de881b1d2aaacde609b9737e059bad1d","unresolved":true,"context_lines":[{"line_number":6850,"context_line":"        ipspace[\u0027uuid\u0027] \u003d ipspace_info.get(\u0027uuid\u0027)"},{"line_number":6851,"context_line":""},{"line_number":6852,"context_line":"        if vserver_name:"},{"line_number":6853,"context_line":"            return [ipspace]"},{"line_number":6854,"context_line":""},{"line_number":6855,"context_line":"        return ipspace"},{"line_number":6856,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"ae89a2f2_6e10d0a5","line":6853,"updated":"2026-08-26 20:55:13.000000000","message":"this can upset the caller on https://opendev.org/openstack/manila/src/commit/6bd35b7a9b3c560a4cdc5bf3c34fcdd56ee381d7/manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py#L6610 - please preserve behavior or modify the callers to expect a list","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"c5d7c689cb72d8b0fe88acc484255d5ab83892c2","unresolved":false,"context_lines":[{"line_number":6850,"context_line":"        ipspace[\u0027uuid\u0027] \u003d ipspace_info.get(\u0027uuid\u0027)"},{"line_number":6851,"context_line":""},{"line_number":6852,"context_line":"        if vserver_name:"},{"line_number":6853,"context_line":"            return [ipspace]"},{"line_number":6854,"context_line":""},{"line_number":6855,"context_line":"        return ipspace"},{"line_number":6856,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"e327ba56_1db934f5","line":6853,"in_reply_to":"ae89a2f2_6e10d0a5","updated":"2026-08-28 11:51:58.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"d7591a30de881b1d2aaacde609b9737e059bad1d","unresolved":true,"context_lines":[{"line_number":6862,"context_line":"        ports \u003d ipspace[\u0027ports\u0027]"},{"line_number":6863,"context_line":""},{"line_number":6864,"context_line":"        for port in ports:"},{"line_number":6865,"context_line":"            if \u0027:\u0027 in port:"},{"line_number":6866,"context_line":"                _, port \u003d port.split(\u0027:\u0027, 1)"},{"line_number":6867,"context_line":"            self._delete_port_by_ipspace_and_broadcast_domain("},{"line_number":6868,"context_line":"                port,"},{"line_number":6869,"context_line":"                domain,"}],"source_content_type":"text/x-python","patch_set":40,"id":"bbf4a2e5_d4f53fee","line":6866,"range":{"start_line":6865,"start_character":12,"end_line":6866,"end_character":44},"updated":"2026-08-26 20:55:13.000000000","message":"feels like a separate bug fix bundled into this change...","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":6862,"context_line":"        ports \u003d ipspace[\u0027ports\u0027]"},{"line_number":6863,"context_line":""},{"line_number":6864,"context_line":"        for port in ports:"},{"line_number":6865,"context_line":"            if \u0027:\u0027 in port:"},{"line_number":6866,"context_line":"                _, port \u003d port.split(\u0027:\u0027, 1)"},{"line_number":6867,"context_line":"            self._delete_port_by_ipspace_and_broadcast_domain("},{"line_number":6868,"context_line":"                port,"},{"line_number":6869,"context_line":"                domain,"}],"source_content_type":"text/x-python","patch_set":40,"id":"ece23b2c_8f017812","line":6866,"range":{"start_line":6865,"start_character":12,"end_line":6866,"end_character":44},"in_reply_to":"4dcff7c7_5f9528a1","updated":"2026-08-28 11:51:17.000000000","message":"Done. Have moved this to seperate patch - https://review.opendev.org/c/openstack/manila/+/1002640","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"5e90188ebf2e5052a8b069f5cba33fe4074d123c","unresolved":false,"context_lines":[{"line_number":6862,"context_line":"        ports \u003d ipspace[\u0027ports\u0027]"},{"line_number":6863,"context_line":""},{"line_number":6864,"context_line":"        for port in ports:"},{"line_number":6865,"context_line":"            if \u0027:\u0027 in port:"},{"line_number":6866,"context_line":"                _, port \u003d port.split(\u0027:\u0027, 1)"},{"line_number":6867,"context_line":"            self._delete_port_by_ipspace_and_broadcast_domain("},{"line_number":6868,"context_line":"                port,"},{"line_number":6869,"context_line":"                domain,"}],"source_content_type":"text/x-python","patch_set":40,"id":"cbe52902_095fb6e0","line":6866,"range":{"start_line":6865,"start_character":12,"end_line":6866,"end_character":44},"in_reply_to":"bbf4a2e5_d4f53fee","updated":"2026-08-27 04:51:43.000000000","message":"Yes this was a bug we uncovered during our testing of ipspace deletion. The ipspace code logic was never tested before with REST client.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":6862,"context_line":"        ports \u003d ipspace[\u0027ports\u0027]"},{"line_number":6863,"context_line":""},{"line_number":6864,"context_line":"        for port in ports:"},{"line_number":6865,"context_line":"            if \u0027:\u0027 in port:"},{"line_number":6866,"context_line":"                _, port \u003d port.split(\u0027:\u0027, 1)"},{"line_number":6867,"context_line":"            self._delete_port_by_ipspace_and_broadcast_domain("},{"line_number":6868,"context_line":"                port,"},{"line_number":6869,"context_line":"                domain,"}],"source_content_type":"text/x-python","patch_set":40,"id":"4dcff7c7_5f9528a1","line":6866,"range":{"start_line":6865,"start_character":12,"end_line":6866,"end_character":44},"in_reply_to":"cbe52902_095fb6e0","updated":"2026-08-27 08:02:46.000000000","message":"So it needs to come in its own patch so it can be backported to older stable branches and tracked separately","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":7175,"context_line":"    def delete_volumes_by_uuids(self, volume_uuids):"},{"line_number":7176,"context_line":"        \"\"\"Delete multiple volumes by their UUIDs using a single bulk request."},{"line_number":7177,"context_line":""},{"line_number":7178,"context_line":"        Issues a single record-based bulk DELETE (JSON body with a"},{"line_number":7179,"context_line":"        ``records`` array of UUIDs) with ``continue_on_failure\u003dtrue``."},{"line_number":7180,"context_line":"        Without this flag, ONTAP stops processing at the first failed"},{"line_number":7181,"context_line":"        record and silently strands every subsequent record in the"},{"line_number":7182,"context_line":"        array (not deleted, not reported), so it must always be set."},{"line_number":7183,"context_line":""},{"line_number":7184,"context_line":"        The operation runs asynchronously as an ONTAP job. The job is"},{"line_number":7185,"context_line":"        polled to completion; when ONTAP reports a (possibly partial)"},{"line_number":7186,"context_line":"        failure, it aggregates every failed record\u0027s reason into the"},{"line_number":7187,"context_line":"        job\u0027s own ``error.message``/``error.code``, so that is the"},{"line_number":7188,"context_line":"        only source of error information used here."},{"line_number":7189,"context_line":""},{"line_number":7190,"context_line":"        :param volume_uuids: list of volume UUID strings to delete."},{"line_number":7191,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"f18f8bb8_719da7e0","line":7188,"range":{"start_line":7178,"start_character":7,"end_line":7188,"end_character":51},"updated":"2026-08-27 08:02:46.000000000","message":"Comments on these methods are getting lengthy. Can you editorialize? Or just drop them if they\u0027re obvious?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":7175,"context_line":"    def delete_volumes_by_uuids(self, volume_uuids):"},{"line_number":7176,"context_line":"        \"\"\"Delete multiple volumes by their UUIDs using a single bulk request."},{"line_number":7177,"context_line":""},{"line_number":7178,"context_line":"        Issues a single record-based bulk DELETE (JSON body with a"},{"line_number":7179,"context_line":"        ``records`` array of UUIDs) with ``continue_on_failure\u003dtrue``."},{"line_number":7180,"context_line":"        Without this flag, ONTAP stops processing at the first failed"},{"line_number":7181,"context_line":"        record and silently strands every subsequent record in the"},{"line_number":7182,"context_line":"        array (not deleted, not reported), so it must always be set."},{"line_number":7183,"context_line":""},{"line_number":7184,"context_line":"        The operation runs asynchronously as an ONTAP job. The job is"},{"line_number":7185,"context_line":"        polled to completion; when ONTAP reports a (possibly partial)"},{"line_number":7186,"context_line":"        failure, it aggregates every failed record\u0027s reason into the"},{"line_number":7187,"context_line":"        job\u0027s own ``error.message``/``error.code``, so that is the"},{"line_number":7188,"context_line":"        only source of error information used here."},{"line_number":7189,"context_line":""},{"line_number":7190,"context_line":"        :param volume_uuids: list of volume UUID strings to delete."},{"line_number":7191,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"3625defe_2d42e8f5","line":7188,"range":{"start_line":7178,"start_character":7,"end_line":7188,"end_character":51},"in_reply_to":"f18f8bb8_719da7e0","updated":"2026-08-28 11:51:17.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"}],"manila/share/drivers/netapp/dataontap/client/rest_api.py":[{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":59,"context_line":"EREST_CANNOT_MODITY_SPECIFIED_FIELD \u003d \u0027917628\u0027"},{"line_number":60,"context_line":"EREST_VOLDEL_NOT_ALLOW_BY_CLONE \u003d \u0027524615\u0027"},{"line_number":61,"context_line":"EREST_SNAPSHOT_NOT_FOUND \u003d \u0027542797\u0027"},{"line_number":62,"context_line":"EREST_SVM_DR_OPERATION_NOT_PERMITTED \u003d \u00272621570\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class NaRetryableError(api.NaApiError):"}],"source_content_type":"text/x-python","patch_set":13,"id":"667b1422_f12e509f","line":62,"updated":"2026-07-19 13:15:30.000000000","message":"Delete this.","commit_id":"31866206181f199363314ac02a3db63031c10b35"}],"manila/share/drivers/netapp/dataontap/cluster_mode/data_motion.py":[{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":987,"context_line":"                return"},{"line_number":988,"context_line":"            if vserver_info.get(\u0027subtype\u0027) !\u003d \u0027default\u0027:"},{"line_number":989,"context_line":"                if is_dest_path:"},{"line_number":990,"context_line":"                    client.break_svm_snapmirror(dest_vserver\u003dvserver_name)"},{"line_number":991,"context_line":"                else:"},{"line_number":992,"context_line":"                    client.break_svm_snapmirror(source_vserver\u003dvserver_name)"},{"line_number":993,"context_line":"                raise exception.VserverNotReady(vserver\u003dvserver_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"915febb0_ffed3b40","line":990,"updated":"2026-07-19 13:15:30.000000000","message":"@Sanketh recheck this. This might break svm dr.","commit_id":"31866206181f199363314ac02a3db63031c10b35"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":787,"context_line":""},{"line_number":788,"context_line":"        # Step 5: return without waiting for baseline transfer."},{"line_number":789,"context_line":"        backend_details \u003d {\u0027vserver_name\u0027: dp_dest_svm_name}"},{"line_number":790,"context_line":"        if replication_policy \u003d\u003d na_utils.SMAS_POLICY_NAME:"},{"line_number":791,"context_line":"            source_backend_details \u003d source_share_server.get("},{"line_number":792,"context_line":"                \u0027backend_details\u0027) or {}"},{"line_number":793,"context_line":"            source_ports \u003d source_backend_details.get(\u0027ports\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"baa2c9af_20096fd1","line":790,"updated":"2026-08-03 11:03:01.000000000","message":"Do we need to handle else block?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":787,"context_line":""},{"line_number":788,"context_line":"        # Step 5: return without waiting for baseline transfer."},{"line_number":789,"context_line":"        backend_details \u003d {\u0027vserver_name\u0027: dp_dest_svm_name}"},{"line_number":790,"context_line":"        if replication_policy \u003d\u003d na_utils.SMAS_POLICY_NAME:"},{"line_number":791,"context_line":"            source_backend_details \u003d source_share_server.get("},{"line_number":792,"context_line":"                \u0027backend_details\u0027) or {}"},{"line_number":793,"context_line":"            source_ports \u003d source_backend_details.get(\u0027ports\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"8403a4c4_8c4ce0bb","line":790,"in_reply_to":"baa2c9af_20096fd1","updated":"2026-08-03 12:19:47.000000000","message":"Not required. The else part can be extended when SVM-DR is implemented accordingly.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":1315,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"    @na_utils.trace"},{"line_number":1318,"context_line":"    def release_svm_snapmirror_relationship(self, src_share_server,"},{"line_number":1319,"context_line":"                                            dest_share_server):"},{"line_number":1320,"context_line":"        \"\"\"Release source-side SVM SnapMirror metadata and snapshots."},{"line_number":1321,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9fb15eb1_d9f9e117","line":1318,"updated":"2026-08-03 11:03:01.000000000","message":"We do not need to release the snapmirror if delete is successful. IMO, we can remove this method.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"    @na_utils.trace"},{"line_number":1318,"context_line":"    def release_svm_snapmirror_relationship(self, src_share_server,"},{"line_number":1319,"context_line":"                                            dest_share_server):"},{"line_number":1320,"context_line":"        \"\"\"Release source-side SVM SnapMirror metadata and snapshots."},{"line_number":1321,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1733b215_2d317d47","line":1318,"in_reply_to":"9fb15eb1_d9f9e117","updated":"2026-08-06 08:17:27.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"2db105504b40db77e146f0707106039a3ec5f1ee","unresolved":true,"context_lines":[{"line_number":812,"context_line":"            relationship \u003d dest_client.get_svm_snapmirror_by_id("},{"line_number":813,"context_line":"                relationship_uuid,"},{"line_number":814,"context_line":"                fields\u003d\u0027state,healthy,unhealthy_reason\u0027)"},{"line_number":815,"context_line":"        except Exception:"},{"line_number":816,"context_line":"            msg \u003d _(\u0027Could not create the share server replica \u0027"},{"line_number":817,"context_line":"                    \u0027between source SVM %(src)s and destination SVM \u0027"},{"line_number":818,"context_line":"                    \u0027%(dst)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":38,"id":"a3342552_b7be3289","line":815,"updated":"2026-08-25 07:46:58.000000000","message":"Step 2 auto-creates a lot of things. If any later step (3, 4 ..) raises, this `except` only logs and raises — the SVM/peering/relationship already created are never cleaned up.\n\nBecause the method raises, it never returns `backend_details`, so the replica is set to `error` and `vserver_name` is not persisted. Without that an admin can also not easily cleanup manually later.\n\nSo please implement a rollback of the relationship + auto-created SVM or persist enough that a manual delete by an admin would work.\n\nSince this is not affecting the happy path, would be fine by me to be done in a follow-up patch.","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"00a04420911b69d36616736dabdce7dacaf51b3b","unresolved":false,"context_lines":[{"line_number":812,"context_line":"            relationship \u003d dest_client.get_svm_snapmirror_by_id("},{"line_number":813,"context_line":"                relationship_uuid,"},{"line_number":814,"context_line":"                fields\u003d\u0027state,healthy,unhealthy_reason\u0027)"},{"line_number":815,"context_line":"        except Exception:"},{"line_number":816,"context_line":"            msg \u003d _(\u0027Could not create the share server replica \u0027"},{"line_number":817,"context_line":"                    \u0027between source SVM %(src)s and destination SVM \u0027"},{"line_number":818,"context_line":"                    \u0027%(dst)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":38,"id":"90f53939_2984324e","line":815,"in_reply_to":"a3342552_b7be3289","updated":"2026-08-25 13:45:48.000000000","message":"This is a good catch. This is a rare scenario, as a workaround user can do the clean up manually via ONTAP CLI/UI similar to the errors that occurs out of the Openstack control which does require human intervention.\n\nImplementing all the clean up steps as roll back will result as duplicating the delete_share_server_replica workflow which should be avoided ideally.\n\nWe will add a TODO comment for now and address this in a follow up patch by brainstorming some approaches like enhancing core + driver code(to persist/send detail_data in exception) etc.\n\nI\u0027m marking the comment as resolved with TODO comment in place.","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":911,"context_line":"        if unhealthy_reason:"},{"line_number":912,"context_line":"            reasons \u003d \u0027; \u0027.join("},{"line_number":913,"context_line":"                r.get(\u0027message\u0027, \u0027\u0027) for r in unhealthy_reason)"},{"line_number":914,"context_line":"            LOG.debug(\u0027SnapMirror relationship not yet synchronized \u0027"},{"line_number":915,"context_line":"                      \u0027(state\u003d%(state)s, healthy\u003d%(healthy)s): %(reason)s.\u0027,"},{"line_number":916,"context_line":"                      {\u0027state\u0027: state, \u0027healthy\u0027: healthy, \u0027reason\u0027: reasons})"},{"line_number":917,"context_line":"        return constants.REPLICA_STATE_OUT_OF_SYNC"}],"source_content_type":"text/x-python","patch_set":40,"id":"a8e83fcc_e3904809","line":914,"range":{"start_line":914,"start_character":16,"end_line":914,"end_character":21},"updated":"2026-08-27 08:02:46.000000000","message":"sounds like the unhealthy reason could be a warning?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[{"line_number":911,"context_line":"        if unhealthy_reason:"},{"line_number":912,"context_line":"            reasons \u003d \u0027; \u0027.join("},{"line_number":913,"context_line":"                r.get(\u0027message\u0027, \u0027\u0027) for r in unhealthy_reason)"},{"line_number":914,"context_line":"            LOG.debug(\u0027SnapMirror relationship not yet synchronized \u0027"},{"line_number":915,"context_line":"                      \u0027(state\u003d%(state)s, healthy\u003d%(healthy)s): %(reason)s.\u0027,"},{"line_number":916,"context_line":"                      {\u0027state\u0027: state, \u0027healthy\u0027: healthy, \u0027reason\u0027: reasons})"},{"line_number":917,"context_line":"        return constants.REPLICA_STATE_OUT_OF_SYNC"}],"source_content_type":"text/x-python","patch_set":40,"id":"70c829a2_b34a55a2","line":914,"range":{"start_line":914,"start_character":16,"end_line":914,"end_character":21},"in_reply_to":"a8e83fcc_e3904809","updated":"2026-08-28 17:39:45.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"f4b4553dad954b1a441f1bf3b1209fda21b5bbd6","unresolved":true,"context_lines":[{"line_number":784,"context_line":""},{"line_number":785,"context_line":"        try:"},{"line_number":786,"context_line":"            # Step 2: auto-creates dp-dest SVM, SVM peering and relationship."},{"line_number":787,"context_line":"            dest_client.create_snapmirror_relationship("},{"line_number":788,"context_line":"                src_path, dest_path,"},{"line_number":789,"context_line":"                source_cluster_name\u003dsource_cluster_name,"},{"line_number":790,"context_line":"                destination_cluster_name\u003ddestination_cluster_name,"}],"source_content_type":"text/x-python","patch_set":53,"id":"64a0b7c4_fbdef968","line":787,"updated":"2026-09-22 13:04:30.000000000","message":"create_share_server_replica used create_snapmirror_relationship with\ncreate_destination\u003dTrue, which asks ONTAP to auto-create the dp-destination\nSVM and establish the SVM peering in one call. That bundled peering step\nrequires the SVM\u0027s IPspace to match the cluster-peer\u0027s IPspace, so it fails\nfor manila tenant SVMs (created in a dedicated, non-Default IPspace) when the\ncluster peer lives in the Default IPspace:\n\n```\n  NaApiError 13303868: SVM peering failed ... both IPspaces must be the same.\n```","commit_id":"a3e121d12f38c7848e906d068877c36be99e2a59"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"317f28c5a241d2cdbef1a9fbd56b845f1e1b7d4b","unresolved":true,"context_lines":[{"line_number":784,"context_line":""},{"line_number":785,"context_line":"        try:"},{"line_number":786,"context_line":"            # Step 2: auto-creates dp-dest SVM, SVM peering and relationship."},{"line_number":787,"context_line":"            dest_client.create_snapmirror_relationship("},{"line_number":788,"context_line":"                src_path, dest_path,"},{"line_number":789,"context_line":"                source_cluster_name\u003dsource_cluster_name,"},{"line_number":790,"context_line":"                destination_cluster_name\u003ddestination_cluster_name,"}],"source_content_type":"text/x-python","patch_set":53,"id":"04220f82_364160ad","line":787,"in_reply_to":"64a0b7c4_fbdef968","updated":"2026-09-22 15:17:20.000000000","message":"This is ONTAP defect which Maurice also reported(internal ontap defect id CONTAP-737786), The fix is targeted to 9.19.1P4 release. You can validate this with that ONTAP build once.","commit_id":"a3e121d12f38c7848e906d068877c36be99e2a59"}],"manila/share/drivers/netapp/dataontap/cluster_mode/drv_multi_svm.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bae9dc0078c8eff09e4c7fa8c6ab5a7cd66fddfd","unresolved":true,"context_lines":[{"line_number":449,"context_line":"            context, share_server_replica,"},{"line_number":450,"context_line":"            share_server_replica_list)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    def check_for_unplanned_share_server_replica_failover("},{"line_number":453,"context_line":"            self, context, share_server_replica_list, share_server_resources):"},{"line_number":454,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":33,"id":"bc6dc002_6993da0e","line":452,"updated":"2026-08-18 04:34:38.000000000","message":"Is this method planned to be implemented?","commit_id":"fea5032b9e4bf1c225d8e4442e749117a777eefd"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5331b5c8bbde105341ee31efc43ee7bcaf88a7cb","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            context, share_server_replica,"},{"line_number":450,"context_line":"            share_server_replica_list)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"    def check_for_unplanned_share_server_replica_failover("},{"line_number":453,"context_line":"            self, context, share_server_replica_list, share_server_resources):"},{"line_number":454,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":33,"id":"cbeee793_54a6c5db","line":452,"in_reply_to":"bc6dc002_6993da0e","updated":"2026-08-18 05:40:35.000000000","message":"Yes. This is flip-resync we are currently working.","commit_id":"fea5032b9e4bf1c225d8e4442e749117a777eefd"}],"manila/share/drivers/netapp/dataontap/cluster_mode/drv_single_svm.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bae9dc0078c8eff09e4c7fa8c6ab5a7cd66fddfd","unresolved":true,"context_lines":[{"line_number":397,"context_line":"            share_server_replica_list):"},{"line_number":398,"context_line":"        raise NotImplementedError"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def check_for_unplanned_share_server_replica_failover("},{"line_number":401,"context_line":"            self, context, share_server_replica_list, share_server_resources):"},{"line_number":402,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":33,"id":"6cd3fbca_d50051dc","line":400,"updated":"2026-08-18 04:34:38.000000000","message":"Are we planning to implement this method?","commit_id":"fea5032b9e4bf1c225d8e4442e749117a777eefd"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5331b5c8bbde105341ee31efc43ee7bcaf88a7cb","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            share_server_replica_list):"},{"line_number":398,"context_line":"        raise NotImplementedError"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    def check_for_unplanned_share_server_replica_failover("},{"line_number":401,"context_line":"            self, context, share_server_replica_list, share_server_resources):"},{"line_number":402,"context_line":"        raise NotImplementedError"}],"source_content_type":"text/x-python","patch_set":33,"id":"3747fb2f_5052cbaa","line":400,"in_reply_to":"6cd3fbca_d50051dc","updated":"2026-08-18 05:40:35.000000000","message":"Yes. This is flip-resync we are currently working.","commit_id":"fea5032b9e4bf1c225d8e4442e749117a777eefd"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":3295,"context_line":"        properties \u003d properties or {}"},{"line_number":3296,"context_line":"        replication_type \u003d properties.get(\u0027replication_type\u0027, \u0027sync\u0027)"},{"line_number":3297,"context_line":"        if replication_type \u003d\u003d \u0027async\u0027:"},{"line_number":3298,"context_line":"            msg \u003d _(\"Async replication (SVM-DR) is not supported in this \""},{"line_number":3299,"context_line":"                    \"release. Use \u0027sync\u0027 for SM-as NAS replication.\")"},{"line_number":3300,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"        if replication_type !\u003d \u0027sync\u0027:"}],"source_content_type":"text/x-python","patch_set":22,"id":"868bf324_2a4742b6","line":3299,"range":{"start_line":3298,"start_character":21,"end_line":3299,"end_character":67},"updated":"2026-08-03 11:03:01.000000000","message":"This is an open ended message. We should keep the message generic to releases. May be something like: \"Async replication (SVM-DR) is not yet supported for share server replication. Please use \u0027sync\u0027 policy (AutomatedFailover) instead.\"","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":3295,"context_line":"        properties \u003d properties or {}"},{"line_number":3296,"context_line":"        replication_type \u003d properties.get(\u0027replication_type\u0027, \u0027sync\u0027)"},{"line_number":3297,"context_line":"        if replication_type \u003d\u003d \u0027async\u0027:"},{"line_number":3298,"context_line":"            msg \u003d _(\"Async replication (SVM-DR) is not supported in this \""},{"line_number":3299,"context_line":"                    \"release. Use \u0027sync\u0027 for SM-as NAS replication.\")"},{"line_number":3300,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"        if replication_type !\u003d \u0027sync\u0027:"}],"source_content_type":"text/x-python","patch_set":22,"id":"e8df42c9_4a5a1867","line":3299,"range":{"start_line":3298,"start_character":21,"end_line":3299,"end_character":67},"in_reply_to":"868bf324_2a4742b6","updated":"2026-08-05 10:54:53.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":3299,"context_line":"                    \"release. Use \u0027sync\u0027 for SM-as NAS replication.\")"},{"line_number":3300,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"        if replication_type !\u003d \u0027sync\u0027:"},{"line_number":3303,"context_line":"            msg \u003d _(\"Unsupported share server replication type: \""},{"line_number":3304,"context_line":"                    \"\u0027%(type)s\u0027. Supported types: \u0027sync\u0027.\")"},{"line_number":3305,"context_line":"            raise exception.NetAppException("}],"source_content_type":"text/x-python","patch_set":22,"id":"5bd141af_8688c48d","line":3302,"updated":"2026-08-03 11:03:01.000000000","message":"Shouldnt this check be enough to fail the support? if !sync \u003d\u003d if async?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":3299,"context_line":"                    \"release. Use \u0027sync\u0027 for SM-as NAS replication.\")"},{"line_number":3300,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"        if replication_type !\u003d \u0027sync\u0027:"},{"line_number":3303,"context_line":"            msg \u003d _(\"Unsupported share server replication type: \""},{"line_number":3304,"context_line":"                    \"\u0027%(type)s\u0027. Supported types: \u0027sync\u0027.\")"},{"line_number":3305,"context_line":"            raise exception.NetAppException("}],"source_content_type":"text/x-python","patch_set":22,"id":"416d7957_96b198d8","line":3302,"in_reply_to":"5bd141af_8688c48d","updated":"2026-08-03 12:19:47.000000000","message":"This is to catch any typo/gibberish value.\nex: replication_type\u003drandom","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"76f9d08477e75077f1982b07e1f77a0e7ea29504","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            replication_policy)"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    @na_utils.trace"},{"line_number":1064,"context_line":"    def create_replica(self, context, replica_list, new_replica,"},{"line_number":1065,"context_line":"                       access_rules, share_snapshots, share_server\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Creates the new replica on this backend and sets up SnapMirror."}],"source_content_type":"text/x-python","patch_set":3,"id":"2ade5d0d_7205c140","line":1063,"updated":"2026-06-22 14:05:12.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"45e6d3b756753e153776ad244791f13bc4658c12"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"9af936903967c2ad5164ba7500b2dcd86f17ac6e","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            replication_policy)"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    @na_utils.trace"},{"line_number":1064,"context_line":"    def create_replica(self, context, replica_list, new_replica,"},{"line_number":1065,"context_line":"                       access_rules, share_snapshots, share_server\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Creates the new replica on this backend and sets up SnapMirror."}],"source_content_type":"text/x-python","patch_set":3,"id":"37329f36_bb0bf0e3","line":1063,"in_reply_to":"2ade5d0d_7205c140","updated":"2026-06-23 04:16:13.000000000","message":"Done","commit_id":"45e6d3b756753e153776ad244791f13bc4658c12"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"49dbefb5755f37edb3b9d43af7c2bfb5922c17b6","unresolved":true,"context_lines":[{"line_number":3180,"context_line":"    def _check_svm_smas_snapmirror_state_allows_delete("},{"line_number":3181,"context_line":"            self, src_vserver, dest_vserver, dest_client):"},{"line_number":3182,"context_line":"        \"\"\"SMAS pre-check: block delete if transfer or failover in progress.\"\"\""},{"line_number":3183,"context_line":"        snapmirrors \u003d dest_client.get_snapmirrors_svm("},{"line_number":3184,"context_line":"            source_vserver\u003dsrc_vserver, dest_vserver\u003ddest_vserver)"},{"line_number":3185,"context_line":"        if not snapmirrors:"},{"line_number":3186,"context_line":"            LOG.debug(\u0027No SnapMirror relationship found between source \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"199d151f_c942dba1","line":3183,"updated":"2026-07-10 05:12:08.000000000","message":"@sanketh.shetty@netapp.com As discussed we need to use get_svm_snapmirror_relationships() for all share server replica and avoid dependency on ZAPI-rest contract based API.","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":3180,"context_line":"    def _check_svm_smas_snapmirror_state_allows_delete("},{"line_number":3181,"context_line":"            self, src_vserver, dest_vserver, dest_client):"},{"line_number":3182,"context_line":"        \"\"\"SMAS pre-check: block delete if transfer or failover in progress.\"\"\""},{"line_number":3183,"context_line":"        snapmirrors \u003d dest_client.get_snapmirrors_svm("},{"line_number":3184,"context_line":"            source_vserver\u003dsrc_vserver, dest_vserver\u003ddest_vserver)"},{"line_number":3185,"context_line":"        if not snapmirrors:"},{"line_number":3186,"context_line":"            LOG.debug(\u0027No SnapMirror relationship found between source \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"adb59849_1cb685e4","line":3183,"in_reply_to":"199d151f_c942dba1","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"287a09ee0b85dbe6dfa0882085566f4f61c7b065","unresolved":true,"context_lines":[{"line_number":3214,"context_line":"    @na_utils.trace"},{"line_number":3215,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"},{"line_number":3216,"context_line":"        \"\"\"Delete all FlexClone volumes on the SVM.\"\"\""},{"line_number":3217,"context_line":"        flexclones \u003d client.get_flexclones_on_svm(vserver_name)"},{"line_number":3218,"context_line":"        if not flexclones:"},{"line_number":3219,"context_line":"            LOG.debug(\u0027No FlexClone volumes found on SVM %(svm)s.\u0027,"},{"line_number":3220,"context_line":"                      {\u0027svm\u0027: vserver_name})"}],"source_content_type":"text/x-python","patch_set":14,"id":"1c4c6dff_04446407","line":3217,"updated":"2026-07-10 05:25:04.000000000","message":"@sanketh.shetty@netapp.com We can directly use self._get_volumes_on_svm(svm_name, is_root\u003dFalse, is_flexclone\u003dTrue) and remove additional function.","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":3214,"context_line":"    @na_utils.trace"},{"line_number":3215,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"},{"line_number":3216,"context_line":"        \"\"\"Delete all FlexClone volumes on the SVM.\"\"\""},{"line_number":3217,"context_line":"        flexclones \u003d client.get_flexclones_on_svm(vserver_name)"},{"line_number":3218,"context_line":"        if not flexclones:"},{"line_number":3219,"context_line":"            LOG.debug(\u0027No FlexClone volumes found on SVM %(svm)s.\u0027,"},{"line_number":3220,"context_line":"                      {\u0027svm\u0027: vserver_name})"}],"source_content_type":"text/x-python","patch_set":14,"id":"5500a4c9_66c1a8dd","line":3217,"in_reply_to":"1c4c6dff_04446407","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"287a09ee0b85dbe6dfa0882085566f4f61c7b065","unresolved":true,"context_lines":[{"line_number":3228,"context_line":"    @na_utils.trace"},{"line_number":3229,"context_line":"    def _cleanup_data_volumes_on_svm(self, vserver_name, client):"},{"line_number":3230,"context_line":"        \"\"\"Delete all non-root data volumes on the destination SVM.\"\"\""},{"line_number":3231,"context_line":"        volumes \u003d client.get_non_root_volumes_on_svm(vserver_name)"},{"line_number":3232,"context_line":"        if not volumes:"},{"line_number":3233,"context_line":"            LOG.debug(\u0027No data volumes found on SVM %(svm)s.\u0027,"},{"line_number":3234,"context_line":"                      {\u0027svm\u0027: vserver_name})"}],"source_content_type":"text/x-python","patch_set":14,"id":"7afd1381_b917fc06","line":3231,"updated":"2026-07-10 05:25:04.000000000","message":"@sanketh.shetty@netapp.com We can directly use self._get_volumes_on_svm(svm_name, is_root\u003dFalse) and remove additional function.","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":3228,"context_line":"    @na_utils.trace"},{"line_number":3229,"context_line":"    def _cleanup_data_volumes_on_svm(self, vserver_name, client):"},{"line_number":3230,"context_line":"        \"\"\"Delete all non-root data volumes on the destination SVM.\"\"\""},{"line_number":3231,"context_line":"        volumes \u003d client.get_non_root_volumes_on_svm(vserver_name)"},{"line_number":3232,"context_line":"        if not volumes:"},{"line_number":3233,"context_line":"            LOG.debug(\u0027No data volumes found on SVM %(svm)s.\u0027,"},{"line_number":3234,"context_line":"                      {\u0027svm\u0027: vserver_name})"}],"source_content_type":"text/x-python","patch_set":14,"id":"4cd0499b_4ec41974","line":3231,"in_reply_to":"7afd1381_b917fc06","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3075,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3076,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3077,"context_line":""},{"line_number":3078,"context_line":"        # Step 1: SMAS pre-check - block if transfer/failover in progress."},{"line_number":3079,"context_line":"        LOG.info(\u0027Checking SVM SnapMirror state before deleting share \u0027"},{"line_number":3080,"context_line":"                 \u0027server replica (source %(src)s, destination %(dest)s).\u0027,"},{"line_number":3081,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"}],"source_content_type":"text/x-python","patch_set":18,"id":"11bbdd0d_437f2056","line":3078,"updated":"2026-07-23 11:26:58.000000000","message":"we can remove this check. Let it fail on ontap.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3075,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3076,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3077,"context_line":""},{"line_number":3078,"context_line":"        # Step 1: SMAS pre-check - block if transfer/failover in progress."},{"line_number":3079,"context_line":"        LOG.info(\u0027Checking SVM SnapMirror state before deleting share \u0027"},{"line_number":3080,"context_line":"                 \u0027server replica (source %(src)s, destination %(dest)s).\u0027,"},{"line_number":3081,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"}],"source_content_type":"text/x-python","patch_set":18,"id":"34234f2d_6873577a","line":3078,"in_reply_to":"11bbdd0d_437f2056","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3094,"context_line":"            LOG.exception(msg)"},{"line_number":3095,"context_line":"            raise"},{"line_number":3096,"context_line":""},{"line_number":3097,"context_line":"        # Step 3: Source-side SVM SnapMirror release."},{"line_number":3098,"context_line":"        LOG.info(\u0027Releasing source-side SVM SnapMirror metadata for \u0027"},{"line_number":3099,"context_line":"                 \u0027vserver %(src)s.\u0027, {\u0027src\u0027: src_vserver})"},{"line_number":3100,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"4d1330d3_d17beb98","line":3097,"updated":"2026-07-23 11:26:58.000000000","message":"Confirm with ONTAP team if job fails when relationship is not release from source during delete relationship.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[{"line_number":3094,"context_line":"            LOG.exception(msg)"},{"line_number":3095,"context_line":"            raise"},{"line_number":3096,"context_line":""},{"line_number":3097,"context_line":"        # Step 3: Source-side SVM SnapMirror release."},{"line_number":3098,"context_line":"        LOG.info(\u0027Releasing source-side SVM SnapMirror metadata for \u0027"},{"line_number":3099,"context_line":"                 \u0027vserver %(src)s.\u0027, {\u0027src\u0027: src_vserver})"},{"line_number":3100,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"f7739a4d_ff545175","line":3097,"in_reply_to":"4d1330d3_d17beb98","updated":"2026-08-06 08:17:27.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3133,"context_line":"        LOG.info(\u0027Cleaning up FlexVol volumes on destination SVM %(dest)s.\u0027,"},{"line_number":3134,"context_line":"                 {\u0027dest\u0027: dest_vserver})"},{"line_number":3135,"context_line":"        try:"},{"line_number":3136,"context_line":"            self._cleanup_data_volumes_on_svm(dest_vserver, dest_client)"},{"line_number":3137,"context_line":"            LOG.info(\u0027Completed data volume cleanup on destination SVM \u0027"},{"line_number":3138,"context_line":"                     \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3139,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":18,"id":"aea11687_420beb8f","line":3136,"updated":"2026-07-23 11:26:58.000000000","message":"Talk to Sriram on how error is handled during bulk update.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":false,"context_lines":[{"line_number":3133,"context_line":"        LOG.info(\u0027Cleaning up FlexVol volumes on destination SVM %(dest)s.\u0027,"},{"line_number":3134,"context_line":"                 {\u0027dest\u0027: dest_vserver})"},{"line_number":3135,"context_line":"        try:"},{"line_number":3136,"context_line":"            self._cleanup_data_volumes_on_svm(dest_vserver, dest_client)"},{"line_number":3137,"context_line":"            LOG.info(\u0027Completed data volume cleanup on destination SVM \u0027"},{"line_number":3138,"context_line":"                     \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3139,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":18,"id":"989e2720_ed57c8af","line":3136,"in_reply_to":"3b57c1be_d91a6eb7","updated":"2026-08-05 14:11:17.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"4feff4b136ca7e47f08fe6d2b17c9be410894042","unresolved":true,"context_lines":[{"line_number":3133,"context_line":"        LOG.info(\u0027Cleaning up FlexVol volumes on destination SVM %(dest)s.\u0027,"},{"line_number":3134,"context_line":"                 {\u0027dest\u0027: dest_vserver})"},{"line_number":3135,"context_line":"        try:"},{"line_number":3136,"context_line":"            self._cleanup_data_volumes_on_svm(dest_vserver, dest_client)"},{"line_number":3137,"context_line":"            LOG.info(\u0027Completed data volume cleanup on destination SVM \u0027"},{"line_number":3138,"context_line":"                     \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3139,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3b57c1be_d91a6eb7","line":3136,"in_reply_to":"aea11687_420beb8f","updated":"2026-07-27 09:24:06.000000000","message":"Discussed it. We will be getting the error in the job response itself which can be propogated.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3141,"context_line":"                          dest_vserver)"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"        # Step 7: CIFS force-delete on destination SVM."},{"line_number":3144,"context_line":"        LOG.info(\u0027Force-deleting CIFS service on destination SVM \u0027"},{"line_number":3145,"context_line":"                 \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3146,"context_line":"        try:"},{"line_number":3147,"context_line":"            self._delete_cifs_service_force(dest_vserver, dest_client)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ec052b10_467bb24e","line":3144,"updated":"2026-07-23 11:26:58.000000000","message":"Check with CIFS service enabled.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":true,"context_lines":[{"line_number":3141,"context_line":"                          dest_vserver)"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"        # Step 7: CIFS force-delete on destination SVM."},{"line_number":3144,"context_line":"        LOG.info(\u0027Force-deleting CIFS service on destination SVM \u0027"},{"line_number":3145,"context_line":"                 \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3146,"context_line":"        try:"},{"line_number":3147,"context_line":"            self._delete_cifs_service_force(dest_vserver, dest_client)"}],"source_content_type":"text/x-python","patch_set":18,"id":"75c49eb0_311eeff5","line":3144,"in_reply_to":"1fa770bd_4ed0ed8c","updated":"2026-08-06 08:17:27.000000000","message":"This will be validated as part of peer testing.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"32c5c8224f35cb5b737a8a3bed3df65ee8ba8c60","unresolved":false,"context_lines":[{"line_number":3141,"context_line":"                          dest_vserver)"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"        # Step 7: CIFS force-delete on destination SVM."},{"line_number":3144,"context_line":"        LOG.info(\u0027Force-deleting CIFS service on destination SVM \u0027"},{"line_number":3145,"context_line":"                 \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3146,"context_line":"        try:"},{"line_number":3147,"context_line":"            self._delete_cifs_service_force(dest_vserver, dest_client)"}],"source_content_type":"text/x-python","patch_set":18,"id":"53423ec9_daab0b9e","line":3144,"in_reply_to":"75c49eb0_311eeff5","updated":"2026-08-14 11:58:24.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"4feff4b136ca7e47f08fe6d2b17c9be410894042","unresolved":true,"context_lines":[{"line_number":3141,"context_line":"                          dest_vserver)"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"        # Step 7: CIFS force-delete on destination SVM."},{"line_number":3144,"context_line":"        LOG.info(\u0027Force-deleting CIFS service on destination SVM \u0027"},{"line_number":3145,"context_line":"                 \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3146,"context_line":"        try:"},{"line_number":3147,"context_line":"            self._delete_cifs_service_force(dest_vserver, dest_client)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1fa770bd_4ed0ed8c","line":3144,"in_reply_to":"ec052b10_467bb24e","updated":"2026-07-27 09:24:06.000000000","message":"Will check with when setup is up.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3232,"context_line":"            return"},{"line_number":3233,"context_line":""},{"line_number":3234,"context_line":"        clone_uuids \u003d [vol[\u0027uuid\u0027] for vol in flexclones]"},{"line_number":3235,"context_line":"        LOG.info(\u0027Deleting %(count)d FlexClone volume(s) on SVM %(svm)s.\u0027,"},{"line_number":3236,"context_line":"                 {\u0027count\u0027: len(clone_uuids), \u0027svm\u0027: vserver_name})"},{"line_number":3237,"context_line":"        client.delete_volumes_by_uuids(clone_uuids)"},{"line_number":3238,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"b47fcf5a_8fee6f9b","line":3235,"updated":"2026-07-23 11:26:58.000000000","message":"debug","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":false,"context_lines":[{"line_number":3232,"context_line":"            return"},{"line_number":3233,"context_line":""},{"line_number":3234,"context_line":"        clone_uuids \u003d [vol[\u0027uuid\u0027] for vol in flexclones]"},{"line_number":3235,"context_line":"        LOG.info(\u0027Deleting %(count)d FlexClone volume(s) on SVM %(svm)s.\u0027,"},{"line_number":3236,"context_line":"                 {\u0027count\u0027: len(clone_uuids), \u0027svm\u0027: vserver_name})"},{"line_number":3237,"context_line":"        client.delete_volumes_by_uuids(clone_uuids)"},{"line_number":3238,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"28cf0d84_c84277a3","line":3235,"in_reply_to":"b47fcf5a_8fee6f9b","updated":"2026-08-05 14:11:17.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3315,"context_line":"        ontap_but_not_manila_driver \u003d ontap_protected_names - set("},{"line_number":3316,"context_line":"            expected_names_from_manila_driver)"},{"line_number":3317,"context_line":""},{"line_number":3318,"context_line":"        if manila_driver_but_not_ontap or ontap_but_not_manila_driver:"},{"line_number":3319,"context_line":"            msg \u003d _("},{"line_number":3320,"context_line":"                \u0027Protected volume mismatch detected on SVM %(svm)s. \u0027"},{"line_number":3321,"context_line":"                \u0027Volumes tracked by Manila driver but not protected in ONTAP: \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"68965cea_02a8f7fc","line":3318,"updated":"2026-07-23 11:26:58.000000000","message":"Remove the check if volume present in ontap but not manila driver","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3315,"context_line":"        ontap_but_not_manila_driver \u003d ontap_protected_names - set("},{"line_number":3316,"context_line":"            expected_names_from_manila_driver)"},{"line_number":3317,"context_line":""},{"line_number":3318,"context_line":"        if manila_driver_but_not_ontap or ontap_but_not_manila_driver:"},{"line_number":3319,"context_line":"            msg \u003d _("},{"line_number":3320,"context_line":"                \u0027Protected volume mismatch detected on SVM %(svm)s. \u0027"},{"line_number":3321,"context_line":"                \u0027Volumes tracked by Manila driver but not protected in ONTAP: \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"db6223e6_a8ff1478","line":3318,"in_reply_to":"68965cea_02a8f7fc","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3445,"context_line":"        LOG.info(\u0027Failover request completed for \u0027"},{"line_number":3446,"context_line":"                 \u0027SnapMirror relationship %(rel)s.\u0027, {\u0027rel\u0027: rel_uuid})"},{"line_number":3447,"context_line":""},{"line_number":3448,"context_line":"        # Verify post-failover state."},{"line_number":3449,"context_line":"        #"},{"line_number":3450,"context_line":"        # The failover job reaching \u0027success\u0027 only means ONTAP accepted and"},{"line_number":3451,"context_line":"        # executed the endpoint swap; the relationship can briefly report"}],"source_content_type":"text/x-python","patch_set":18,"id":"8b1ae48d_945a6d6a","line":3448,"updated":"2026-07-23 11:26:58.000000000","message":"Remove this check","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"4feff4b136ca7e47f08fe6d2b17c9be410894042","unresolved":false,"context_lines":[{"line_number":3445,"context_line":"        LOG.info(\u0027Failover request completed for \u0027"},{"line_number":3446,"context_line":"                 \u0027SnapMirror relationship %(rel)s.\u0027, {\u0027rel\u0027: rel_uuid})"},{"line_number":3447,"context_line":""},{"line_number":3448,"context_line":"        # Verify post-failover state."},{"line_number":3449,"context_line":"        #"},{"line_number":3450,"context_line":"        # The failover job reaching \u0027success\u0027 only means ONTAP accepted and"},{"line_number":3451,"context_line":"        # executed the endpoint swap; the relationship can briefly report"}],"source_content_type":"text/x-python","patch_set":18,"id":"12521d26_95b4c825","line":3448,"in_reply_to":"8b1ae48d_945a6d6a","updated":"2026-07-27 09:24:06.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3463,"context_line":"            fields\u003d\u0027state,healthy,unhealthy_reason,source.path,\u0027"},{"line_number":3464,"context_line":"                   \u0027destination.path\u0027)"},{"line_number":3465,"context_line":"        post_state \u003d relationship.get(\u0027state\u0027)"},{"line_number":3466,"context_line":"        post_healthy \u003d relationship.get(\u0027healthy\u0027)"},{"line_number":3467,"context_line":""},{"line_number":3468,"context_line":"        in_progress_states \u003d (na_utils.SM_SYNCHRONIZING_STATE,"},{"line_number":3469,"context_line":"                              na_utils.SM_EXPANDING_STATE,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1e19cab5_c057ec01","line":3466,"updated":"2026-07-23 11:26:58.000000000","message":"post_failover","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3463,"context_line":"            fields\u003d\u0027state,healthy,unhealthy_reason,source.path,\u0027"},{"line_number":3464,"context_line":"                   \u0027destination.path\u0027)"},{"line_number":3465,"context_line":"        post_state \u003d relationship.get(\u0027state\u0027)"},{"line_number":3466,"context_line":"        post_healthy \u003d relationship.get(\u0027healthy\u0027)"},{"line_number":3467,"context_line":""},{"line_number":3468,"context_line":"        in_progress_states \u003d (na_utils.SM_SYNCHRONIZING_STATE,"},{"line_number":3469,"context_line":"                              na_utils.SM_EXPANDING_STATE,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f265150_f7bf18e5","line":3466,"in_reply_to":"1e19cab5_c057ec01","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"        promoted_subtype \u003d (promoted_info or {}).get(\u0027subtype\u0027)"},{"line_number":3505,"context_line":"        promoted_state \u003d (promoted_info or {}).get(\u0027state\u0027)"},{"line_number":3506,"context_line":"        if promoted_subtype !\u003d \u0027default\u0027 or promoted_state !\u003d \u0027running\u0027:"},{"line_number":3507,"context_line":"            msg \u003d _(\u0027Promoted SVM %(svm)s is not in the expected state after \u0027"},{"line_number":3508,"context_line":"                    \u0027failover: subtype\u003d%(subtype)s, state\u003d%(state)s.\u0027) % {"},{"line_number":3509,"context_line":"                        \u0027svm\u0027: dest_vserver, \u0027subtype\u0027: promoted_subtype,"}],"source_content_type":"text/x-python","patch_set":18,"id":"40c4818b_78649833","line":3506,"updated":"2026-07-23 11:26:58.000000000","message":"update to const","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"        promoted_subtype \u003d (promoted_info or {}).get(\u0027subtype\u0027)"},{"line_number":3505,"context_line":"        promoted_state \u003d (promoted_info or {}).get(\u0027state\u0027)"},{"line_number":3506,"context_line":"        if promoted_subtype !\u003d \u0027default\u0027 or promoted_state !\u003d \u0027running\u0027:"},{"line_number":3507,"context_line":"            msg \u003d _(\u0027Promoted SVM %(svm)s is not in the expected state after \u0027"},{"line_number":3508,"context_line":"                    \u0027failover: subtype\u003d%(subtype)s, state\u003d%(state)s.\u0027) % {"},{"line_number":3509,"context_line":"                        \u0027svm\u0027: dest_vserver, \u0027subtype\u0027: promoted_subtype,"}],"source_content_type":"text/x-python","patch_set":18,"id":"201224b4_2740586a","line":3506,"in_reply_to":"40c4818b_78649833","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3511,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":3512,"context_line":""},{"line_number":3513,"context_line":"        old_active_subtype \u003d (old_active_info or {}).get(\u0027subtype\u0027)"},{"line_number":3514,"context_line":"        if old_active_subtype !\u003d \u0027dp_destination\u0027:"},{"line_number":3515,"context_line":"            LOG.warning(\u0027Demoted SVM %(svm)s subtype is %(subtype)s after \u0027"},{"line_number":3516,"context_line":"                        \u0027failover; expected dp_destination. ONTAP may \u0027"},{"line_number":3517,"context_line":"                        \u0027still be converging.\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"4c0b032c_8db0ef37","line":3514,"updated":"2026-07-23 11:26:58.000000000","message":"update to const","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3511,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":3512,"context_line":""},{"line_number":3513,"context_line":"        old_active_subtype \u003d (old_active_info or {}).get(\u0027subtype\u0027)"},{"line_number":3514,"context_line":"        if old_active_subtype !\u003d \u0027dp_destination\u0027:"},{"line_number":3515,"context_line":"            LOG.warning(\u0027Demoted SVM %(svm)s subtype is %(subtype)s after \u0027"},{"line_number":3516,"context_line":"                        \u0027failover; expected dp_destination. ONTAP may \u0027"},{"line_number":3517,"context_line":"                        \u0027still be converging.\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"814085db_012716f2","line":3514,"in_reply_to":"4c0b032c_8db0ef37","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3548,"context_line":"            updated \u003d {\u0027replica_id\u0027: replica[\u0027id\u0027]}"},{"line_number":3549,"context_line":"            if replica[\u0027id\u0027] \u003d\u003d share_server_replica[\u0027id\u0027]:"},{"line_number":3550,"context_line":"                updated[\u0027replica_state\u0027] \u003d constants.REPLICA_STATE_ACTIVE"},{"line_number":3551,"context_line":"                updated[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"},{"line_number":3552,"context_line":"            else:"},{"line_number":3553,"context_line":"                updated[\u0027replica_state\u0027] \u003d constants.REPLICA_STATE_OUT_OF_SYNC"},{"line_number":3554,"context_line":"                updated[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"}],"source_content_type":"text/x-python","patch_set":18,"id":"cc436342_5d07b4e7","line":3551,"updated":"2026-07-23 11:26:58.000000000","message":"Check with Manideep if we can remove status","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[{"line_number":3548,"context_line":"            updated \u003d {\u0027replica_id\u0027: replica[\u0027id\u0027]}"},{"line_number":3549,"context_line":"            if replica[\u0027id\u0027] \u003d\u003d share_server_replica[\u0027id\u0027]:"},{"line_number":3550,"context_line":"                updated[\u0027replica_state\u0027] \u003d constants.REPLICA_STATE_ACTIVE"},{"line_number":3551,"context_line":"                updated[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"},{"line_number":3552,"context_line":"            else:"},{"line_number":3553,"context_line":"                updated[\u0027replica_state\u0027] \u003d constants.REPLICA_STATE_OUT_OF_SYNC"},{"line_number":3554,"context_line":"                updated[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"}],"source_content_type":"text/x-python","patch_set":18,"id":"f00cda8b_90aba21b","line":3551,"in_reply_to":"cc436342_5d07b4e7","updated":"2026-08-06 08:17:27.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":1034,"context_line":"        :param context: request context."},{"line_number":1035,"context_line":"        :param new_share_server_replica: the replica to create; carries the"},{"line_number":1036,"context_line":"            new share_server (with id/host) and metadata (``--property``"},{"line_number":1037,"context_line":"            bag). ``replication_type`` and ``replication_policy`` are read"},{"line_number":1038,"context_line":"            from metadata and default to ``sync`` / ``AutomatedFailOver``."},{"line_number":1039,"context_line":"        :param share_server_replica_list: existing replicas; the active one"},{"line_number":1040,"context_line":"            provides the source share server."}],"source_content_type":"text/x-python","patch_set":22,"id":"a723807b_995824ba","line":1037,"range":{"start_line":1037,"start_character":12,"end_line":1037,"end_character":15},"updated":"2026-08-03 11:03:01.000000000","message":"bag?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"        :param context: request context."},{"line_number":1035,"context_line":"        :param new_share_server_replica: the replica to create; carries the"},{"line_number":1036,"context_line":"            new share_server (with id/host) and metadata (``--property``"},{"line_number":1037,"context_line":"            bag). ``replication_type`` and ``replication_policy`` are read"},{"line_number":1038,"context_line":"            from metadata and default to ``sync`` / ``AutomatedFailOver``."},{"line_number":1039,"context_line":"        :param share_server_replica_list: existing replicas; the active one"},{"line_number":1040,"context_line":"            provides the source share server."}],"source_content_type":"text/x-python","patch_set":22,"id":"dab2f5b2_77535816","line":1037,"range":{"start_line":1037,"start_character":12,"end_line":1037,"end_character":15},"in_reply_to":"a723807b_995824ba","updated":"2026-08-05 10:54:53.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":3062,"context_line":"        except exception.VserverNotFound:"},{"line_number":3063,"context_line":"            dest_vserver \u003d (share_server_replica.get(\u0027backend_details\u0027) or"},{"line_number":3064,"context_line":"                            {}).get(\u0027vserver_name\u0027, \u0027\u003cunknown\u003e\u0027)"},{"line_number":3065,"context_line":"            LOG.info(\u0027Destination SVM %(dest)s not found on backend \u0027"},{"line_number":3066,"context_line":"                     \u0027%(backend)s; share server replica already deleted.\u0027,"},{"line_number":3067,"context_line":"                     {\u0027dest\u0027: dest_vserver, \u0027backend\u0027: dest_backend_name})"},{"line_number":3068,"context_line":"            return"},{"line_number":3069,"context_line":""},{"line_number":3070,"context_line":"        active_replica \u003d self.find_active_replica(share_server_replica_list)"}],"source_content_type":"text/x-python","patch_set":22,"id":"04b106d0_875670b1","line":3067,"range":{"start_line":3065,"start_character":12,"end_line":3067,"end_character":74},"updated":"2026-08-03 11:03:01.000000000","message":"should be LOG.error?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":3062,"context_line":"        except exception.VserverNotFound:"},{"line_number":3063,"context_line":"            dest_vserver \u003d (share_server_replica.get(\u0027backend_details\u0027) or"},{"line_number":3064,"context_line":"                            {}).get(\u0027vserver_name\u0027, \u0027\u003cunknown\u003e\u0027)"},{"line_number":3065,"context_line":"            LOG.info(\u0027Destination SVM %(dest)s not found on backend \u0027"},{"line_number":3066,"context_line":"                     \u0027%(backend)s; share server replica already deleted.\u0027,"},{"line_number":3067,"context_line":"                     {\u0027dest\u0027: dest_vserver, \u0027backend\u0027: dest_backend_name})"},{"line_number":3068,"context_line":"            return"},{"line_number":3069,"context_line":""},{"line_number":3070,"context_line":"        active_replica \u003d self.find_active_replica(share_server_replica_list)"}],"source_content_type":"text/x-python","patch_set":22,"id":"da028075_1f94e14e","line":3067,"range":{"start_line":3065,"start_character":12,"end_line":3067,"end_character":74},"in_reply_to":"04b106d0_875670b1","updated":"2026-08-05 10:54:53.000000000","message":"As mentioned in the message, if dest vserver is not found it is assumed to be already deleted.\nThis is delete_share_server_replica_workflow which follows idempotency.\nInfo make sense.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":3094,"context_line":"        LOG.debug(\u0027Releasing source-side SVM SnapMirror metadata for \u0027"},{"line_number":3095,"context_line":"                  \u0027vserver %(src)s.\u0027, {\u0027src\u0027: src_vserver})"},{"line_number":3096,"context_line":"        try:"},{"line_number":3097,"context_line":"            dm_session.release_svm_snapmirror_relationship("},{"line_number":3098,"context_line":"                share_server, dest_share_server)"},{"line_number":3099,"context_line":"        except Exception:"},{"line_number":3100,"context_line":"            LOG.exception(\u0027Failed to release source-side SVM SnapMirror \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"b7abf261_96fcd7f4","line":3097,"range":{"start_line":3097,"start_character":23,"end_line":3097,"end_character":58},"updated":"2026-08-03 11:03:01.000000000","message":"We do not need to release snapmirror if the delete on line 3085 is successful. REST will take care of deleting and releasing.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":false,"context_lines":[{"line_number":3094,"context_line":"        LOG.debug(\u0027Releasing source-side SVM SnapMirror metadata for \u0027"},{"line_number":3095,"context_line":"                  \u0027vserver %(src)s.\u0027, {\u0027src\u0027: src_vserver})"},{"line_number":3096,"context_line":"        try:"},{"line_number":3097,"context_line":"            dm_session.release_svm_snapmirror_relationship("},{"line_number":3098,"context_line":"                share_server, dest_share_server)"},{"line_number":3099,"context_line":"        except Exception:"},{"line_number":3100,"context_line":"            LOG.exception(\u0027Failed to release source-side SVM SnapMirror \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"2296f473_6ef5b82e","line":3097,"range":{"start_line":3097,"start_character":23,"end_line":3097,"end_character":58},"in_reply_to":"b7abf261_96fcd7f4","updated":"2026-08-05 14:11:17.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d210003e4813d15d57b4ca14b7a6359300a942c9","unresolved":true,"context_lines":[{"line_number":3037,"context_line":"                    LOG.error(msg)"},{"line_number":3038,"context_line":"                    raise exception.NetAppException(msg)"},{"line_number":3039,"context_line":""},{"line_number":3040,"context_line":"    @na_utils.trace"},{"line_number":3041,"context_line":"    def delete_share_server_replica(self, context, share_server_replica,"},{"line_number":3042,"context_line":"                                    share_server_replica_list,"},{"line_number":3043,"context_line":"                                    protected_share_instances\u003dNone):"}],"source_content_type":"text/x-python","patch_set":24,"id":"c4533a7b_03a9d369","line":3040,"updated":"2026-08-08 08:15:58.000000000","message":"The delete path has 40 LOG calls in ~160 lines. Every step gets LOG.debug before, LOG.info after, and LOG.exception on failure, but `@na_utils.trace` already logs method entry/exit. The pre-step debug lines (\"Deleting SVM SnapMirror relationship on destination vserver...\") are redundant with the trace decorator. As a general rule, LOG.info should be used after an action is performed (to confirm what happened), not before each step to announce intent. Please trim to maybe a LOG.info at start, LOG.exception on failures, and one LOG.info at end. Then, many newly introduced private methods across this patch have multi-paragraph Sphinx-style docstrings (`:param`, `:return`, `:raises`) on 3-5 lines of code — these add visual noise without helping maintainability. Trim docstrings on private/internal methods to a single summary line if one is necessary at all.","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"5a7ad74f1a8b3b54b3e72c24bb97845b145488cc","unresolved":false,"context_lines":[{"line_number":3037,"context_line":"                    LOG.error(msg)"},{"line_number":3038,"context_line":"                    raise exception.NetAppException(msg)"},{"line_number":3039,"context_line":""},{"line_number":3040,"context_line":"    @na_utils.trace"},{"line_number":3041,"context_line":"    def delete_share_server_replica(self, context, share_server_replica,"},{"line_number":3042,"context_line":"                                    share_server_replica_list,"},{"line_number":3043,"context_line":"                                    protected_share_instances\u003dNone):"}],"source_content_type":"text/x-python","patch_set":24,"id":"484a9a4a_ad280533","line":3040,"in_reply_to":"c4533a7b_03a9d369","updated":"2026-08-14 10:58:08.000000000","message":"Have removed the debug logs where it can be traced. Also have removed docstrings in private functions.","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d4708ba122b4a1b9b147717141010f7fc5f1108e","unresolved":true,"context_lines":[{"line_number":3133,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3134,"context_line":""},{"line_number":3135,"context_line":"        # Delete SVM SnapMirror relationship on destination cluster."},{"line_number":3136,"context_line":"        LOG.debug(\u0027Deleting SVM SnapMirror relationship on destination \u0027"},{"line_number":3137,"context_line":"                  \u0027vserver %(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3138,"context_line":"        try:"},{"line_number":3139,"context_line":"            dm_session.delete_svm_snapmirror_relationship("}],"source_content_type":"text/x-python","patch_set":29,"id":"19c89900_5a37ec6b","line":3136,"updated":"2026-08-13 10:25:35.000000000","message":"Remove the reference of LOG.debug, each try /exception is already having LOG. In that case Info can be changed to debug.","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"5a7ad74f1a8b3b54b3e72c24bb97845b145488cc","unresolved":false,"context_lines":[{"line_number":3133,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3134,"context_line":""},{"line_number":3135,"context_line":"        # Delete SVM SnapMirror relationship on destination cluster."},{"line_number":3136,"context_line":"        LOG.debug(\u0027Deleting SVM SnapMirror relationship on destination \u0027"},{"line_number":3137,"context_line":"                  \u0027vserver %(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3138,"context_line":"        try:"},{"line_number":3139,"context_line":"            dm_session.delete_svm_snapmirror_relationship("}],"source_content_type":"text/x-python","patch_set":29,"id":"2391de1c_b84a7cbe","line":3136,"in_reply_to":"19c89900_5a37ec6b","updated":"2026-08-14 10:58:08.000000000","message":"Done","commit_id":"2d2d9be97c80ba4bf1a9f554aab739e4cea3797a"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"2db105504b40db77e146f0707106039a3ec5f1ee","unresolved":true,"context_lines":[{"line_number":1081,"context_line":"            destination_ipspace \u003d setup_replica_network_with_lock()"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"        dm_session \u003d data_motion.DataMotionSession()"},{"line_number":1084,"context_line":"        return dm_session.create_share_server_replica("},{"line_number":1085,"context_line":"            source_share_server, replica_share_server, replication_type,"},{"line_number":1086,"context_line":"            replication_policy, destination_ipspace\u003ddestination_ipspace)"},{"line_number":1087,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"093bf0e4_999bdd48","line":1084,"updated":"2026-08-25 07:46:58.000000000","message":"If this raises, then the network setup is not cleaned up.\n\nSimilar to data motion, since this is not affecting the happy path, would be fine by me to be done in a follow-up patch","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"00a04420911b69d36616736dabdce7dacaf51b3b","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"            destination_ipspace \u003d setup_replica_network_with_lock()"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"        dm_session \u003d data_motion.DataMotionSession()"},{"line_number":1084,"context_line":"        return dm_session.create_share_server_replica("},{"line_number":1085,"context_line":"            source_share_server, replica_share_server, replication_type,"},{"line_number":1086,"context_line":"            replication_policy, destination_ipspace\u003ddestination_ipspace)"},{"line_number":1087,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"960ac2fe_f53deeeb","line":1084,"in_reply_to":"093bf0e4_999bdd48","updated":"2026-08-25 13:45:48.000000000","message":"As mentioned in above comment.\nI\u0027m marking the comment as resolved with TODO comment in place.","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"2db105504b40db77e146f0707106039a3ec5f1ee","unresolved":true,"context_lines":[{"line_number":3430,"context_line":"        \"\"\"SVM protected share instances check with ONTAP"},{"line_number":3431,"context_line":""},{"line_number":3432,"context_line":"        Queries Site A for volumes with smas_protection\u003dprotected and performs"},{"line_number":3433,"context_line":"        a bidirectional comparison against Manila\u0027s tracked protected"},{"line_number":3434,"context_line":"        instances."},{"line_number":3435,"context_line":"        Raises NetAppException if any divergence is detected."},{"line_number":3436,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":38,"id":"39722f1e_24ee6af1","line":3433,"updated":"2026-08-25 07:46:58.000000000","message":"for bidirectional I would have expected `ontap_but_not_manila_driver` to also appear below, not just `manila_driver_but_not_ontap`","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a1e900ca1dbbf9a2a4092dac2a8cbece164a2515","unresolved":false,"context_lines":[{"line_number":3430,"context_line":"        \"\"\"SVM protected share instances check with ONTAP"},{"line_number":3431,"context_line":""},{"line_number":3432,"context_line":"        Queries Site A for volumes with smas_protection\u003dprotected and performs"},{"line_number":3433,"context_line":"        a bidirectional comparison against Manila\u0027s tracked protected"},{"line_number":3434,"context_line":"        instances."},{"line_number":3435,"context_line":"        Raises NetAppException if any divergence is detected."},{"line_number":3436,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":38,"id":"528929c4_c80da384","line":3433,"in_reply_to":"2779e7b7_0ad617d7","updated":"2026-08-25 13:47:05.000000000","message":"Acknowledged","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a3d7097fbf0db350ba614e6e64a5bde7210fed58","unresolved":true,"context_lines":[{"line_number":3430,"context_line":"        \"\"\"SVM protected share instances check with ONTAP"},{"line_number":3431,"context_line":""},{"line_number":3432,"context_line":"        Queries Site A for volumes with smas_protection\u003dprotected and performs"},{"line_number":3433,"context_line":"        a bidirectional comparison against Manila\u0027s tracked protected"},{"line_number":3434,"context_line":"        instances."},{"line_number":3435,"context_line":"        Raises NetAppException if any divergence is detected."},{"line_number":3436,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":38,"id":"2779e7b7_0ad617d7","line":3433,"in_reply_to":"39722f1e_24ee6af1","updated":"2026-08-25 10:29:52.000000000","message":"Yes we discussed on this internally and got it removed because there can be chances of ontap volumes(shares) created not managed by manila in the same SVM. We donot want to fail for such shares.","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"2db105504b40db77e146f0707106039a3ec5f1ee","unresolved":true,"context_lines":[{"line_number":3568,"context_line":"                    \u0027failover: subtype\u003d%(subtype)s, state\u003d%(state)s.\u0027) % {"},{"line_number":3569,"context_line":"                        \u0027svm\u0027: dest_vserver, \u0027subtype\u0027: promoted_subtype,"},{"line_number":3570,"context_line":"                        \u0027state\u0027: promoted_state}"},{"line_number":3571,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":3572,"context_line":""},{"line_number":3573,"context_line":"        old_active_subtype \u003d (old_active_info or {}).get(\u0027subtype\u0027)"},{"line_number":3574,"context_line":"        if old_active_subtype !\u003d na_utils.SVM_SUBTYPE_DP_DESTINATION:"}],"source_content_type":"text/x-python","patch_set":38,"id":"7e20b83e_f65d3506","line":3571,"updated":"2026-08-25 07:46:58.000000000","message":"Is failover always working instant? I would assume ONTAP would need some time and we would not immediately see the desired states.\n\nCan we make this more tolerant, e.g. waiting a bit and retry?\nI see the demoted side below is more relaxed with a hint \u0027ONTAP may still be converging\u0027, why not the same for the promoted side?","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a3d7097fbf0db350ba614e6e64a5bde7210fed58","unresolved":true,"context_lines":[{"line_number":3568,"context_line":"                    \u0027failover: subtype\u003d%(subtype)s, state\u003d%(state)s.\u0027) % {"},{"line_number":3569,"context_line":"                        \u0027svm\u0027: dest_vserver, \u0027subtype\u0027: promoted_subtype,"},{"line_number":3570,"context_line":"                        \u0027state\u0027: promoted_state}"},{"line_number":3571,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":3572,"context_line":""},{"line_number":3573,"context_line":"        old_active_subtype \u003d (old_active_info or {}).get(\u0027subtype\u0027)"},{"line_number":3574,"context_line":"        if old_active_subtype !\u003d na_utils.SVM_SUBTYPE_DP_DESTINATION:"}],"source_content_type":"text/x-python","patch_set":38,"id":"b675ca26_db3a6402","line":3571,"in_reply_to":"7e20b83e_f65d3506","updated":"2026-08-25 10:29:52.000000000","message":"Yes we wait for the PATCH request job which reverses the direction of snapmirror relationship to succeed. It only happens when the SVM state has changed. If we relax it user will not know if the promote actually failed.","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a1e900ca1dbbf9a2a4092dac2a8cbece164a2515","unresolved":false,"context_lines":[{"line_number":3568,"context_line":"                    \u0027failover: subtype\u003d%(subtype)s, state\u003d%(state)s.\u0027) % {"},{"line_number":3569,"context_line":"                        \u0027svm\u0027: dest_vserver, \u0027subtype\u0027: promoted_subtype,"},{"line_number":3570,"context_line":"                        \u0027state\u0027: promoted_state}"},{"line_number":3571,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":3572,"context_line":""},{"line_number":3573,"context_line":"        old_active_subtype \u003d (old_active_info or {}).get(\u0027subtype\u0027)"},{"line_number":3574,"context_line":"        if old_active_subtype !\u003d na_utils.SVM_SUBTYPE_DP_DESTINATION:"}],"source_content_type":"text/x-python","patch_set":38,"id":"526b8815_df30f66f","line":3571,"in_reply_to":"b675ca26_db3a6402","updated":"2026-08-25 13:47:05.000000000","message":"Acknowledged","commit_id":"e5e83163242182b2ec9bf85015f70ad0a9077b7b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        # A share-server replica destination arrives without network"},{"line_number":747,"context_line":"        # allocations (LIFs are only created on promotion), so fall back to"},{"line_number":748,"context_line":"        # the top-level network_type when the allocations list is empty."},{"line_number":749,"context_line":"        allocations \u003d network_info.get(\u0027network_allocations\u0027) or []"},{"line_number":750,"context_line":"        network_type \u003d (allocations[0][\u0027network_type\u0027] if allocations"},{"line_number":751,"context_line":"                        else network_info.get(\u0027network_type\u0027))"}],"source_content_type":"text/x-python","patch_set":40,"id":"f45bbd6d_a217cdf6","line":748,"range":{"start_line":748,"start_character":14,"end_line":748,"end_character":36},"updated":"2026-08-27 08:02:46.000000000","message":"what\u0027s a top level network type?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        # A share-server replica destination arrives without network"},{"line_number":747,"context_line":"        # allocations (LIFs are only created on promotion), so fall back to"},{"line_number":748,"context_line":"        # the top-level network_type when the allocations list is empty."},{"line_number":749,"context_line":"        allocations \u003d network_info.get(\u0027network_allocations\u0027) or []"},{"line_number":750,"context_line":"        network_type \u003d (allocations[0][\u0027network_type\u0027] if allocations"},{"line_number":751,"context_line":"                        else network_info.get(\u0027network_type\u0027))"}],"source_content_type":"text/x-python","patch_set":40,"id":"f33dfa16_cc9e2edd","line":748,"range":{"start_line":748,"start_character":14,"end_line":748,"end_character":36},"in_reply_to":"f45bbd6d_a217cdf6","updated":"2026-08-28 17:39:45.000000000","message":"reworded.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    @na_utils.trace"},{"line_number":827,"context_line":"    def _get_node_data_port(self, node, client\u003dNone):"},{"line_number":828,"context_line":"        desired_client \u003d client if client else self._client"},{"line_number":829,"context_line":"        port_names \u003d desired_client.list_node_data_ports(node)"},{"line_number":830,"context_line":"        pattern \u003d self.configuration.netapp_port_name_search_pattern"},{"line_number":831,"context_line":"        matched_port_names \u003d [port_name for port_name in port_names"}],"source_content_type":"text/x-python","patch_set":40,"id":"d3c77a68_f74792e9","line":828,"range":{"start_line":828,"start_character":25,"end_line":828,"end_character":59},"updated":"2026-08-27 08:02:46.000000000","message":"```suggestion\n        desired_client \u003d client or self._client\n```","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    @na_utils.trace"},{"line_number":827,"context_line":"    def _get_node_data_port(self, node, client\u003dNone):"},{"line_number":828,"context_line":"        desired_client \u003d client if client else self._client"},{"line_number":829,"context_line":"        port_names \u003d desired_client.list_node_data_ports(node)"},{"line_number":830,"context_line":"        pattern \u003d self.configuration.netapp_port_name_search_pattern"},{"line_number":831,"context_line":"        matched_port_names \u003d [port_name for port_name in port_names"}],"source_content_type":"text/x-python","patch_set":40,"id":"b43cbf98_315d04c8","line":828,"range":{"start_line":828,"start_character":25,"end_line":828,"end_character":59},"in_reply_to":"d3c77a68_f74792e9","updated":"2026-08-28 17:39:45.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":883,"context_line":"    @na_utils.trace"},{"line_number":884,"context_line":"    def _create_port_and_broadcast_domain(self, ipspace_name, network_info,"},{"line_number":885,"context_line":"                                          client\u003dNone):"},{"line_number":886,"context_line":"        desired_client \u003d client if client else self._client"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"        # segmentation_id and mtu match across allocations (same network"},{"line_number":889,"context_line":"        # segment); a share-server replica destination has no allocations."}],"source_content_type":"text/x-python","patch_set":40,"id":"9118528c_617f281f","line":886,"range":{"start_line":886,"start_character":25,"end_line":886,"end_character":59},"updated":"2026-08-27 08:02:46.000000000","message":"```suggestion\n        desired_client \u003d client or self._client\n```","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[{"line_number":883,"context_line":"    @na_utils.trace"},{"line_number":884,"context_line":"    def _create_port_and_broadcast_domain(self, ipspace_name, network_info,"},{"line_number":885,"context_line":"                                          client\u003dNone):"},{"line_number":886,"context_line":"        desired_client \u003d client if client else self._client"},{"line_number":887,"context_line":""},{"line_number":888,"context_line":"        # segmentation_id and mtu match across allocations (same network"},{"line_number":889,"context_line":"        # segment); a share-server replica destination has no allocations."}],"source_content_type":"text/x-python","patch_set":40,"id":"ee2bf3c2_aa7d8d42","line":886,"range":{"start_line":886,"start_character":25,"end_line":886,"end_character":59},"in_reply_to":"9118528c_617f281f","updated":"2026-08-28 17:39:45.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":1081,"context_line":"            destination_ipspace \u003d setup_replica_network_with_lock()"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"        dm_session \u003d data_motion.DataMotionSession()"},{"line_number":1084,"context_line":"        # TODO(kumart): the destination IPspace, VLAN ports and broadcast"},{"line_number":1085,"context_line":"        # domain are left behind. Enhance core and driver to send"},{"line_number":1086,"context_line":"        # detail_data in the exception; do not duplicate the delete flow."},{"line_number":1087,"context_line":"        return dm_session.create_share_server_replica("},{"line_number":1088,"context_line":"            source_share_server, replica_share_server, replication_type,"},{"line_number":1089,"context_line":"            replication_policy, destination_ipspace\u003ddestination_ipspace)"}],"source_content_type":"text/x-python","patch_set":40,"id":"93c9604d_ae333349","line":1086,"range":{"start_line":1084,"start_character":0,"end_line":1086,"end_character":73},"updated":"2026-08-27 08:02:46.000000000","message":"unclear how these resources are being orphaned here?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"            destination_ipspace \u003d setup_replica_network_with_lock()"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"        dm_session \u003d data_motion.DataMotionSession()"},{"line_number":1084,"context_line":"        # TODO(kumart): the destination IPspace, VLAN ports and broadcast"},{"line_number":1085,"context_line":"        # domain are left behind. Enhance core and driver to send"},{"line_number":1086,"context_line":"        # detail_data in the exception; do not duplicate the delete flow."},{"line_number":1087,"context_line":"        return dm_session.create_share_server_replica("},{"line_number":1088,"context_line":"            source_share_server, replica_share_server, replication_type,"},{"line_number":1089,"context_line":"            replication_policy, destination_ipspace\u003ddestination_ipspace)"}],"source_content_type":"text/x-python","patch_set":40,"id":"8557586c_8b9dc2a8","line":1086,"range":{"start_line":1084,"start_character":0,"end_line":1086,"end_character":73},"in_reply_to":"93c9604d_ae333349","updated":"2026-08-28 17:39:45.000000000","message":"This is redundant now, I have already added the comment at manila/share/drivers/netapp/dataontap/cluster_mode/data_motion.py at L816\n\nPlease refer this comment for details: https://review.opendev.org/c/openstack/manila/+/991844/comment/a3342552_b7be3289/\n\nDeleting this TODO comment","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":3155,"context_line":"        src_vserver, src_client \u003d self._get_vserver("},{"line_number":3156,"context_line":"            share_server\u003dshare_server, backend_name\u003dsrc_backend_name)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"        LOG.info(\u0027Deleting share server replica from source SVM %(src)s \u0027"},{"line_number":3159,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3160,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3161,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"6ef6fd4e_e4945004","line":3158,"range":{"start_line":3158,"start_character":8,"end_line":3158,"end_character":47},"updated":"2026-08-27 08:02:46.000000000","message":"Info level comments should be used for completed actions, not for breadcrumbs about ongoing action.\n\nSwitch this to debug","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ab621133d163d72262d5e91bade5e42aeba6c2dc","unresolved":true,"context_lines":[{"line_number":3155,"context_line":"        src_vserver, src_client \u003d self._get_vserver("},{"line_number":3156,"context_line":"            share_server\u003dshare_server, backend_name\u003dsrc_backend_name)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"        LOG.info(\u0027Deleting share server replica from source SVM %(src)s \u0027"},{"line_number":3159,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3160,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3161,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"6ea5d29f_36f1f73c","line":3158,"range":{"start_line":3158,"start_character":8,"end_line":3158,"end_character":47},"in_reply_to":"495fa7fa_af5fd76c","updated":"2026-09-01 05:17:46.000000000","message":"Marked as unresolved. \n\nWhat is a \"critical entry\" - all of this stuff is trace logged. Critical to who? an administrator that\u0027s observing the logs of their cloud?\n\nhttps://docs.openstack.org/oslo.log/2026.1/user/guidelines.html#log-messages-at-info-and-above-should-represent-a-unit-of-work","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"b058cdef161c2f6504f585b20d24d641ffcae739","unresolved":true,"context_lines":[{"line_number":3155,"context_line":"        src_vserver, src_client \u003d self._get_vserver("},{"line_number":3156,"context_line":"            share_server\u003dshare_server, backend_name\u003dsrc_backend_name)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"        LOG.info(\u0027Deleting share server replica from source SVM %(src)s \u0027"},{"line_number":3159,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3160,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3161,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"c346ce43_c1f2a534","line":3158,"range":{"start_line":3158,"start_character":8,"end_line":3158,"end_character":47},"in_reply_to":"6ea5d29f_36f1f73c","updated":"2026-09-01 12:53:54.000000000","message":"I think its okay to move these comments to debug. @sanketh.shetty@netapp.com","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":3155,"context_line":"        src_vserver, src_client \u003d self._get_vserver("},{"line_number":3156,"context_line":"            share_server\u003dshare_server, backend_name\u003dsrc_backend_name)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"        LOG.info(\u0027Deleting share server replica from source SVM %(src)s \u0027"},{"line_number":3159,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3160,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3161,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"495fa7fa_af5fd76c","line":3158,"range":{"start_line":3158,"start_character":8,"end_line":3158,"end_character":47},"in_reply_to":"6ef6fd4e_e4945004","updated":"2026-08-28 11:51:17.000000000","message":"Would like to retain info for the critical entry and exit point of driver code.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"8094c1b6861360e7e396cd4560e7e6322b03e47a","unresolved":false,"context_lines":[{"line_number":3155,"context_line":"        src_vserver, src_client \u003d self._get_vserver("},{"line_number":3156,"context_line":"            share_server\u003dshare_server, backend_name\u003dsrc_backend_name)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"        LOG.info(\u0027Deleting share server replica from source SVM %(src)s \u0027"},{"line_number":3159,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3160,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3161,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"8bc0566b_d13b0d26","line":3158,"range":{"start_line":3158,"start_character":8,"end_line":3158,"end_character":47},"in_reply_to":"c346ce43_c1f2a534","updated":"2026-09-01 17:34:00.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":3259,"context_line":"                              {\u0027ipspace\u0027: dest_ipspace_name,"},{"line_number":3260,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":3261,"context_line":""},{"line_number":3262,"context_line":"        LOG.info(\u0027Successfully deleted share server replica (SVM %s).\u0027,"},{"line_number":3263,"context_line":"                 dest_vserver)"},{"line_number":3264,"context_line":""},{"line_number":3265,"context_line":"    @na_utils.trace"},{"line_number":3266,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"}],"source_content_type":"text/x-python","patch_set":40,"id":"5abe59e3_8f872b90","line":3263,"range":{"start_line":3262,"start_character":0,"end_line":3263,"end_character":30},"updated":"2026-08-27 08:02:46.000000000","message":"the share manager is also logging the same thing: https://review.opendev.org/c/openstack/manila/+/993501/71/manila/share/manager.py#3429\n\nDeduplicate please","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ab621133d163d72262d5e91bade5e42aeba6c2dc","unresolved":true,"context_lines":[{"line_number":3259,"context_line":"                              {\u0027ipspace\u0027: dest_ipspace_name,"},{"line_number":3260,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":3261,"context_line":""},{"line_number":3262,"context_line":"        LOG.info(\u0027Successfully deleted share server replica (SVM %s).\u0027,"},{"line_number":3263,"context_line":"                 dest_vserver)"},{"line_number":3264,"context_line":""},{"line_number":3265,"context_line":"    @na_utils.trace"},{"line_number":3266,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"}],"source_content_type":"text/x-python","patch_set":40,"id":"3d875e6f_f5c6466d","line":3263,"range":{"start_line":3262,"start_character":0,"end_line":3263,"end_character":30},"in_reply_to":"3579f451_8e93d269","updated":"2026-09-01 05:17:46.000000000","message":"Marked as unresolved.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"b058cdef161c2f6504f585b20d24d641ffcae739","unresolved":true,"context_lines":[{"line_number":3259,"context_line":"                              {\u0027ipspace\u0027: dest_ipspace_name,"},{"line_number":3260,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":3261,"context_line":""},{"line_number":3262,"context_line":"        LOG.info(\u0027Successfully deleted share server replica (SVM %s).\u0027,"},{"line_number":3263,"context_line":"                 dest_vserver)"},{"line_number":3264,"context_line":""},{"line_number":3265,"context_line":"    @na_utils.trace"},{"line_number":3266,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"}],"source_content_type":"text/x-python","patch_set":40,"id":"a2f925dc_b756ef94","line":3263,"range":{"start_line":3262,"start_character":0,"end_line":3263,"end_character":30},"in_reply_to":"3d875e6f_f5c6466d","updated":"2026-09-01 12:53:54.000000000","message":"Same as above.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":3259,"context_line":"                              {\u0027ipspace\u0027: dest_ipspace_name,"},{"line_number":3260,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":3261,"context_line":""},{"line_number":3262,"context_line":"        LOG.info(\u0027Successfully deleted share server replica (SVM %s).\u0027,"},{"line_number":3263,"context_line":"                 dest_vserver)"},{"line_number":3264,"context_line":""},{"line_number":3265,"context_line":"    @na_utils.trace"},{"line_number":3266,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"}],"source_content_type":"text/x-python","patch_set":40,"id":"3579f451_8e93d269","line":3263,"range":{"start_line":3262,"start_character":0,"end_line":3263,"end_character":30},"in_reply_to":"5abe59e3_8f872b90","updated":"2026-08-28 11:51:17.000000000","message":"Same as above comment.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"8094c1b6861360e7e396cd4560e7e6322b03e47a","unresolved":false,"context_lines":[{"line_number":3259,"context_line":"                              {\u0027ipspace\u0027: dest_ipspace_name,"},{"line_number":3260,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":3261,"context_line":""},{"line_number":3262,"context_line":"        LOG.info(\u0027Successfully deleted share server replica (SVM %s).\u0027,"},{"line_number":3263,"context_line":"                 dest_vserver)"},{"line_number":3264,"context_line":""},{"line_number":3265,"context_line":"    @na_utils.trace"},{"line_number":3266,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"}],"source_content_type":"text/x-python","patch_set":40,"id":"2eda758f_e1c1aa24","line":3263,"range":{"start_line":3262,"start_character":0,"end_line":3263,"end_character":30},"in_reply_to":"a2f925dc_b756ef94","updated":"2026-09-01 17:34:00.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":3273,"context_line":"            return"},{"line_number":3274,"context_line":""},{"line_number":3275,"context_line":"        clone_uuids \u003d [vol[\u0027uuid\u0027] for vol in flexclones]"},{"line_number":3276,"context_line":"        LOG.info(\u0027Deleting %(count)d FlexClone volume(s) on SVM %(svm)s.\u0027,"},{"line_number":3277,"context_line":"                 {\u0027count\u0027: len(clone_uuids), \u0027svm\u0027: vserver_name})"},{"line_number":3278,"context_line":"        client.delete_volumes_by_uuids(clone_uuids)"},{"line_number":3279,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"04dbf678_620642b5","line":3276,"range":{"start_line":3276,"start_character":7,"end_line":3276,"end_character":26},"updated":"2026-08-27 08:02:46.000000000","message":"Drop the log level on this and all other occurrences of info level logging for any non-conclusive event..","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":3273,"context_line":"            return"},{"line_number":3274,"context_line":""},{"line_number":3275,"context_line":"        clone_uuids \u003d [vol[\u0027uuid\u0027] for vol in flexclones]"},{"line_number":3276,"context_line":"        LOG.info(\u0027Deleting %(count)d FlexClone volume(s) on SVM %(svm)s.\u0027,"},{"line_number":3277,"context_line":"                 {\u0027count\u0027: len(clone_uuids), \u0027svm\u0027: vserver_name})"},{"line_number":3278,"context_line":"        client.delete_volumes_by_uuids(clone_uuids)"},{"line_number":3279,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"319dc899_ad539e4f","line":3276,"range":{"start_line":3276,"start_character":7,"end_line":3276,"end_character":26},"in_reply_to":"04dbf678_620642b5","updated":"2026-08-28 11:51:17.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"d7591a30de881b1d2aaacde609b9737e059bad1d","unresolved":true,"context_lines":[{"line_number":3538,"context_line":"            peer_cluster_name\u003ddest_cluster_name)"},{"line_number":3539,"context_line":"        data_motion.validate_mediator_reachable(dest_cluster_name, mediators)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        # Proctected share server instance check"},{"line_number":3542,"context_line":"        expected_names_from_manila_driver \u003d ("},{"line_number":3543,"context_line":"            self._validate_protected_volumes_match("},{"line_number":3544,"context_line":"                src_vserver, src_cluster_client, protected_share_instances))"}],"source_content_type":"text/x-python","patch_set":40,"id":"08a87f90_640a2313","line":3541,"range":{"start_line":3541,"start_character":10,"end_line":3541,"end_character":20},"updated":"2026-08-26 20:55:13.000000000","message":"Protected","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":3538,"context_line":"            peer_cluster_name\u003ddest_cluster_name)"},{"line_number":3539,"context_line":"        data_motion.validate_mediator_reachable(dest_cluster_name, mediators)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        # Proctected share server instance check"},{"line_number":3542,"context_line":"        expected_names_from_manila_driver \u003d ("},{"line_number":3543,"context_line":"            self._validate_protected_volumes_match("},{"line_number":3544,"context_line":"                src_vserver, src_cluster_client, protected_share_instances))"}],"source_content_type":"text/x-python","patch_set":40,"id":"3433f9c5_21d72c6e","line":3541,"range":{"start_line":3541,"start_character":10,"end_line":3541,"end_character":20},"in_reply_to":"08a87f90_640a2313","updated":"2026-08-28 11:51:17.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed689fce9b4578aeac1570c8a759f747eaadf810","unresolved":false,"context_lines":[{"line_number":3154,"context_line":"            share_server\u003dshare_server, backend_name\u003dsrc_backend_name)"},{"line_number":3155,"context_line":""},{"line_number":3156,"context_line":"        LOG.debug(\u0027Deleting share server replica from source SVM %(src)s \u0027"},{"line_number":3157,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3158,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3159,"context_line":""},{"line_number":3160,"context_line":"        # Delete SVM SnapMirror relationship on destination cluster."}],"source_content_type":"text/x-python","patch_set":48,"id":"4ee0bb38_bae2d4a1","line":3157,"updated":"2026-09-01 19:51:08.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"00e77a78e316e66592b0dbd40953d856207558cc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed689fce9b4578aeac1570c8a759f747eaadf810","unresolved":false,"context_lines":[{"line_number":3155,"context_line":""},{"line_number":3156,"context_line":"        LOG.debug(\u0027Deleting share server replica from source SVM %(src)s \u0027"},{"line_number":3157,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3158,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3159,"context_line":""},{"line_number":3160,"context_line":"        # Delete SVM SnapMirror relationship on destination cluster."},{"line_number":3161,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":48,"id":"0a7da3e2_df68174b","line":3158,"updated":"2026-09-01 19:51:08.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"00e77a78e316e66592b0dbd40953d856207558cc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ed689fce9b4578aeac1570c8a759f747eaadf810","unresolved":false,"context_lines":[{"line_number":3258,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":3259,"context_line":""},{"line_number":3260,"context_line":"        LOG.debug(\u0027Successfully deleted share server replica (SVM %s).\u0027,"},{"line_number":3261,"context_line":"                 dest_vserver)"},{"line_number":3262,"context_line":""},{"line_number":3263,"context_line":"    @na_utils.trace"},{"line_number":3264,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"}],"source_content_type":"text/x-python","patch_set":48,"id":"4a0371b3_a692540b","line":3261,"updated":"2026-09-01 19:51:08.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"00e77a78e316e66592b0dbd40953d856207558cc"}],"manila/share/drivers/netapp/utils.py":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"49dbefb5755f37edb3b9d43af7c2bfb5922c17b6","unresolved":true,"context_lines":[{"line_number":83,"context_line":"SMAS_PROTECTION_UNPROTECTED \u003d \u0027unprotected\u0027"},{"line_number":84,"context_line":"SMAS_MIN_ONTAP_VERSION \u003d (9, 19, 1)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"SMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (\u0027out_of_sync\u0027, \u0027synchronizing\u0027)"},{"line_number":87,"context_line":"SMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (\u0027transferring\u0027,)"},{"line_number":88,"context_line":"SMAS_DELETE_POLL_INTERVAL \u003d 5"},{"line_number":89,"context_line":"SMAS_DELETE_POLL_TIMEOUT \u003d 600"}],"source_content_type":"text/x-python","patch_set":14,"id":"a72d748f_ca5be0c7","line":86,"updated":"2026-07-10 05:12:08.000000000","message":"@sanketh.shetty@netapp.com We should allow the relationship to delete in out_of_sync state.\n\n\n```suggestion\nSMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (SM_SYNCHRONIZING_STATE)\n```","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":83,"context_line":"SMAS_PROTECTION_UNPROTECTED \u003d \u0027unprotected\u0027"},{"line_number":84,"context_line":"SMAS_MIN_ONTAP_VERSION \u003d (9, 19, 1)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"SMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (\u0027out_of_sync\u0027, \u0027synchronizing\u0027)"},{"line_number":87,"context_line":"SMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (\u0027transferring\u0027,)"},{"line_number":88,"context_line":"SMAS_DELETE_POLL_INTERVAL \u003d 5"},{"line_number":89,"context_line":"SMAS_DELETE_POLL_TIMEOUT \u003d 600"}],"source_content_type":"text/x-python","patch_set":14,"id":"862fc04f_15d0e8ba","line":86,"in_reply_to":"a72d748f_ca5be0c7","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"49dbefb5755f37edb3b9d43af7c2bfb5922c17b6","unresolved":true,"context_lines":[{"line_number":84,"context_line":"SMAS_MIN_ONTAP_VERSION \u003d (9, 19, 1)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"SMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (\u0027out_of_sync\u0027, \u0027synchronizing\u0027)"},{"line_number":87,"context_line":"SMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (\u0027transferring\u0027,)"},{"line_number":88,"context_line":"SMAS_DELETE_POLL_INTERVAL \u003d 5"},{"line_number":89,"context_line":"SMAS_DELETE_POLL_TIMEOUT \u003d 600"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"8331e28a_bfce62a6","line":87,"updated":"2026-07-10 05:12:08.000000000","message":"@sanketh.shetty@netapp.com Lets use the constant for values to make it single source.\n\n```suggestion\nSMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (SM_TRANSFERRING_STATE)\n```","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":84,"context_line":"SMAS_MIN_ONTAP_VERSION \u003d (9, 19, 1)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"SMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (\u0027out_of_sync\u0027, \u0027synchronizing\u0027)"},{"line_number":87,"context_line":"SMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (\u0027transferring\u0027,)"},{"line_number":88,"context_line":"SMAS_DELETE_POLL_INTERVAL \u003d 5"},{"line_number":89,"context_line":"SMAS_DELETE_POLL_TIMEOUT \u003d 600"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"371f8ed5_4e3b1929","line":87,"in_reply_to":"8331e28a_bfce62a6","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"}],"manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_lib_multi_svm.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":40,"id":"d581fc7a_1eee85ae","updated":"2026-08-27 08:02:46.000000000","message":"Looks like this file now has a lot of unit tests. Great, but, they don\u0027t all need to run in one test class. Maybe organize the ones you\u0027re introducing into classes, instead of adding an ASCII line separator.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"3614d474_4eb47d05","in_reply_to":"d581fc7a_1eee85ae","updated":"2026-08-28 11:51:17.000000000","message":"Good point. We are in the process of refactoring the UT and improving coverage. We will take up in subsequent patches.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    @ddt.data(None, \u0027flat\u0027)"},{"line_number":1362,"context_line":"    def test_create_ipspace_no_network_allocations(self, network_type):"},{"line_number":1363,"context_line":"        # A flat/non-segmented share-server replica destination arrives with"},{"line_number":1364,"context_line":"        # an empty network_allocations list; the top-level network_type must"},{"line_number":1365,"context_line":"        # drive the decision instead of indexing into the empty list."},{"line_number":1366,"context_line":"        self.library._client.features.IPSPACES \u003d True"},{"line_number":1367,"context_line":"        self.mock_object(self.library._client, \u0027create_ipspace\u0027)"},{"line_number":1368,"context_line":"        network_info \u003d copy.deepcopy(fake.NETWORK_INFO)"}],"source_content_type":"text/x-python","patch_set":40,"id":"70cd33e0_e2804b1e","line":1365,"range":{"start_line":1363,"start_character":8,"end_line":1365,"end_character":8},"updated":"2026-08-27 08:02:46.000000000","message":"do these comments really help you as a maintainer?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    @ddt.data(None, \u0027flat\u0027)"},{"line_number":1362,"context_line":"    def test_create_ipspace_no_network_allocations(self, network_type):"},{"line_number":1363,"context_line":"        # A flat/non-segmented share-server replica destination arrives with"},{"line_number":1364,"context_line":"        # an empty network_allocations list; the top-level network_type must"},{"line_number":1365,"context_line":"        # drive the decision instead of indexing into the empty list."},{"line_number":1366,"context_line":"        self.library._client.features.IPSPACES \u003d True"},{"line_number":1367,"context_line":"        self.mock_object(self.library._client, \u0027create_ipspace\u0027)"},{"line_number":1368,"context_line":"        network_info \u003d copy.deepcopy(fake.NETWORK_INFO)"}],"source_content_type":"text/x-python","patch_set":40,"id":"ab2bb686_28b080f1","line":1365,"range":{"start_line":1363,"start_character":8,"end_line":1365,"end_character":8},"in_reply_to":"70cd33e0_e2804b1e","updated":"2026-08-28 11:51:17.000000000","message":"Updated. Few comments got added which are not required.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":4386,"context_line":"            mock_dest_client.create_port_and_broadcast_domain.call_count)"},{"line_number":4387,"context_line":""},{"line_number":4388,"context_line":"    def test__create_port_and_broadcast_domain_no_network_allocations(self):"},{"line_number":4389,"context_line":"        # A share-server replica destination has no network allocations; the"},{"line_number":4390,"context_line":"        # port and broadcast domain must still be created per cluster node"},{"line_number":4391,"context_line":"        # using the top-level segmentation_id and the default MTU."},{"line_number":4392,"context_line":"        mock_dest_client \u003d mock.Mock()"},{"line_number":4393,"context_line":"        mock_dest_client.list_cluster_nodes.return_value \u003d fake.CLUSTER_NODES"},{"line_number":4394,"context_line":"        self.mock_object(self.library,"}],"source_content_type":"text/x-python","patch_set":40,"id":"3337fa37_b5ff3bb2","line":4391,"range":{"start_line":4389,"start_character":8,"end_line":4391,"end_character":66},"updated":"2026-08-27 08:02:46.000000000","message":"I think this is obvious when you read the test. Do we need this comment here?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":4386,"context_line":"            mock_dest_client.create_port_and_broadcast_domain.call_count)"},{"line_number":4387,"context_line":""},{"line_number":4388,"context_line":"    def test__create_port_and_broadcast_domain_no_network_allocations(self):"},{"line_number":4389,"context_line":"        # A share-server replica destination has no network allocations; the"},{"line_number":4390,"context_line":"        # port and broadcast domain must still be created per cluster node"},{"line_number":4391,"context_line":"        # using the top-level segmentation_id and the default MTU."},{"line_number":4392,"context_line":"        mock_dest_client \u003d mock.Mock()"},{"line_number":4393,"context_line":"        mock_dest_client.list_cluster_nodes.return_value \u003d fake.CLUSTER_NODES"},{"line_number":4394,"context_line":"        self.mock_object(self.library,"}],"source_content_type":"text/x-python","patch_set":40,"id":"b9673b13_93aa220b","line":4391,"range":{"start_line":4389,"start_character":8,"end_line":4391,"end_character":66},"in_reply_to":"3337fa37_b5ff3bb2","updated":"2026-08-28 11:51:17.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":5863,"context_line":"            src_vserver)"},{"line_number":5864,"context_line":""},{"line_number":5865,"context_line":"    def test__validate_protected_volumes_match_no_root_vol_filtering(self):"},{"line_number":5866,"context_line":"        # get_smas_protected_volumes() is solely responsible for excluding"},{"line_number":5867,"context_line":"        # the SVM root volume (via is_svm_root\u003dfalse server side). Since"},{"line_number":5868,"context_line":"        # the \"ontap but not manila driver\" mismatch check has been"},{"line_number":5869,"context_line":"        # removed, an extra ONTAP-reported volume (e.g. a root volume it"},{"line_number":5870,"context_line":"        # failed to filter) with no corresponding Manila-tracked instance"},{"line_number":5871,"context_line":"        # is now tolerated and does not raise."},{"line_number":5872,"context_line":"        src_vserver \u003d \u0027src-vserver\u0027"},{"line_number":5873,"context_line":"        svm_root_vol \u003d \u0027src_vserver_root\u0027"}],"source_content_type":"text/x-python","patch_set":40,"id":"1bf3c2cf_16142aff","line":5870,"range":{"start_line":5866,"start_character":7,"end_line":5870,"end_character":73},"updated":"2026-08-27 08:02:46.000000000","message":"\"ontap but not manila driver\" mismatch check has been removed?\n\nis this a temporal context that we\u0027ll never need to know/remember?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":true,"context_lines":[{"line_number":5863,"context_line":"            src_vserver)"},{"line_number":5864,"context_line":""},{"line_number":5865,"context_line":"    def test__validate_protected_volumes_match_no_root_vol_filtering(self):"},{"line_number":5866,"context_line":"        # get_smas_protected_volumes() is solely responsible for excluding"},{"line_number":5867,"context_line":"        # the SVM root volume (via is_svm_root\u003dfalse server side). Since"},{"line_number":5868,"context_line":"        # the \"ontap but not manila driver\" mismatch check has been"},{"line_number":5869,"context_line":"        # removed, an extra ONTAP-reported volume (e.g. a root volume it"},{"line_number":5870,"context_line":"        # failed to filter) with no corresponding Manila-tracked instance"},{"line_number":5871,"context_line":"        # is now tolerated and does not raise."},{"line_number":5872,"context_line":"        src_vserver \u003d \u0027src-vserver\u0027"},{"line_number":5873,"context_line":"        svm_root_vol \u003d \u0027src_vserver_root\u0027"}],"source_content_type":"text/x-python","patch_set":40,"id":"716d5531_fe327b67","line":5870,"range":{"start_line":5866,"start_character":7,"end_line":5870,"end_character":73},"in_reply_to":"1bf3c2cf_16142aff","updated":"2026-08-28 11:51:17.000000000","message":"yes unwanted comments. have removed.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"c5d7c689cb72d8b0fe88acc484255d5ab83892c2","unresolved":false,"context_lines":[{"line_number":5863,"context_line":"            src_vserver)"},{"line_number":5864,"context_line":""},{"line_number":5865,"context_line":"    def test__validate_protected_volumes_match_no_root_vol_filtering(self):"},{"line_number":5866,"context_line":"        # get_smas_protected_volumes() is solely responsible for excluding"},{"line_number":5867,"context_line":"        # the SVM root volume (via is_svm_root\u003dfalse server side). Since"},{"line_number":5868,"context_line":"        # the \"ontap but not manila driver\" mismatch check has been"},{"line_number":5869,"context_line":"        # removed, an extra ONTAP-reported volume (e.g. a root volume it"},{"line_number":5870,"context_line":"        # failed to filter) with no corresponding Manila-tracked instance"},{"line_number":5871,"context_line":"        # is now tolerated and does not raise."},{"line_number":5872,"context_line":"        src_vserver \u003d \u0027src-vserver\u0027"},{"line_number":5873,"context_line":"        svm_root_vol \u003d \u0027src_vserver_root\u0027"}],"source_content_type":"text/x-python","patch_set":40,"id":"3c03b0ae_46e90a3c","line":5870,"range":{"start_line":5866,"start_character":7,"end_line":5870,"end_character":73},"in_reply_to":"716d5531_fe327b67","updated":"2026-08-28 11:51:58.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":5883,"context_line":""},{"line_number":5884,"context_line":"        self.assertEqual({vol_name: instance_id}, result)"},{"line_number":5885,"context_line":""},{"line_number":5886,"context_line":"    def test__validate_protected_volumes_match_ontap_extra_no_raise(self):"},{"line_number":5887,"context_line":"        # Volumes protected in ONTAP but not tracked by the Manila driver"},{"line_number":5888,"context_line":"        # are no longer treated as a mismatch; only the reverse (Manila"},{"line_number":5889,"context_line":"        # tracks a volume that ONTAP does not report as protected) raises."},{"line_number":5890,"context_line":"        src_vserver \u003d \u0027src-vserver\u0027"},{"line_number":5891,"context_line":"        instance_id \u003d fake.SHARE_ID"},{"line_number":5892,"context_line":"        vol_name \u003d self.library._get_backend_share_name(instance_id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"bce414fc_3290f7e1","line":5889,"range":{"start_line":5886,"start_character":74,"end_line":5889,"end_character":74},"updated":"2026-08-27 08:02:46.000000000","message":"painfully obvious","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":5883,"context_line":""},{"line_number":5884,"context_line":"        self.assertEqual({vol_name: instance_id}, result)"},{"line_number":5885,"context_line":""},{"line_number":5886,"context_line":"    def test__validate_protected_volumes_match_ontap_extra_no_raise(self):"},{"line_number":5887,"context_line":"        # Volumes protected in ONTAP but not tracked by the Manila driver"},{"line_number":5888,"context_line":"        # are no longer treated as a mismatch; only the reverse (Manila"},{"line_number":5889,"context_line":"        # tracks a volume that ONTAP does not report as protected) raises."},{"line_number":5890,"context_line":"        src_vserver \u003d \u0027src-vserver\u0027"},{"line_number":5891,"context_line":"        instance_id \u003d fake.SHARE_ID"},{"line_number":5892,"context_line":"        vol_name \u003d self.library._get_backend_share_name(instance_id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"276f9526_ce0e8ffd","line":5889,"range":{"start_line":5886,"start_character":74,"end_line":5889,"end_character":74},"in_reply_to":"bce414fc_3290f7e1","updated":"2026-08-28 11:51:17.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":5928,"context_line":""},{"line_number":5929,"context_line":"    def test__validate_protected_volumes_match_unmatched_ontap_volume_no_raise("},{"line_number":5930,"context_line":"            self):"},{"line_number":5931,"context_line":"        # With the \"ontap but not manila driver\" mismatch check removed,"},{"line_number":5932,"context_line":"        # an ONTAP-reported volume with no corresponding Manila-tracked"},{"line_number":5933,"context_line":"        # instance (even one that looks like a root-volume name) no"},{"line_number":5934,"context_line":"        # longer raises."},{"line_number":5935,"context_line":"        src_vserver \u003d \u0027src-vs-with-dashes\u0027"},{"line_number":5936,"context_line":"        svm_root_vol \u003d \u0027src_vs_with_dashes_root\u0027"},{"line_number":5937,"context_line":"        mock_client \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":40,"id":"83cbd690_189d6e0a","line":5934,"range":{"start_line":5931,"start_character":0,"end_line":5934,"end_character":24},"updated":"2026-08-27 08:02:46.000000000","message":"what does this mean?\n\nwhat\u0027s \"ontap but not manila driver\"?","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":5928,"context_line":""},{"line_number":5929,"context_line":"    def test__validate_protected_volumes_match_unmatched_ontap_volume_no_raise("},{"line_number":5930,"context_line":"            self):"},{"line_number":5931,"context_line":"        # With the \"ontap but not manila driver\" mismatch check removed,"},{"line_number":5932,"context_line":"        # an ONTAP-reported volume with no corresponding Manila-tracked"},{"line_number":5933,"context_line":"        # instance (even one that looks like a root-volume name) no"},{"line_number":5934,"context_line":"        # longer raises."},{"line_number":5935,"context_line":"        src_vserver \u003d \u0027src-vs-with-dashes\u0027"},{"line_number":5936,"context_line":"        svm_root_vol \u003d \u0027src_vs_with_dashes_root\u0027"},{"line_number":5937,"context_line":"        mock_client \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":40,"id":"7488d922_7a6edc30","line":5934,"range":{"start_line":5931,"start_character":0,"end_line":5934,"end_character":24},"in_reply_to":"83cbd690_189d6e0a","updated":"2026-08-28 11:51:17.000000000","message":"it was an older check which we have now relaxed where if there are ontap volumes present but not managed by manila, we will ignore it.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":5941,"context_line":"            src_vserver, mock_client, [])"},{"line_number":5942,"context_line":""},{"line_number":5943,"context_line":"        self.assertEqual({}, result)"},{"line_number":5944,"context_line":""},{"line_number":5945,"context_line":"    # -- promote helper tests -------------------------------------------------"},{"line_number":5946,"context_line":""},{"line_number":5947,"context_line":"    def test__resolve_replica_pair_endpoints(self):"},{"line_number":5948,"context_line":"        (fake_src_ss, fake_dest_ss, active_replica, promote_replica,"}],"source_content_type":"text/x-python","patch_set":40,"id":"8a780e2e_9d6db5ae","line":5945,"range":{"start_line":5944,"start_character":0,"end_line":5945,"end_character":79},"updated":"2026-08-27 08:02:46.000000000","message":"break it up into a separate class perhaps","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"f04402f64ed27b779c4f615f33f03024a16152a6","unresolved":false,"context_lines":[{"line_number":5941,"context_line":"            src_vserver, mock_client, [])"},{"line_number":5942,"context_line":""},{"line_number":5943,"context_line":"        self.assertEqual({}, result)"},{"line_number":5944,"context_line":""},{"line_number":5945,"context_line":"    # -- promote helper tests -------------------------------------------------"},{"line_number":5946,"context_line":""},{"line_number":5947,"context_line":"    def test__resolve_replica_pair_endpoints(self):"},{"line_number":5948,"context_line":"        (fake_src_ss, fake_dest_ss, active_replica, promote_replica,"}],"source_content_type":"text/x-python","patch_set":40,"id":"ac31d3c4_4fff0d8a","line":5945,"range":{"start_line":5944,"start_character":0,"end_line":5945,"end_character":79},"in_reply_to":"8a780e2e_9d6db5ae","updated":"2026-08-28 11:51:17.000000000","message":"Yes this we will handle as part of UT refactoring.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":6016,"context_line":""},{"line_number":6017,"context_line":"        mock_client.get_svm_volumes_with_aggregates.assert_not_called()"},{"line_number":6018,"context_line":""},{"line_number":6019,"context_line":"    # -- unplanned failover detection tests -----------------------------------"},{"line_number":6020,"context_line":""},{"line_number":6021,"context_line":"    SNAPMIRROR_FIELDS \u003d (\u0027state,healthy,unhealthy_reason,source.path,\u0027"},{"line_number":6022,"context_line":"                         \u0027destination.path\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"75725f5e_3bc6595d","line":6019,"range":{"start_line":6019,"start_character":0,"end_line":6019,"end_character":79},"updated":"2026-08-27 08:02:46.000000000","message":"maybe a class of its own is useful","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[{"line_number":6016,"context_line":""},{"line_number":6017,"context_line":"        mock_client.get_svm_volumes_with_aggregates.assert_not_called()"},{"line_number":6018,"context_line":""},{"line_number":6019,"context_line":"    # -- unplanned failover detection tests -----------------------------------"},{"line_number":6020,"context_line":""},{"line_number":6021,"context_line":"    SNAPMIRROR_FIELDS \u003d (\u0027state,healthy,unhealthy_reason,source.path,\u0027"},{"line_number":6022,"context_line":"                         \u0027destination.path\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"bf28a678_acf22fa6","line":6019,"range":{"start_line":6019,"start_character":0,"end_line":6019,"end_character":79},"in_reply_to":"75725f5e_3bc6595d","updated":"2026-08-28 17:39:45.000000000","message":"Yes this we will handle as part of UT refactoring effort.","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"}],"releasenotes/notes/netapp-add-support-for-share-server-replication-222109f992350bfd.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d210003e4813d15d57b4ca14b7a6359300a942c9","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp ONTAP driver now supports ``share server`` replication using"}],"source_content_type":"text/x-yaml","patch_set":24,"id":"d7e36e8b_f8cd930f","line":1,"updated":"2026-08-08 08:15:58.000000000","message":"This release note is 64 lines... it reads more like an admin guide than a release note. The CLI usage examples, property key documentation, and known ONTAP limitations belong in the driver documentation (doc/source/admin/). The release note should be a concise summary (5-10 lines) that says what\u0027s new and points to the docs for details.","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"65022c015bb55cbe8c46010a9009f6f0600ada31","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp ONTAP driver now supports ``share server`` replication using"}],"source_content_type":"text/x-yaml","patch_set":24,"id":"19e8a4de_27fccb26","line":1,"in_reply_to":"d7e36e8b_f8cd930f","updated":"2026-08-11 11:51:43.000000000","message":"Done","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1f394d542acb7437b3cfd9d26e33a5cb0badd2db","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp ONTAP driver now supports ``share server`` replication using"},{"line_number":5,"context_line":"    SnapMirror Active Sync for NAS (SM-as NAS), providing SVM-level"},{"line_number":6,"context_line":"    disaster-recovery for share servers created with"},{"line_number":7,"context_line":"    ``driver_handles_share_servers`` set to True. Replicas are managed with"},{"line_number":8,"context_line":"    the ``openstack share server replica`` commands (create, delete, resync,"},{"line_number":9,"context_line":"    and promote), and protection is applied automatically at the SVM level."},{"line_number":10,"context_line":"    A periodic check also detects unplanned failovers performed by the"},{"line_number":11,"context_line":"    storage itself, so a share server replica that ONTAP has already"},{"line_number":12,"context_line":"    promoted is reconciled without operator intervention."},{"line_number":13,"context_line":"    This release supports synchronous (SM-as NAS) replication only and"},{"line_number":14,"context_line":"    requires ONTAP 9.19.1 or later on both clusters. See the NetApp Clustered"},{"line_number":15,"context_line":"    Data ONTAP driver documentation for supported replication properties,"},{"line_number":16,"context_line":"    prerequisites, and known limitations."}],"source_content_type":"text/x-yaml","patch_set":40,"id":"e6bb463c_f8057042","line":16,"range":{"start_line":4,"start_character":3,"end_line":16,"end_character":41},"updated":"2026-08-27 08:02:46.000000000","message":"Can you rewrite this succinctly?\n\nWhat\u0027s being added and why - there\u0027s no need to add things that will be in documentation","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5c7fbf2a00fb1e3abfa16694b043a75e0b3d4da1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp ONTAP driver now supports ``share server`` replication using"},{"line_number":5,"context_line":"    SnapMirror Active Sync for NAS (SM-as NAS), providing SVM-level"},{"line_number":6,"context_line":"    disaster-recovery for share servers created with"},{"line_number":7,"context_line":"    ``driver_handles_share_servers`` set to True. Replicas are managed with"},{"line_number":8,"context_line":"    the ``openstack share server replica`` commands (create, delete, resync,"},{"line_number":9,"context_line":"    and promote), and protection is applied automatically at the SVM level."},{"line_number":10,"context_line":"    A periodic check also detects unplanned failovers performed by the"},{"line_number":11,"context_line":"    storage itself, so a share server replica that ONTAP has already"},{"line_number":12,"context_line":"    promoted is reconciled without operator intervention."},{"line_number":13,"context_line":"    This release supports synchronous (SM-as NAS) replication only and"},{"line_number":14,"context_line":"    requires ONTAP 9.19.1 or later on both clusters. See the NetApp Clustered"},{"line_number":15,"context_line":"    Data ONTAP driver documentation for supported replication properties,"},{"line_number":16,"context_line":"    prerequisites, and known limitations."}],"source_content_type":"text/x-yaml","patch_set":40,"id":"fd29c5e1_3b22cc68","line":16,"range":{"start_line":4,"start_character":3,"end_line":16,"end_character":41},"in_reply_to":"e6bb463c_f8057042","updated":"2026-08-28 17:39:45.000000000","message":"Done","commit_id":"2ea2d27d78dfb10629e740eb4597d56080560f68"}]}
