)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"72b8462ca5c7d8f6db436796c68a25920808349d","unresolved":true,"context_lines":[{"line_number":7,"context_line":"NetApp - Update ensure_shares()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Updated ensure_shares() to get correct export location in case of"},{"line_number":10,"context_line":"create volume function failed to generate export location. This will be"},{"line_number":11,"context_line":"in addition to existing handling of snapdir visibilty. The ensure"},{"line_number":12,"context_line":"operation updates efficiency setting, qos, share comment and handles"},{"line_number":13,"context_line":"mounting of readable replicas."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"70cefce6_82e75711","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":13},"updated":"2026-01-20 07:33:16.000000000","message":"share","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"01597e5a80874e10882eda6f2e8396afa023c688","unresolved":false,"context_lines":[{"line_number":7,"context_line":"NetApp - Update ensure_shares()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Updated ensure_shares() to get correct export location in case of"},{"line_number":10,"context_line":"create volume function failed to generate export location. This will be"},{"line_number":11,"context_line":"in addition to existing handling of snapdir visibilty. The ensure"},{"line_number":12,"context_line":"operation updates efficiency setting, qos, share comment and handles"},{"line_number":13,"context_line":"mounting of readable replicas."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"a2cf40ac_d3131555","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":13},"in_reply_to":"70cefce6_82e75711","updated":"2026-01-22 08:29:33.000000000","message":"Done","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"8c74ed1deb053a336d7e06e3973199fddb2490b4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4acde7e2_a0b43e9e","updated":"2025-07-18 16:08:20.000000000","message":"Please see comments.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"896cebbc835885d3cb636d949df5642317e19040","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"864fcab6_8aea615f","updated":"2025-07-15 19:34:27.000000000","message":"Some minor questions and suggestions inline. Please take a look and thanks for working on this change!","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d02cf0e7cbfff3351ad9816041f1c8cbbf590613","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"27a41b4b_838b72c8","in_reply_to":"4acde7e2_a0b43e9e","updated":"2025-08-04 11:58:56.000000000","message":"Acknowledged","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"8e9da0eef53a4d109e912a6d9b328198beb2820b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a13e1f25_ed566e81","updated":"2026-01-12 14:27:58.000000000","message":"Hi Kiran, thanks for bringing this to the community.\nI think the commit message/reno could also mention the other new things that are now ensured (efficiency setting, qos, comment, mounting of readable replicas).\n\nAnd please have a look at my inline comment regarding the logging of failed ensure runs.","commit_id":"a2829f166e6fa980b58f33ad037188f7865803ea"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7ec72729f148d8e8d944a7b27f03e038caa85f1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7b6dcde4_7f4464ee","in_reply_to":"a13e1f25_ed566e81","updated":"2026-01-13 12:36:07.000000000","message":"Thanks for review, fixed logging and commit/releasenotes.","commit_id":"a2829f166e6fa980b58f33ad037188f7865803ea"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"987497fdc0934301e49527ae5aeb99b65da86bd4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"25e77445_40f9fd9b","updated":"2026-01-16 15:42:44.000000000","message":"Please take a look at comments.","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"bc08a87cc46734e77e9e10390163c60c5382c456","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"cc00bc27_3b10f7f7","updated":"2026-01-19 08:44:30.000000000","message":"Thanks Kiran for working on this, I have added few comments please take a look.","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"72b8462ca5c7d8f6db436796c68a25920808349d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"765a1764_50f7bd9a","updated":"2026-01-20 07:33:16.000000000","message":"The volume comment is a separate feature, that could be added in another commit, so we can concentrate on the ensure parts.","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"01597e5a80874e10882eda6f2e8396afa023c688","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2969e4d5_ce124138","in_reply_to":"765a1764_50f7bd9a","updated":"2026-01-22 08:29:33.000000000","message":"Ok, removed comment part. Will add via another dependent PR.","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4d1dcd220dd8e7bace742a81dc7999e03c16274c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"cb4fcec8_edc3bbc3","updated":"2026-02-05 11:47:20.000000000","message":"LGTM","commit_id":"b407543d9d02e7f407c7eea3017d9edc65d95c00"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8c8a9cb33a0fab0823abfc965eb48f0047186f9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e72b7229_01831f18","updated":"2026-02-05 11:45:51.000000000","message":"LGTM","commit_id":"b407543d9d02e7f407c7eea3017d9edc65d95c00"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6bff990f512f856771660a96fe045b41f792ac29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4297dfbf_2aaad246","updated":"2026-02-02 08:14:05.000000000","message":"Run-NetApp CI","commit_id":"b407543d9d02e7f407c7eea3017d9edc65d95c00"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cffd4a2d497a8f776c486af5c0eb37e863bf0f28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ff90fa89_1fdf0881","updated":"2026-02-10 16:20:40.000000000","message":"Looking good, only one question inline. Thanks for working on this, Kiran","commit_id":"b8b0171378c622bd1839aece14b937aae56f9a02"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"dfd89ac2a85884a724de0499475f8a028c432adf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"87b5dcd3_c1a82251","updated":"2026-02-13 07:19:44.000000000","message":"Thanks maurice and Kiran for details explanation, changes looks good for me. Given one minor comments and pleas run the zuul on this.","commit_id":"b8b0171378c622bd1839aece14b937aae56f9a02"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"3112819c9066a7fd532ce49a78449636d17c0d89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"063019ba_aec23bc6","updated":"2026-02-17 03:22:46.000000000","message":"LGTM","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"9e1bd6e14483ddc05400463ef60d4443b5224891","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2a51c3ba_dc1e956d","updated":"2026-03-05 15:38:15.000000000","message":"LGTM ..!","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"33fd4857e60426ad73518ca8746f78c9bcfd33d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"68dcfcc9_6bdac5ec","updated":"2026-02-19 14:27:11.000000000","message":"LGTM, thanks Kiran","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6f53fa7efbadc3bca2267be5d2d46a66d682df40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"dcfcaf24_f8bf2f26","updated":"2026-02-19 14:38:47.000000000","message":"Note - merge this change after QoS and sync features are merged.","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"7b2dcdd82ba980a5608839b7be50f34eb7feae97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"aeba6445_65b97121","updated":"2026-02-17 03:22:35.000000000","message":"Run-NetApp CI","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"62d3a310e35a7370f74bcccbc4443cf080b151d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b425ed51_d440230e","in_reply_to":"dcfcaf24_f8bf2f26","updated":"2026-02-19 14:40:56.000000000","message":"Ack","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9ac3ed3c82a4bbab5148dd6b36cc4a6794d20942","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6deb9f7d_3d522b07","updated":"2026-05-11 14:10:19.000000000","message":"DHSS REST Tests passed while 2 tests from DHSS ZAPI reported failure. Since the PR does not do API based changes, the failures needs to check.\n\nhttps://netappopenstacklogserver.s3-us-west-1.amazonaws.com/logs/21/952821/11/upstream-check-manila/manila-tempest-plugin-ontap-dhss/6239e37/testr_results.html","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e0599a43f324a5920047a409ea43318c9648ab05","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"039e2e68_1e61da09","updated":"2026-05-08 12:31:20.000000000","message":"NetAPP CI is failing. We will wait for the CI run to be successful.","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"ac011ec58d85de7aeaa627131697b1e677c1501e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d30f130b_2bae7a23","updated":"2026-04-29 06:41:53.000000000","message":"NetApp-CI","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"025ad29a67e7fd56aac3f2de4b3df3b0f3572677","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0510e5de_cd8d9c8e","updated":"2026-05-06 04:44:42.000000000","message":"Run-NetApp CI","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"45e3b5262bf9333b822ca1a7bd53132eef1d7aae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0853e1f5_87cd05e1","updated":"2026-05-11 10:55:04.000000000","message":"Run-NetApp CI","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8b13a843c6694ba589c4f0d40de995bc691beda8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2d503136_1fda73be","updated":"2026-04-29 06:45:04.000000000","message":"Run-NetApp CI","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"dc1428f4686e2a68a8d4c2700cd7df3383cab81f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"78191c73_2976bfb8","updated":"2026-05-11 14:12:03.000000000","message":"Run-NetApp CI","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"d5965791ed418ec3fb77fff3d44a41e4b6014ad1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"7b43d762_7d8b24ac","updated":"2026-05-05 06:25:56.000000000","message":"Run-NetApp CI","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"78691ee0d8d1e9712db95c743972f3550b742d2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"80317b8d_c070e655","updated":"2026-05-12 11:23:08.000000000","message":"ZAPI failure - only 1 test\n\n        \nft1.1: setUpClass (manila_tempest_tests.tests.api.admin.test_multi_backend.ShareMultiBackendTest)testtools.testresult.real._StringException: Traceback (most recent call last):\n  File \"/opt/stack/tempest/tempest/test.py\", line 185, in setUpClass\n    raise value.with_traceback(trace)\n  File \"/opt/stack/tempest/tempest/test.py\", line 178, in setUpClass\n    cls.resource_setup()\n  File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/manila_tempest_tests/tests/api/admin/test_multi_backend.py\", line 59, in resource_setup\n    share_protocol \u003d cls._share_protocol(backends_protocols[backend])\n                                         ~~~~~~~~~~~~~~~~~~^^^^^^^^^\nKeyError: \u0027ontap3\u0027\n\n\nthis seems unrelated to PR.","commit_id":"40a92c7d4acfe08a164055882588c1ebbaeff068"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7b0d847a82a2b116bdcfa6e963755d44c138edaa","unresolved":true,"context_lines":[{"line_number":378,"context_line":"        else:"},{"line_number":379,"context_line":"            type \u003d share.get(\u0027share_type_name\u0027)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        return \u0027share_id: {share_id}, share_name: {display_name}, \u0027 \\"},{"line_number":382,"context_line":"               \u0027project: {project_id}, share_type: {type}\u0027.format("},{"line_number":383,"context_line":"                   type\u003dtype, **share)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def _get_backend_snapshot_name(self, snapshot_id):"},{"line_number":386,"context_line":"        \"\"\"Get snapshot name according to snapshot name template.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"e56a5778_49abe2b3","line":383,"range":{"start_line":381,"start_character":8,"end_line":383,"end_character":38},"updated":"2025-07-10 15:31:39.000000000","message":"```suggestion\n        return (\u0027share_id: {share_id}, share_name: {display_name}, \u0027\n                \u0027project: {project_id}, share_type: {type}\u0027.format(\n                    type\u003dtype, **share))\n```","commit_id":"cb415df4e68b6ad3a8f439f7835b0bbdb28ecd1a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8578bb740ba11f61043b4f5ffb0d2eda562db37b","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        else:"},{"line_number":379,"context_line":"            type \u003d share.get(\u0027share_type_name\u0027)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        return \u0027share_id: {share_id}, share_name: {display_name}, \u0027 \\"},{"line_number":382,"context_line":"               \u0027project: {project_id}, share_type: {type}\u0027.format("},{"line_number":383,"context_line":"                   type\u003dtype, **share)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    def _get_backend_snapshot_name(self, snapshot_id):"},{"line_number":386,"context_line":"        \"\"\"Get snapshot name according to snapshot name template.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"fddf9403_b7ff1e25","line":383,"range":{"start_line":381,"start_character":8,"end_line":383,"end_character":38},"in_reply_to":"e56a5778_49abe2b3","updated":"2025-07-11 07:15:42.000000000","message":"Done","commit_id":"cb415df4e68b6ad3a8f439f7835b0bbdb28ecd1a"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"896cebbc835885d3cb636d949df5642317e19040","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"81dd3135_cc11f959","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"updated":"2025-07-15 19:34:27.000000000","message":"do we want to save this even for dhss\u003dfalse backends? not sure if it is already saved right now. NetApp folks might shed some light on this","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"b166b0ad40249fd9adb7aa92512ddf68b590c48a","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"a4069790_ba1f4542","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"008318c6_19c57b18","updated":"2026-02-05 10:26:24.000000000","message":"Okay I got confused with the cinder retype workflow. I am okay if this can be experimental till tested on a little bit of scale and then we can go ahead with finalizing or backing out based on the testing result.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ace351dc618e680867034d9cbc95c29e04bbbd8e","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"b19f5077_bf3f21ad","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"03cad037_94214697","updated":"2026-01-23 11:11:49.000000000","message":"My 2 cents - This is applicable for shares only in \"Available\" and \"Ensuring\" status. Also, called only during service start.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"72b8462ca5c7d8f6db436796c68a25920808349d","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"e89e6076_b274f7c6","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"37cb310b_c61176ec","updated":"2026-01-20 07:33:16.000000000","message":"I think it may be a misunderstanding what we correct here: ontap did not fail. The backing volume is perfectly fine. Just the representation of this volume in manila is not right, we missed to store the export location on the manila object because someone pulled the plug in the middle of the process (that someone e.g. being a kubernetes automation that decided to shuffle the pods, it could be manila-share is being restarted or the manila db ...).\n\n\n------\n\nTo the other questions:\nupdating qos, snapdir visibility, mounting readable replicas - those actions are meant to apply config changes to existing volumes. So it is not about correcting errors.\n\nE.g. I had snapdir visiblity turned on for a while for a certain share type and I have 100 existing volumes where it is turned on in ontap. Now I change the setting in my share type. From now on new volumes will have snapdir visiblity turned off. But my 100 existing volumes would still have the wrong setting. This is what ensure shares would correct, it would apply the new share type setting to the existing ontap volumes.\nSame for when I change QOS config or when I decide to turn my DR replicas share type into a Readable replicas share type.\nThis way I avoid introducing a new share type for every config change and have a more homogenous landscape, which is easier to maintain.\n\nThat behaviour is worth a better explanation in the release notes :)","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a205751917bf219939749a729caf479fea77e767","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"008318c6_19c57b18","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"465f3460_2e6dfd92","updated":"2026-02-04 13:10:27.000000000","message":"share retype ? \nqos type will be one more thing that will be added in future to modify policies in case any of the parameter differs from what exist on backend vs whats present in share-type. \n\n\u003e I agree that there can be a flood of ONTAP calls\n\nFor upstream as of now, this executes only during service init. We dont see any bottlenecks so far. I am also ok to get results of testing this change in your deployment and then accordingly make changes if any. wdyt ?","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d02cf0e7cbfff3351ad9816041f1c8cbbf590613","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"99a89ef3_fb432e84","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"81dd3135_cc11f959","updated":"2025-08-04 11:58:56.000000000","message":"@anoop.shukla@netapp.com\nwdyt about this ?","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"987497fdc0934301e49527ae5aeb99b65da86bd4","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"bd2c11c6_db2a2d91","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"99a89ef3_fb432e84","updated":"2026-01-16 15:42:44.000000000","message":"Thats a good point. I think we should do it for dhss\u003dfalse as well. But overall, isnt this going to add more load to the driver init? I am wondering how it will work if I have 100s of share and this loop ends up getting called for all the shares? It may end up calling 100s of ONTAP call as well.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b399ecd67380dcb5428c3d899586515ea9ed4025","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"e38196d4_e85786bb","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"a4069790_ba1f4542","updated":"2026-02-05 10:57:06.000000000","message":"Its tested change and part of SAP deployment across various regions(azs) for long-time. We are proposing upstream with this PR. I suggest if NetApp can keep in their  deployment for few days, we will have more results.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"e53fd37e3005cfc8ce5d377ec569d46d9726f9cc","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"37cb310b_c61176ec","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"ae1561f4_dc45383c","updated":"2026-01-20 04:12:33.000000000","message":"I agree with Gireesh suggestion, If share volume creation fails it can be deleted and created again. This would be overkill on ONTAP to check all the shares by spawning multiple calls.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"8de402ced163db7b12e4068d8c2c4724d3bff5f9","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"465f3460_2e6dfd92","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"b19f5077_bf3f21ad","updated":"2026-02-04 11:59:21.000000000","message":"\u003e\u003eI had snapdir visiblity turned on for a while for a certain share type and I have 100 existing volumes where it is turned on in ontap. Now I change the setting in my share type. From now on new volumes will have snapdir visiblity turned off. But my 100 existing volumes would still have the wrong setting. This is what ensure shares would correct, it would apply the new share type setting to the existing ontap volumes.\n\nIsnt it a retype behaviour that we are trying in this use case? If a type has changed, ideally the behaviour should be handled via share retype?\n\nOn Kumar\u0027s question, I agree that there can be a flood of ONTAP calls that can get triggered But if its only for specific status, we can consider it less likely to happen.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"60d8ce65181b4872b6110e50eaa32c1c1dc1fcf3","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"03cad037_94214697","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"b35dc865_867d00be","updated":"2026-01-22 17:19:57.000000000","message":"@maurice.escher@sap.com Thanks for the details. But for every pod/service restart this would trigger for all shares across pools and each share can spawn 6+ API calls to ONTAP backends, that is only concern.\n \nCan we control this with one or more config flags to opt-in for this?\n\n@anoop.shukla@netapp.com @gawasthi2010@gmail.com @saikumar1016@gmail.com Please add your suggestions.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"bc08a87cc46734e77e9e10390163c60c5382c456","unresolved":true,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"ae1561f4_dc45383c","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"bd2c11c6_db2a2d91","updated":"2026-01-19 08:44:30.000000000","message":"In the case of dhss_false, SVM,data LIF, export policy, and export policy rules are created by the admin, so these steps do not apply to dhss_false. Moreover, for dhss_flase, it is generally not recommended to modify the export policy created by the storage admin. If there is an issue with the export policy or its rules, the admin should manually debug and resolve the problem rather than relying on an automated process.\n\nIn case of junction-path is not created (volume mount failed) that will be applicable for both dhhs_true and dhhs_false.\n\nNow, regarding this implementation:\n\nScenario 1: Location creation failure\nAs far as I know, when a user creates the first share using dssh_true, the system creates the SVM, the data LIF for the SVM, and then the export policy and rules. If any of these steps fail, the share creation will fail, leaving only an entry in the OpenStack database. In this case, the user create delete the share and recreate it.\n\nScenario 2: Failure during creation of subsequent shares\nSuppose the first share is created successfully, which creates the required resources on ONTAP. If the second share is created but the export location is not displayed, this indicates that the location creation failed. Since the junction path is set during share creation, failure here implies that the FlexVol creation failed. In this case also, user should delete the share and recreate it.\n\nQuestions:\n\nWhy are these changes applicable only for readable replicas?\nWhy are we modifying the QoS policy? If the initial FlexVol is created with the QoS policy passed through extra specs, why do we need to modify the QoS policy again?","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4d1dcd220dd8e7bace742a81dc7999e03c16274c","unresolved":false,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"17953299_67799054","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"e38196d4_e85786bb","updated":"2026-02-05 11:47:20.000000000","message":"We can think of introducing a flag if we see scale issue. For now we are good as you had tested on scale.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"01597e5a80874e10882eda6f2e8396afa023c688","unresolved":false,"context_lines":[{"line_number":4104,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4105,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4106,"context_line":"                        share,"},{"line_number":4107,"context_line":"                        share_server\u003dshare_server"},{"line_number":4108,"context_line":"                    ),"},{"line_number":4109,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4110,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":2,"id":"b35dc865_867d00be","line":4107,"range":{"start_line":4107,"start_character":24,"end_line":4107,"end_character":49},"in_reply_to":"e89e6076_b274f7c6","updated":"2026-01-22 08:29:33.000000000","message":"Added in releasenotes.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"8c74ed1deb053a336d7e06e3973199fddb2490b4","unresolved":true,"context_lines":[{"line_number":4119,"context_line":"                msg \u003d _(\u0027Failed to ensure share %(share)s: \u0027"},{"line_number":4120,"context_line":"                        \u0027%(exception)s. \u0027) % msg_args"},{"line_number":4121,"context_line":""},{"line_number":4122,"context_line":"                if (err_msg.startswith(\u0027Could not find\u0027) or"},{"line_number":4123,"context_line":"                        err_msg.endswith(\u0027not found.\u0027)):"},{"line_number":4124,"context_line":"                    LOG.debug(msg)"},{"line_number":4125,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ec2b3450_22169cfc","line":4122,"updated":"2025-07-18 16:08:20.000000000","message":"Instead of error message, why dont we create the logic using the API error code and message.startswith(). Just to be double sure?","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d02cf0e7cbfff3351ad9816041f1c8cbbf590613","unresolved":false,"context_lines":[{"line_number":4119,"context_line":"                msg \u003d _(\u0027Failed to ensure share %(share)s: \u0027"},{"line_number":4120,"context_line":"                        \u0027%(exception)s. \u0027) % msg_args"},{"line_number":4121,"context_line":""},{"line_number":4122,"context_line":"                if (err_msg.startswith(\u0027Could not find\u0027) or"},{"line_number":4123,"context_line":"                        err_msg.endswith(\u0027not found.\u0027)):"},{"line_number":4124,"context_line":"                    LOG.debug(msg)"},{"line_number":4125,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"bc01a420_76314dc2","line":4122,"in_reply_to":"ec2b3450_22169cfc","updated":"2025-08-04 11:58:56.000000000","message":"this is periodic function and we handle higher level abstracted exceptions here, so API error codes are not useful.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"896cebbc835885d3cb636d949df5642317e19040","unresolved":true,"context_lines":[{"line_number":4119,"context_line":"                msg \u003d _(\u0027Failed to ensure share %(share)s: \u0027"},{"line_number":4120,"context_line":"                        \u0027%(exception)s. \u0027) % msg_args"},{"line_number":4121,"context_line":""},{"line_number":4122,"context_line":"                if (err_msg.startswith(\u0027Could not find\u0027) or"},{"line_number":4123,"context_line":"                        err_msg.endswith(\u0027not found.\u0027)):"},{"line_number":4124,"context_line":"                    LOG.debug(msg)"},{"line_number":4125,"context_line":"                else:"},{"line_number":4126,"context_line":"                    LOG.warning(msg)"},{"line_number":4127,"context_line":""},{"line_number":4128,"context_line":"        return updates"},{"line_number":4129,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"29d4de26_d04fed6b","line":4126,"range":{"start_line":4122,"start_character":16,"end_line":4126,"end_character":36},"updated":"2025-07-15 19:34:27.000000000","message":"shouldn\u0027t this be warning or error in both cases?","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"8e9da0eef53a4d109e912a6d9b328198beb2820b","unresolved":false,"context_lines":[{"line_number":4119,"context_line":"                msg \u003d _(\u0027Failed to ensure share %(share)s: \u0027"},{"line_number":4120,"context_line":"                        \u0027%(exception)s. \u0027) % msg_args"},{"line_number":4121,"context_line":""},{"line_number":4122,"context_line":"                if (err_msg.startswith(\u0027Could not find\u0027) or"},{"line_number":4123,"context_line":"                        err_msg.endswith(\u0027not found.\u0027)):"},{"line_number":4124,"context_line":"                    LOG.debug(msg)"},{"line_number":4125,"context_line":"                else:"},{"line_number":4126,"context_line":"                    LOG.warning(msg)"},{"line_number":4127,"context_line":""},{"line_number":4128,"context_line":"        return updates"},{"line_number":4129,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"d987c53b_70ab20a3","line":4126,"range":{"start_line":4122,"start_character":16,"end_line":4126,"end_character":36},"in_reply_to":"192120e4_fc5b21d4","updated":"2026-01-12 14:27:58.000000000","message":"From operating experience we are getting the \u0027not found\u0027 errors only if we work on shares that have been deleted in the meantime (this is okay, because we don\u0027t want to lock shares that are being ensured).\n\nThose kind of errors are not a big problem, hence why it is okay to only see them on debug level.\n\nBut the other errors that lead to a failed ensure are more interesting and should be logged. I think you accidentally ignore those with the most recent change to this code here.","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d02cf0e7cbfff3351ad9816041f1c8cbbf590613","unresolved":false,"context_lines":[{"line_number":4119,"context_line":"                msg \u003d _(\u0027Failed to ensure share %(share)s: \u0027"},{"line_number":4120,"context_line":"                        \u0027%(exception)s. \u0027) % msg_args"},{"line_number":4121,"context_line":""},{"line_number":4122,"context_line":"                if (err_msg.startswith(\u0027Could not find\u0027) or"},{"line_number":4123,"context_line":"                        err_msg.endswith(\u0027not found.\u0027)):"},{"line_number":4124,"context_line":"                    LOG.debug(msg)"},{"line_number":4125,"context_line":"                else:"},{"line_number":4126,"context_line":"                    LOG.warning(msg)"},{"line_number":4127,"context_line":""},{"line_number":4128,"context_line":"        return updates"},{"line_number":4129,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"192120e4_fc5b21d4","line":4126,"range":{"start_line":4122,"start_character":16,"end_line":4126,"end_character":36},"in_reply_to":"29d4de26_d04fed6b","updated":"2025-08-04 11:58:56.000000000","message":"made warning for both cases","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"8c74ed1deb053a336d7e06e3973199fddb2490b4","unresolved":true,"context_lines":[{"line_number":4179,"context_line":"            if provisioning_options.get(\u0027max_files_multiplier\u0027) is not None:"},{"line_number":4180,"context_line":"                max_files_multiplier \u003d provisioning_options.pop("},{"line_number":4181,"context_line":"                    \u0027max_files_multiplier\u0027)"},{"line_number":4182,"context_line":"                max_files \u003d na_utils.calculate_max_files(share[\u0027size\u0027],"},{"line_number":4183,"context_line":"                                                         max_files_multiplier)"},{"line_number":4184,"context_line":"                vserver_client.set_volume_max_files(share_name, max_files)"},{"line_number":4185,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"929d8006_d412e32c","line":4182,"updated":"2025-07-18 16:08:20.000000000","message":"Can we add some comments on why we wantn to set max_files on vserver. and whats the use case?","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d02cf0e7cbfff3351ad9816041f1c8cbbf590613","unresolved":false,"context_lines":[{"line_number":4179,"context_line":"            if provisioning_options.get(\u0027max_files_multiplier\u0027) is not None:"},{"line_number":4180,"context_line":"                max_files_multiplier \u003d provisioning_options.pop("},{"line_number":4181,"context_line":"                    \u0027max_files_multiplier\u0027)"},{"line_number":4182,"context_line":"                max_files \u003d na_utils.calculate_max_files(share[\u0027size\u0027],"},{"line_number":4183,"context_line":"                                                         max_files_multiplier)"},{"line_number":4184,"context_line":"                vserver_client.set_volume_max_files(share_name, max_files)"},{"line_number":4185,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a22fad3_06ac6234","line":4182,"in_reply_to":"929d8006_d412e32c","updated":"2025-08-04 11:58:56.000000000","message":"I have removed this section and will add as part of PR https://review.opendev.org/c/openstack/manila/+/952690","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"987497fdc0934301e49527ae5aeb99b65da86bd4","unresolved":true,"context_lines":[{"line_number":380,"context_line":"        return self.configuration.netapp_volume_name_template % {"},{"line_number":381,"context_line":"            \u0027share_id\u0027: share_id.replace(\u0027-\u0027, \u0027_\u0027)}"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _get_backend_share_comment(self, share):"},{"line_number":384,"context_line":"        \"\"\"Get share comment.\"\"\""},{"line_number":385,"context_line":"        # caution: share_type is nullable"},{"line_number":386,"context_line":"        if share.get(\u0027share_type\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"de17855d_0e89c2dc","line":383,"updated":"2026-01-16 15:42:44.000000000","message":"Why is this method named \"_get_backend_share_comment\"? It gives a view that this method returns an attribute that is comment from the backend share. May be \"_get_backend_details_as_comment\" might make more sense?","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a205751917bf219939749a729caf479fea77e767","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        return self.configuration.netapp_volume_name_template % {"},{"line_number":381,"context_line":"            \u0027share_id\u0027: share_id.replace(\u0027-\u0027, \u0027_\u0027)}"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _get_backend_share_comment(self, share):"},{"line_number":384,"context_line":"        \"\"\"Get share comment.\"\"\""},{"line_number":385,"context_line":"        # caution: share_type is nullable"},{"line_number":386,"context_line":"        if share.get(\u0027share_type\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"f12f2085_8bfbe60e","line":383,"in_reply_to":"33f835b4_97309bdc","updated":"2026-02-04 13:10:27.000000000","message":"this is added in follow-up patch.","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"01597e5a80874e10882eda6f2e8396afa023c688","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        return self.configuration.netapp_volume_name_template % {"},{"line_number":381,"context_line":"            \u0027share_id\u0027: share_id.replace(\u0027-\u0027, \u0027_\u0027)}"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _get_backend_share_comment(self, share):"},{"line_number":384,"context_line":"        \"\"\"Get share comment.\"\"\""},{"line_number":385,"context_line":"        # caution: share_type is nullable"},{"line_number":386,"context_line":"        if share.get(\u0027share_type\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"b5ed67b3_5d744b84","line":383,"in_reply_to":"45bf0649_54523d64","updated":"2026-01-22 08:29:33.000000000","message":"Done","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"8de402ced163db7b12e4068d8c2c4724d3bff5f9","unresolved":true,"context_lines":[{"line_number":380,"context_line":"        return self.configuration.netapp_volume_name_template % {"},{"line_number":381,"context_line":"            \u0027share_id\u0027: share_id.replace(\u0027-\u0027, \u0027_\u0027)}"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _get_backend_share_comment(self, share):"},{"line_number":384,"context_line":"        \"\"\"Get share comment.\"\"\""},{"line_number":385,"context_line":"        # caution: share_type is nullable"},{"line_number":386,"context_line":"        if share.get(\u0027share_type\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"33f835b4_97309bdc","line":383,"in_reply_to":"45bf0649_54523d64","updated":"2026-02-04 11:59:21.000000000","message":"_generate would be a better naming IMO.","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"72b8462ca5c7d8f6db436796c68a25920808349d","unresolved":true,"context_lines":[{"line_number":380,"context_line":"        return self.configuration.netapp_volume_name_template % {"},{"line_number":381,"context_line":"            \u0027share_id\u0027: share_id.replace(\u0027-\u0027, \u0027_\u0027)}"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _get_backend_share_comment(self, share):"},{"line_number":384,"context_line":"        \"\"\"Get share comment.\"\"\""},{"line_number":385,"context_line":"        # caution: share_type is nullable"},{"line_number":386,"context_line":"        if share.get(\u0027share_type\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"45bf0649_54523d64","line":383,"in_reply_to":"de17855d_0e89c2dc","updated":"2026-01-20 07:33:16.000000000","message":"The method is providing the share details that are meant to be used as backend comment.\nSimilar to what `_get_backend_share_name` is doing, which is giving the name that is used for the share on the backend.\n\nMaybe both can be changed to `_provide` or `_generate` instead of `_get` to make it clearer that we are not fetching something from the backend, but intending to save it there?","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0ba4b98882c260fa100567bed799ee6274ca1f1a","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        return self.configuration.netapp_volume_name_template % {"},{"line_number":381,"context_line":"            \u0027share_id\u0027: share_id.replace(\u0027-\u0027, \u0027_\u0027)}"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _get_backend_share_comment(self, share):"},{"line_number":384,"context_line":"        \"\"\"Get share comment.\"\"\""},{"line_number":385,"context_line":"        # caution: share_type is nullable"},{"line_number":386,"context_line":"        if share.get(\u0027share_type\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"77376555_4159f885","line":383,"in_reply_to":"eb93ea2e_56c0546b","updated":"2026-05-11 10:54:04.000000000","message":"https://review.opendev.org/c/openstack/manila/+/974310\n\nIf you check \"Relation chain\" of current patch, you will get above PR means it wont be merged until current ie. ensure_shares is merged.","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e0599a43f324a5920047a409ea43318c9648ab05","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        return self.configuration.netapp_volume_name_template % {"},{"line_number":381,"context_line":"            \u0027share_id\u0027: share_id.replace(\u0027-\u0027, \u0027_\u0027)}"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def _get_backend_share_comment(self, share):"},{"line_number":384,"context_line":"        \"\"\"Get share comment.\"\"\""},{"line_number":385,"context_line":"        # caution: share_type is nullable"},{"line_number":386,"context_line":"        if share.get(\u0027share_type\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"eb93ea2e_56c0546b","line":383,"in_reply_to":"f12f2085_8bfbe60e","updated":"2026-05-08 12:31:20.000000000","message":"Can you please provide the link of the follow up patch here?","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"bc08a87cc46734e77e9e10390163c60c5382c456","unresolved":true,"context_lines":[{"line_number":388,"context_line":"        else:"},{"line_number":389,"context_line":"            type \u003d share.get(\u0027share_type_name\u0027)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        return (\u0027share_id: {share_id}, share_name: {display_name}, \u0027"},{"line_number":392,"context_line":"                \u0027project: {project_id}, share_type: {type}\u0027.format("},{"line_number":393,"context_line":"                    type\u003dtype, **share))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def _get_backend_snapshot_name(self, snapshot_id):"},{"line_number":396,"context_line":"        \"\"\"Get snapshot name according to snapshot name template.\"\"\""},{"line_number":397,"context_line":"        return \u0027share_snapshot_\u0027 + snapshot_id.replace(\u0027-\u0027, \u0027_\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"d21e0d5e_b2d30130","line":394,"range":{"start_line":391,"start_character":15,"end_line":394,"end_character":0},"updated":"2026-01-19 08:44:30.000000000","message":"nit- Add the protocol name in comment","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"01597e5a80874e10882eda6f2e8396afa023c688","unresolved":false,"context_lines":[{"line_number":388,"context_line":"        else:"},{"line_number":389,"context_line":"            type \u003d share.get(\u0027share_type_name\u0027)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        return (\u0027share_id: {share_id}, share_name: {display_name}, \u0027"},{"line_number":392,"context_line":"                \u0027project: {project_id}, share_type: {type}\u0027.format("},{"line_number":393,"context_line":"                    type\u003dtype, **share))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def _get_backend_snapshot_name(self, snapshot_id):"},{"line_number":396,"context_line":"        \"\"\"Get snapshot name according to snapshot name template.\"\"\""},{"line_number":397,"context_line":"        return \u0027share_snapshot_\u0027 + snapshot_id.replace(\u0027-\u0027, \u0027_\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"15387d69_bf46d397","line":394,"range":{"start_line":391,"start_character":15,"end_line":394,"end_character":0},"in_reply_to":"d21e0d5e_b2d30130","updated":"2026-01-22 08:29:33.000000000","message":"Done","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"60d8ce65181b4872b6110e50eaa32c1c1dc1fcf3","unresolved":true,"context_lines":[{"line_number":4277,"context_line":"            share_server \u003d share.get(\u0027share_server\u0027)"},{"line_number":4278,"context_line":"            try:"},{"line_number":4279,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4280,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4281,"context_line":"                        share,"},{"line_number":4282,"context_line":"                        share_server\u003dshare_server"},{"line_number":4283,"context_line":"                    ),"}],"source_content_type":"text/x-python","patch_set":7,"id":"84f7d364_8b98377f","line":4280,"updated":"2026-01-22 17:19:57.000000000","message":"What happens if API call got failed due to some network issue?\nWhat would be the value for export and the share status?","commit_id":"ea2b4285eee0e9db140ce4e34a100d94b9f45586"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ace351dc618e680867034d9cbc95c29e04bbbd8e","unresolved":false,"context_lines":[{"line_number":4277,"context_line":"            share_server \u003d share.get(\u0027share_server\u0027)"},{"line_number":4278,"context_line":"            try:"},{"line_number":4279,"context_line":"                updates[share[\u0027id\u0027]] \u003d {"},{"line_number":4280,"context_line":"                    \u0027export_locations\u0027: self.update_share("},{"line_number":4281,"context_line":"                        share,"},{"line_number":4282,"context_line":"                        share_server\u003dshare_server"},{"line_number":4283,"context_line":"                    ),"}],"source_content_type":"text/x-python","patch_set":7,"id":"94cea6ac_b9f9dab9","line":4280,"in_reply_to":"84f7d364_8b98377f","updated":"2026-01-23 11:11:49.000000000","message":"Only shares which are in Available state are updated for configs here assuming the backend is all good. If API call fails, the share will be skipped to get updated in Manila db as it wont be in returned list. So the status/export location will remained unchanged in Share Manager.","commit_id":"ea2b4285eee0e9db140ce4e34a100d94b9f45586"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"60d8ce65181b4872b6110e50eaa32c1c1dc1fcf3","unresolved":true,"context_lines":[{"line_number":4281,"context_line":"                        share,"},{"line_number":4282,"context_line":"                        share_server\u003dshare_server"},{"line_number":4283,"context_line":"                    ),"},{"line_number":4284,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4285,"context_line":"                }"},{"line_number":4286,"context_line":"            except (exception.NetAppException,"},{"line_number":4287,"context_line":"                    netapp_api.NaApiError,"}],"source_content_type":"text/x-python","patch_set":7,"id":"306225d6_3ac3c4d8","line":4284,"updated":"2026-01-22 17:19:57.000000000","message":"Why are we hardcoding the status as available always?","commit_id":"ea2b4285eee0e9db140ce4e34a100d94b9f45586"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ace351dc618e680867034d9cbc95c29e04bbbd8e","unresolved":false,"context_lines":[{"line_number":4281,"context_line":"                        share,"},{"line_number":4282,"context_line":"                        share_server\u003dshare_server"},{"line_number":4283,"context_line":"                    ),"},{"line_number":4284,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4285,"context_line":"                }"},{"line_number":4286,"context_line":"            except (exception.NetAppException,"},{"line_number":4287,"context_line":"                    netapp_api.NaApiError,"}],"source_content_type":"text/x-python","patch_set":7,"id":"8e12dde3_4b77155d","line":4284,"in_reply_to":"306225d6_3ac3c4d8","updated":"2026-01-23 11:11:49.000000000","message":"ensure_driver_resources() from share manager calls driver interface of ensure_shares() which expected to return shares with valid data. This implementation in NetApp was not providing that data, since with this PR we will provide that data to share manager, we need to make sure correct status. So we set status to Available, perform configs and add to list. Any exception in between is skipped from list. The updates are then applied in Share Manager.","commit_id":"ea2b4285eee0e9db140ce4e34a100d94b9f45586"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"e1f00b9cf932fe8c19ef972b5e2560483a107972","unresolved":true,"context_lines":[{"line_number":4281,"context_line":"                        share,"},{"line_number":4282,"context_line":"                        share_server\u003dshare_server"},{"line_number":4283,"context_line":"                    ),"},{"line_number":4284,"context_line":"                    \u0027status\u0027: constants.STATUS_AVAILABLE"},{"line_number":4285,"context_line":"                }"},{"line_number":4286,"context_line":"            except (exception.NetAppException,"},{"line_number":4287,"context_line":"                    netapp_api.NaApiError,"}],"source_content_type":"text/x-python","patch_set":7,"id":"8468ffe8_99b84fc3","line":4284,"in_reply_to":"306225d6_3ac3c4d8","updated":"2026-01-23 11:05:11.000000000","message":"if you look at share manager\u0027s ensure_driver_resources() [1] we are only working on shares that are either in status \u0027available\u0027 or \u0027ensuring\u0027 and after a successful ensure run a share should always end up in \u0027available\u0027 then.\n\n[1] https://opendev.org/openstack/manila/src/commit/b91cacf5286b2ea6af1099ceb7aa4e8bf6e18fc9/manila/share/manager.py#L478-L488","commit_id":"ea2b4285eee0e9db140ce4e34a100d94b9f45586"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cffd4a2d497a8f776c486af5c0eb37e863bf0f28","unresolved":true,"context_lines":[{"line_number":4321,"context_line":"        provisioning_options \u003d self._get_provisioning_options_for_share("},{"line_number":4322,"context_line":"            share, vserver, vserver_client\u003dvserver_client)"},{"line_number":4323,"context_line":""},{"line_number":4324,"context_line":"        qos_policy_group_name \u003d self._modify_or_create_qos_for_existing_share("},{"line_number":4325,"context_line":"            share, extra_specs, vserver, vserver_client)"},{"line_number":4326,"context_line":"        if qos_policy_group_name:"},{"line_number":4327,"context_line":"            provisioning_options[\u0027qos_policy_group\u0027] \u003d qos_policy_group_name"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a6ccd4f_284168ac","line":4324,"range":{"start_line":4324,"start_character":32,"end_line":4324,"end_character":78},"updated":"2026-02-10 16:20:40.000000000","message":"looks okay to me and I was thinking of how this could impact the users UX, considering that the QoS might change. I think this would be the case that the share wouldn\u0027t pick up anything that isn\u0027t already in the share type, but unsure. Have you tested a scenario like that? i.e.\n\n1. create a share with a share type that has no QoS specs\n2. change the share type, apply QoS specs\n3. Make ensure shares run\n4. check if this is applied","commit_id":"b8b0171378c622bd1839aece14b937aae56f9a02"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"f2c9d5373fbd73b178a6e660b08cb04f0d365448","unresolved":false,"context_lines":[{"line_number":4321,"context_line":"        provisioning_options \u003d self._get_provisioning_options_for_share("},{"line_number":4322,"context_line":"            share, vserver, vserver_client\u003dvserver_client)"},{"line_number":4323,"context_line":""},{"line_number":4324,"context_line":"        qos_policy_group_name \u003d self._modify_or_create_qos_for_existing_share("},{"line_number":4325,"context_line":"            share, extra_specs, vserver, vserver_client)"},{"line_number":4326,"context_line":"        if qos_policy_group_name:"},{"line_number":4327,"context_line":"            provisioning_options[\u0027qos_policy_group\u0027] \u003d qos_policy_group_name"}],"source_content_type":"text/x-python","patch_set":9,"id":"e2afea3a_18fb17ce","line":4324,"range":{"start_line":4324,"start_character":32,"end_line":4324,"end_character":78},"in_reply_to":"9a6ccd4f_284168ac","updated":"2026-02-11 13:30:31.000000000","message":"yes, this is one of the intention behind this change to pick the updated extra-specs from share-type and apply to share. For example, In past, we have tested changing share type extra-specs replication_type from DR to readable and then ran ensure to make sure export locations are created.","commit_id":"b8b0171378c622bd1839aece14b937aae56f9a02"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"03fd6df9310e395bb7faaf4cb5345ad55e907106","unresolved":true,"context_lines":[{"line_number":4299,"context_line":"                msg \u003d _(\u0027Failed to ensure share %(share)s: \u0027"},{"line_number":4300,"context_line":"                        \u0027%(exception)s. \u0027) % msg_args"},{"line_number":4301,"context_line":""},{"line_number":4302,"context_line":"                if (err_msg.startswith(\u0027Could not find\u0027) or"},{"line_number":4303,"context_line":"                        err_msg.endswith(\u0027not found.\u0027)):"},{"line_number":4304,"context_line":"                    LOG.debug(msg)"},{"line_number":4305,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"a79fbfb4_ef5c7d86","line":4302,"updated":"2026-03-11 04:37:40.000000000","message":"Can you perform a case insensitive comparison, or cast things to lowercase?","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9f181bb093e71bcd62eaff45718fb395111736e9","unresolved":false,"context_lines":[{"line_number":4299,"context_line":"                msg \u003d _(\u0027Failed to ensure share %(share)s: \u0027"},{"line_number":4300,"context_line":"                        \u0027%(exception)s. \u0027) % msg_args"},{"line_number":4301,"context_line":""},{"line_number":4302,"context_line":"                if (err_msg.startswith(\u0027Could not find\u0027) or"},{"line_number":4303,"context_line":"                        err_msg.endswith(\u0027not found.\u0027)):"},{"line_number":4304,"context_line":"                    LOG.debug(msg)"},{"line_number":4305,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"40cc0040_ebca71f6","line":4302,"in_reply_to":"a79fbfb4_ef5c7d86","updated":"2026-04-17 16:39:30.000000000","message":"Done","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"03fd6df9310e395bb7faaf4cb5345ad55e907106","unresolved":true,"context_lines":[{"line_number":4318,"context_line":"        aggregate_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":4319,"context_line":""},{"line_number":4320,"context_line":"        extra_specs \u003d share_types.get_extra_specs_from_share(share)"},{"line_number":4321,"context_line":"        provisioning_options \u003d self._get_provisioning_options_for_share("},{"line_number":4322,"context_line":"            share, vserver, vserver_client\u003dvserver_client)"},{"line_number":4323,"context_line":""},{"line_number":4324,"context_line":"        qos_policy_group_name \u003d self._modify_or_create_qos_for_existing_share("}],"source_content_type":"text/x-python","patch_set":10,"id":"fd30f26a_52bef916","line":4321,"updated":"2026-03-11 04:37:40.000000000","message":"Looks like you want `set_qos\u003dFalse` in this, otherwise you\u0027d set qos\ntwice, with this call and with `_modify_or_create_qos_for_existing_share()`\n\nThe QoS policy created in the first call becomes orphaned on the ONTAP backend\n(never assigned to a volume, never cleaned up).","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9f181bb093e71bcd62eaff45718fb395111736e9","unresolved":false,"context_lines":[{"line_number":4318,"context_line":"        aggregate_name \u003d share_utils.extract_host(share[\u0027host\u0027], level\u003d\u0027pool\u0027)"},{"line_number":4319,"context_line":""},{"line_number":4320,"context_line":"        extra_specs \u003d share_types.get_extra_specs_from_share(share)"},{"line_number":4321,"context_line":"        provisioning_options \u003d self._get_provisioning_options_for_share("},{"line_number":4322,"context_line":"            share, vserver, vserver_client\u003dvserver_client)"},{"line_number":4323,"context_line":""},{"line_number":4324,"context_line":"        qos_policy_group_name \u003d self._modify_or_create_qos_for_existing_share("}],"source_content_type":"text/x-python","patch_set":10,"id":"a5abaa8a_b4ff89e7","line":4321,"in_reply_to":"fd30f26a_52bef916","updated":"2026-04-17 16:39:30.000000000","message":"yes, thanks for pointing out. Downstream has so, I missed it here.","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"03fd6df9310e395bb7faaf4cb5345ad55e907106","unresolved":true,"context_lines":[{"line_number":4341,"context_line":""},{"line_number":4342,"context_line":"        cfg_snapdir \u003d self.configuration.netapp_reset_snapdir_visibility"},{"line_number":4343,"context_line":"        hide_snapdir \u003d self.HIDE_SNAPDIR_CFG_MAP[cfg_snapdir.lower()]"},{"line_number":4344,"context_line":"        if hide_snapdir:"},{"line_number":4345,"context_line":"            self._apply_snapdir_visibility("},{"line_number":4346,"context_line":"                hide_snapdir, share_name, vserver_client)"},{"line_number":4347,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bce77df3_c34da031","line":4344,"updated":"2026-03-11 04:37:40.000000000","message":"This seems like a regression. The HIDE_SNAPDIR_CFG_MAP maps \u0027visible\u0027 to False and \u0027hidden\u0027 to True with the \u0027default\u0027 being \"None\".\nSo if you\u0027d like to set the snapdirs to visible, you\u0027d set the config opt to \"visible\"... but, that\u0027d do nothing with your new code..\nI think this should be:\n```\n    if hide_snapdir is not None:\n```","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9f181bb093e71bcd62eaff45718fb395111736e9","unresolved":false,"context_lines":[{"line_number":4341,"context_line":""},{"line_number":4342,"context_line":"        cfg_snapdir \u003d self.configuration.netapp_reset_snapdir_visibility"},{"line_number":4343,"context_line":"        hide_snapdir \u003d self.HIDE_SNAPDIR_CFG_MAP[cfg_snapdir.lower()]"},{"line_number":4344,"context_line":"        if hide_snapdir:"},{"line_number":4345,"context_line":"            self._apply_snapdir_visibility("},{"line_number":4346,"context_line":"                hide_snapdir, share_name, vserver_client)"},{"line_number":4347,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"df7407ec_a17fee3b","line":4344,"in_reply_to":"bce77df3_c34da031","updated":"2026-04-17 16:39:30.000000000","message":"Done","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"}],"manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_lib_base.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"03fd6df9310e395bb7faaf4cb5345ad55e907106","unresolved":true,"context_lines":[{"line_number":7453,"context_line":"        result \u003d self.library.get_backend_info(self.context)"},{"line_number":7454,"context_line":"        self.assertEqual(expected, result)"},{"line_number":7455,"context_line":""},{"line_number":7456,"context_line":"    def test_ensure_shares(self):"},{"line_number":7457,"context_line":"        share1 \u003d fake_share.fake_share_instance(id\u003d\u0027s-1\u0027,"},{"line_number":7458,"context_line":"                                                share_server\u003d\u0027fake_server_1\u0027)"},{"line_number":7459,"context_line":"        share2 \u003d fake_share.fake_share_instance(id\u003d\u0027s-2\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"463c0b9f_763a290c","line":7456,"updated":"2026-03-11 04:37:40.000000000","message":"Test coverage reduction: The old test was parameterized with\n`@ddt.data(\u0027default\u0027, \u0027hidden\u0027)` to cover both snapdir configurations.\nThe new test removes all snapdir config testing.\n\nMissing coverage:\n- snapdir_cfg\u003d\u0027visible\u0027 case (now broken, see lib_base comment)\n- snapdir_cfg\u003d\u0027default\u0027 case (no-op path)\n- Exception handling paths in ensure_shares (NetAppException, NaApiError,\n  StorageResourceNotFound)\n- The \"not found\" vs other error log-level branching","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9f181bb093e71bcd62eaff45718fb395111736e9","unresolved":false,"context_lines":[{"line_number":7453,"context_line":"        result \u003d self.library.get_backend_info(self.context)"},{"line_number":7454,"context_line":"        self.assertEqual(expected, result)"},{"line_number":7455,"context_line":""},{"line_number":7456,"context_line":"    def test_ensure_shares(self):"},{"line_number":7457,"context_line":"        share1 \u003d fake_share.fake_share_instance(id\u003d\u0027s-1\u0027,"},{"line_number":7458,"context_line":"                                                share_server\u003d\u0027fake_server_1\u0027)"},{"line_number":7459,"context_line":"        share2 \u003d fake_share.fake_share_instance(id\u003d\u0027s-2\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"d11bc9a5_ec831284","line":7456,"in_reply_to":"463c0b9f_763a290c","updated":"2026-04-17 16:39:30.000000000","message":"snapdir coverage added in below function. Exception and not found check added as new test.","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"03fd6df9310e395bb7faaf4cb5345ad55e907106","unresolved":true,"context_lines":[{"line_number":7465,"context_line":"        vserver_client \u003d mock.Mock()"},{"line_number":7466,"context_line":"        self.mock_object("},{"line_number":7467,"context_line":"            self.library, \u0027update_share\u0027,"},{"line_number":7468,"context_line":"            mock.Mock(side_effect\u003d["},{"line_number":7469,"context_line":"                (fake.VSERVER1, vserver_client),"},{"line_number":7470,"context_line":"                (fake.VSERVER2, vserver_client),"},{"line_number":7471,"context_line":"                (fake.VSERVER2, vserver_client)"}],"source_content_type":"text/x-python","patch_set":10,"id":"8de6421a_94dff374","line":7468,"updated":"2026-03-11 04:37:40.000000000","message":"The mock for `update_share` returns `(fake.VSERVER1, vserver_client)` tuples,\nbut `update_share()` returns export locations (a list of dicts from\n`_create_export`). These should be realistic return values (e.g. list of\nexport location dicts) so the test can also validate the structure of the\n`updates` dict returned by `ensure_shares`.","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9f181bb093e71bcd62eaff45718fb395111736e9","unresolved":false,"context_lines":[{"line_number":7465,"context_line":"        vserver_client \u003d mock.Mock()"},{"line_number":7466,"context_line":"        self.mock_object("},{"line_number":7467,"context_line":"            self.library, \u0027update_share\u0027,"},{"line_number":7468,"context_line":"            mock.Mock(side_effect\u003d["},{"line_number":7469,"context_line":"                (fake.VSERVER1, vserver_client),"},{"line_number":7470,"context_line":"                (fake.VSERVER2, vserver_client),"},{"line_number":7471,"context_line":"                (fake.VSERVER2, vserver_client)"}],"source_content_type":"text/x-python","patch_set":10,"id":"0093aa7c_82833af0","line":7468,"in_reply_to":"8de6421a_94dff374","updated":"2026-04-17 16:39:30.000000000","message":"Done","commit_id":"c2661970780bee36d9337086cae50cf8e3d8e433"}],"releasenotes/notes/netapp-update-ensure_shares-to-handle-state-and-export-locations-ecbcce94128e93b1.yaml":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"896cebbc835885d3cb636d949df5642317e19040","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp ONTAP driver ensure_shares() function is updated to handle more"},{"line_number":5,"context_line":"    real-world scenarios like fixing volume export location in case create"},{"line_number":6,"context_line":"    volume failed to generate it. For more details, please check"},{"line_number":7,"context_line":"    `Launchpad bug #2114885 \u003chttps://bugs.launchpad.net/manila/+bug/2114885\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"157a310c_bacfd12b","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":62},"updated":"2025-07-15 19:34:27.000000000","message":"implementation details, we can leave it out of the commit message. I\u0027d suggest something in the lines of:\n```suggestion\n    The NetApp ONTAP driver restart and ensure operation was updated to\n```","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"d02cf0e7cbfff3351ad9816041f1c8cbbf590613","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp ONTAP driver ensure_shares() function is updated to handle more"},{"line_number":5,"context_line":"    real-world scenarios like fixing volume export location in case create"},{"line_number":6,"context_line":"    volume failed to generate it. For more details, please check"},{"line_number":7,"context_line":"    `Launchpad bug #2114885 \u003chttps://bugs.launchpad.net/manila/+bug/2114885\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7ddb9b84_da54d8bd","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":62},"in_reply_to":"157a310c_bacfd12b","updated":"2025-08-04 11:58:56.000000000","message":"Done","commit_id":"df2ca548d28c37fdadb2a78132120cdb1456aec7"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"72b8462ca5c7d8f6db436796c68a25920808349d","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp ONTAP driver restart and ensure operation was updated to handle"},{"line_number":5,"context_line":"    more real-world scenarios like fixing volume export location in case"},{"line_number":6,"context_line":"    create volume failed to generate it. The ensure operation updates efficiency"},{"line_number":7,"context_line":"    setting, qos, share comment and handles mounting of readable replicas."},{"line_number":8,"context_line":"    For more details, please check"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"6b46309e_af87bf8a","line":5,"range":{"start_line":5,"start_character":42,"end_line":5,"end_character":48},"updated":"2026-01-20 07:33:16.000000000","message":"share (because what is fixed is not the backing volume, but only the frontend representation in manila)","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"01597e5a80874e10882eda6f2e8396afa023c688","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp ONTAP driver restart and ensure operation was updated to handle"},{"line_number":5,"context_line":"    more real-world scenarios like fixing volume export location in case"},{"line_number":6,"context_line":"    create volume failed to generate it. The ensure operation updates efficiency"},{"line_number":7,"context_line":"    setting, qos, share comment and handles mounting of readable replicas."},{"line_number":8,"context_line":"    For more details, please check"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"8474d7bc_52d55ec2","line":5,"range":{"start_line":5,"start_character":42,"end_line":5,"end_character":48},"in_reply_to":"6b46309e_af87bf8a","updated":"2026-01-22 08:29:33.000000000","message":"Done","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"72b8462ca5c7d8f6db436796c68a25920808349d","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp ONTAP driver restart and ensure operation was updated to handle"},{"line_number":5,"context_line":"    more real-world scenarios like fixing volume export location in case"},{"line_number":6,"context_line":"    create volume failed to generate it. The ensure operation updates efficiency"},{"line_number":7,"context_line":"    setting, qos, share comment and handles mounting of readable replicas."},{"line_number":8,"context_line":"    For more details, please check"},{"line_number":9,"context_line":"    `Launchpad bug #2114885 \u003chttps://bugs.launchpad.net/manila/+bug/2114885\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"908ddf7e_2cccd5d7","line":6,"range":{"start_line":6,"start_character":11,"end_line":6,"end_character":17},"updated":"2026-01-20 07:33:16.000000000","message":"share","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"01597e5a80874e10882eda6f2e8396afa023c688","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp ONTAP driver restart and ensure operation was updated to handle"},{"line_number":5,"context_line":"    more real-world scenarios like fixing volume export location in case"},{"line_number":6,"context_line":"    create volume failed to generate it. The ensure operation updates efficiency"},{"line_number":7,"context_line":"    setting, qos, share comment and handles mounting of readable replicas."},{"line_number":8,"context_line":"    For more details, please check"},{"line_number":9,"context_line":"    `Launchpad bug #2114885 \u003chttps://bugs.launchpad.net/manila/+bug/2114885\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"c8037d3f_6d659359","line":6,"range":{"start_line":6,"start_character":11,"end_line":6,"end_character":17},"in_reply_to":"908ddf7e_2cccd5d7","updated":"2026-01-22 08:29:33.000000000","message":"Done","commit_id":"627983f42a431cbb1567d63ddc84e2edfb24d729"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"dfd89ac2a85884a724de0499475f8a028c432adf","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp ONTAP driver restart and ensure operation was updated to handle"},{"line_number":5,"context_line":"    more real-world scenarios like fixing share export location in case"},{"line_number":6,"context_line":"    create share failed to update it in Manila. The ensure operation also"},{"line_number":7,"context_line":"    perform other actions like apply efficiency setting, qos and handles"},{"line_number":8,"context_line":"    mounting of readable replicas. Those actions are meant to apply config"},{"line_number":9,"context_line":"    changes to existing volumes when share-type gets modified. For more"},{"line_number":10,"context_line":"    details, please check"},{"line_number":11,"context_line":"    `Launchpad bug #2114885 \u003chttps://bugs.launchpad.net/manila/+bug/2114885\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f2d38f8_5694a20f","line":11,"range":{"start_line":2,"start_character":0,"end_line":11,"end_character":78},"updated":"2026-02-13 07:19:44.000000000","message":"Could you follow the same format as below \nhttps://review.opendev.org/c/openstack/manila/+/962588/6/releasenotes/notes/bug-2126055-netapp-cifs-enable-SMB-signing-29a179f3529e0ba4.yaml","commit_id":"b8b0171378c622bd1839aece14b937aae56f9a02"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"70f026aeba31ddc353e325a0fdeb53aea42c5e4a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The NetApp ONTAP driver restart and ensure operation was updated to handle"},{"line_number":5,"context_line":"    more real-world scenarios like fixing share export location in case"},{"line_number":6,"context_line":"    create share failed to update it in Manila. The ensure operation also"},{"line_number":7,"context_line":"    perform other actions like apply efficiency setting, qos and handles"},{"line_number":8,"context_line":"    mounting of readable replicas. Those actions are meant to apply config"},{"line_number":9,"context_line":"    changes to existing volumes when share-type gets modified. For more"},{"line_number":10,"context_line":"    details, please check"},{"line_number":11,"context_line":"    `Launchpad bug #2114885 \u003chttps://bugs.launchpad.net/manila/+bug/2114885\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"af653669_4a83b683","line":11,"range":{"start_line":2,"start_character":0,"end_line":11,"end_character":78},"in_reply_to":"5f2d38f8_5694a20f","updated":"2026-02-13 08:30:15.000000000","message":"Done","commit_id":"b8b0171378c622bd1839aece14b937aae56f9a02"}]}
