)]}'
{"/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":"f0b4a8a5b162789845979de91c3c42bf45b20afe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"692f299a_66a85d17","updated":"2026-08-26 17:08:40.000000000","message":"Need to get a successful CI run. Also please check the comments below.","commit_id":"e1b7d328462a333ba5960cbe38c5175107f4a9e6"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"0b6ecf6ef8c2511c8122d3d03a9f6da8ea5c526c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c2839f34_0f20b851","updated":"2026-09-11 06:43:58.000000000","message":"As discussed please valdate/address these comments","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4ff1ad326805f6035f1867d47b4a542a097bdb3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"193eaecc_9ff55016","updated":"2026-09-10 10:03:17.000000000","message":"LGTM","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"8d784a0e1f59753615543a309f7ab0af4fbede0b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"19528881_877da649","updated":"2026-09-09 14:40:20.000000000","message":"One question. Please take a look at the comment.","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"769dce4bd074f2df5e04f8810df68832bebcf6d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"edb2cafd_0745a62e","updated":"2026-09-09 21:50:56.000000000","message":"The code looks good to me; have you tested this? Does the code behave as intended on a degraded cluster where some nodes are down?\n\nHave you tried tearing down pre-existing share servers; are all allocations released as expected?\n\nHave you tested \"manage/unmanage\" workflows with share servers after applying this change?","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"f8f662f9f51db344ab18a514cb24322f86cb9673","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"31c3fb49_865a70f1","in_reply_to":"edb2cafd_0745a62e","updated":"2026-09-10 07:15:29.000000000","message":"Yes, I tested this live on a 2-node ONTAP HA pair (REST client, DHSS\u003dTrue).\nDegraded cluster\n- Halted one node (partner taken over, health\u003dfalse).\n- Share server still created. Exactly 1 data LIF (1 LIF per HA pair), homed on the surviving node.\n- Baseline with both nodes up also succeeded (1 LIF per HA pair).\n\nTear down / allocations\n- Deleted the share server: SVM removed from ONTAP, LIF/IP released back to the standalone pool. No leftover network allocations for that server.\n\nManage / unmanage share servers\n- `share server abandon`: server gone from Manila; SVM and LIF stayed on ONTAP.\n- `share server adopt` with the vserver name: server became active again (driver renamed the SVM).\n- Subsequent share-server delete released SVM and IP as above.\nZAPI and REST create-with-node-down was also run earlier on a 2-node vsim (same short-term HA-pair LIF placement).","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"63171f91814c61c2fc3ed41573ff5c5b31a8a5e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1cf1f6e6_761e0667","updated":"2026-10-05 11:21:55.000000000","message":"run-netapp ci","commit_id":"c199c911306da053d3203581e476ca2f1fedcb49"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"96401002eb4188d229b748a45920990a249a5f03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"292a7b32_e172b48a","updated":"2026-10-07 05:52:26.000000000","message":"run-netapp ci","commit_id":"c199c911306da053d3203581e476ca2f1fedcb49"}],"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"f0b4a8a5b162789845979de91c3c42bf45b20afe","unresolved":true,"context_lines":[{"line_number":7637,"context_line":"        for node_info in nodes_info_list.get_children():"},{"line_number":7638,"context_line":"            name \u003d node_info.get_child_content(\u0027node\u0027)"},{"line_number":7639,"context_line":"            is_healthy \u003d node_info.get_child_content(\u0027is-node-healthy\u0027)"},{"line_number":7640,"context_line":"            state \u003d \u0027up\u0027 if is_healthy \u003d\u003d \u0027true\u0027 else \u0027down\u0027"},{"line_number":7641,"context_line":"            partner \u003d self.get_storage_failover_partner(name)"},{"line_number":7642,"context_line":"            nodes.append({"},{"line_number":7643,"context_line":"                \u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ca9c9b4f_b0e2d7fc","line":7640,"updated":"2026-08-26 17:08:40.000000000","message":"A \u0027degraded\u0027 lif can still function. May be a code comment stating that we are treating degraded lifs as down would be helpful.","commit_id":"e1b7d328462a333ba5960cbe38c5175107f4a9e6"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"3d17afa2d19093946e7310fe2ffb40e5cce428e4","unresolved":false,"context_lines":[{"line_number":7637,"context_line":"        for node_info in nodes_info_list.get_children():"},{"line_number":7638,"context_line":"            name \u003d node_info.get_child_content(\u0027node\u0027)"},{"line_number":7639,"context_line":"            is_healthy \u003d node_info.get_child_content(\u0027is-node-healthy\u0027)"},{"line_number":7640,"context_line":"            state \u003d \u0027up\u0027 if is_healthy \u003d\u003d \u0027true\u0027 else \u0027down\u0027"},{"line_number":7641,"context_line":"            partner \u003d self.get_storage_failover_partner(name)"},{"line_number":7642,"context_line":"            nodes.append({"},{"line_number":7643,"context_line":"                \u0027name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f0766d3_3a05d2b4","line":7640,"in_reply_to":"ca9c9b4f_b0e2d7fc","updated":"2026-08-27 07:10:37.000000000","message":"Done","commit_id":"e1b7d328462a333ba5960cbe38c5175107f4a9e6"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"f0b4a8a5b162789845979de91c3c42bf45b20afe","unresolved":true,"context_lines":[{"line_number":932,"context_line":"                  \u0027Ensure the cluster nodes are reachable.\u0027))"},{"line_number":933,"context_line":"        return ha_pairs"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"    def _get_up_node_in_pair(self, node, partner, node_states):"},{"line_number":936,"context_line":"        \"\"\"Return the healthy node for LIF placement in an HA pair."},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        Prefers the home node; falls back to the partner if the home"}],"source_content_type":"text/x-python","patch_set":6,"id":"8b751b9d_695ece6a","line":935,"updated":"2026-08-26 17:08:40.000000000","message":"Add @na_utils.trace for the func","commit_id":"e1b7d328462a333ba5960cbe38c5175107f4a9e6"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"3d17afa2d19093946e7310fe2ffb40e5cce428e4","unresolved":false,"context_lines":[{"line_number":932,"context_line":"                  \u0027Ensure the cluster nodes are reachable.\u0027))"},{"line_number":933,"context_line":"        return ha_pairs"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"    def _get_up_node_in_pair(self, node, partner, node_states):"},{"line_number":936,"context_line":"        \"\"\"Return the healthy node for LIF placement in an HA pair."},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        Prefers the home node; falls back to the partner if the home"}],"source_content_type":"text/x-python","patch_set":6,"id":"429605fd_d72c6f08","line":935,"in_reply_to":"8b751b9d_695ece6a","updated":"2026-08-27 07:10:37.000000000","message":"Done","commit_id":"e1b7d328462a333ba5960cbe38c5175107f4a9e6"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"8d784a0e1f59753615543a309f7ab0af4fbede0b","unresolved":true,"context_lines":[{"line_number":581,"context_line":"            raise exception.NetAppException("},{"line_number":582,"context_line":"                _(\u0027No healthy cluster nodes available for share server \u0027"},{"line_number":583,"context_line":"                  \u0027setup.\u0027))"},{"line_number":584,"context_line":"        node_name \u003d up_nodes[0]"},{"line_number":585,"context_line":"        port \u003d self._get_node_data_port(node_name)"},{"line_number":586,"context_line":"        # NOTE(sfernand): ONTAP driver currently supports multiple subnets"},{"line_number":587,"context_line":"        # only in a same network segment. A validation is performed in a"}],"source_content_type":"text/x-python","patch_set":9,"id":"1bf4d793_b9c4f09b","line":584,"updated":"2026-09-09 14:40:20.000000000","message":"Any reason for using the [0] node here? If there are multiple up nodes we still want to use first one that pops?","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"20cdabf179f20887187c6315398aee6fa187d96e","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            raise exception.NetAppException("},{"line_number":582,"context_line":"                _(\u0027No healthy cluster nodes available for share server \u0027"},{"line_number":583,"context_line":"                  \u0027setup.\u0027))"},{"line_number":584,"context_line":"        node_name \u003d up_nodes[0]"},{"line_number":585,"context_line":"        port \u003d self._get_node_data_port(node_name)"},{"line_number":586,"context_line":"        # NOTE(sfernand): ONTAP driver currently supports multiple subnets"},{"line_number":587,"context_line":"        # only in a same network segment. A validation is performed in a"}],"source_content_type":"text/x-python","patch_set":9,"id":"4b32e8de_558484e5","line":584,"in_reply_to":"1bf4d793_b9c4f09b","updated":"2026-09-10 06:33:03.000000000","message":"Yes. This is only for IPspace/VLAN lookup, so any up node works. We take the first one the API returns, same as list_cluster_nodes()[0] before, but we skip down nodes. LIF placement is still done later with _get_up_node_in_pair.","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4ff1ad326805f6035f1867d47b4a542a097bdb3a","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            raise exception.NetAppException("},{"line_number":582,"context_line":"                _(\u0027No healthy cluster nodes available for share server \u0027"},{"line_number":583,"context_line":"                  \u0027setup.\u0027))"},{"line_number":584,"context_line":"        node_name \u003d up_nodes[0]"},{"line_number":585,"context_line":"        port \u003d self._get_node_data_port(node_name)"},{"line_number":586,"context_line":"        # NOTE(sfernand): ONTAP driver currently supports multiple subnets"},{"line_number":587,"context_line":"        # only in a same network segment. A validation is performed in a"}],"source_content_type":"text/x-python","patch_set":9,"id":"482c4328_3aaaae17","line":584,"in_reply_to":"4b32e8de_558484e5","updated":"2026-09-10 10:03:17.000000000","message":"Acknowledged.","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"0b6ecf6ef8c2511c8122d3d03a9f6da8ea5c526c","unresolved":true,"context_lines":[{"line_number":885,"context_line":""},{"line_number":886,"context_line":"    @na_utils.trace"},{"line_number":887,"context_line":"    def _create_port_and_broadcast_domain(self, ipspace_name, network_info):"},{"line_number":888,"context_line":"        nodes \u003d self._client.list_cluster_nodes()"},{"line_number":889,"context_line":"        node_network_info \u003d zip(nodes, network_info[\u0027network_allocations\u0027])"},{"line_number":890,"context_line":""},{"line_number":891,"context_line":"        for node_name, network_allocation in node_network_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"61b424b6_355ebb8d","line":888,"updated":"2026-09-11 06:43:58.000000000","message":"@medhac@netapp.com Please test with Custom IPspace.\nThere is a chance of hitting down node in this case.","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"d10bcab419cd8c715454121efae87303cf9710ef","unresolved":false,"context_lines":[{"line_number":885,"context_line":""},{"line_number":886,"context_line":"    @na_utils.trace"},{"line_number":887,"context_line":"    def _create_port_and_broadcast_domain(self, ipspace_name, network_info):"},{"line_number":888,"context_line":"        nodes \u003d self._client.list_cluster_nodes()"},{"line_number":889,"context_line":"        node_network_info \u003d zip(nodes, network_info[\u0027network_allocations\u0027])"},{"line_number":890,"context_line":""},{"line_number":891,"context_line":"        for node_name, network_allocation in node_network_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"bde10650_d2335ca9","line":888,"in_reply_to":"61b424b6_355ebb8d","updated":"2026-09-23 05:38:36.000000000","message":"Done","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"0b6ecf6ef8c2511c8122d3d03a9f6da8ea5c526c","unresolved":true,"context_lines":[{"line_number":898,"context_line":"                node_name, port, vlan, mtu, ipspace_name)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    @na_utils.trace"},{"line_number":901,"context_line":"    def _get_ha_pairs_from_aggregates(self, ha_node_info\u003dNone):"},{"line_number":902,"context_line":"        \"\"\"Return unique HA pairs for aggregates used by this backend.\"\"\""},{"line_number":903,"context_line":"        if ha_node_info is None:"},{"line_number":904,"context_line":"            ha_node_info \u003d self._client.get_cluster_nodes_with_ha_info()"}],"source_content_type":"text/x-python","patch_set":9,"id":"4e731db7_d14afc43","line":901,"updated":"2026-09-11 06:43:58.000000000","message":"@medhac@netapp.com I think some changes are needed in FlexGroup case when netapp_flexgroup_pool_only flag is set.\nPlease verify the code and do the flexgroup based testing as well.","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"d10bcab419cd8c715454121efae87303cf9710ef","unresolved":false,"context_lines":[{"line_number":898,"context_line":"                node_name, port, vlan, mtu, ipspace_name)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    @na_utils.trace"},{"line_number":901,"context_line":"    def _get_ha_pairs_from_aggregates(self, ha_node_info\u003dNone):"},{"line_number":902,"context_line":"        \"\"\"Return unique HA pairs for aggregates used by this backend.\"\"\""},{"line_number":903,"context_line":"        if ha_node_info is None:"},{"line_number":904,"context_line":"            ha_node_info \u003d self._client.get_cluster_nodes_with_ha_info()"}],"source_content_type":"text/x-python","patch_set":9,"id":"37ba2b88_ec2b9261","line":901,"in_reply_to":"4e731db7_d14afc43","updated":"2026-09-23 05:38:36.000000000","message":"Done","commit_id":"ee74e7ba210fdf34bf77705d0a559351b1ff8e18"}],"manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_lib_multi_svm.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4c8162a4ef922f1c138b63ce2d99d3d85ee71b75","unresolved":false,"context_lines":[{"line_number":2989,"context_line":"                self.fake_src_share_server[\u0027network_allocations\u0027],"},{"line_number":2990,"context_line":"            \u0027neutron_subnet_id\u0027:"},{"line_number":2991,"context_line":"                self.fake_src_share_server[\u0027share_network_subnets\u0027][0].get("},{"line_number":2992,"context_line":"                    \u0027neutron_subnet_id\u0027)"},{"line_number":2993,"context_line":"        }"},{"line_number":2994,"context_line":""},{"line_number":2995,"context_line":"        self.mock_object("}],"source_content_type":"text/x-python","patch_set":8,"id":"184acaf0_6dd6cfed","line":2992,"updated":"2026-08-27 09:25:25.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"1a18c029db986d79718d41fae5b23846e627e3df"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"4c8162a4ef922f1c138b63ce2d99d3d85ee71b75","unresolved":false,"context_lines":[{"line_number":3042,"context_line":"            \u0027compatible\u0027: True,"},{"line_number":3043,"context_line":"            \u0027writable\u0027: True,"},{"line_number":3044,"context_line":"            \u0027nondisruptive\u0027: False,"},{"line_number":3045,"context_line":"            \u0027preserve_snapshots\u0027: True,"},{"line_number":3046,"context_line":"            \u0027migration_cancel\u0027: True,"},{"line_number":3047,"context_line":"            \u0027migration_get_progress\u0027: False,"},{"line_number":3048,"context_line":"            \u0027share_network_id\u0027: fake.SHARE_NETWORK[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"3ecb40ba_25495276","line":3045,"updated":"2026-08-27 09:25:25.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"1a18c029db986d79718d41fae5b23846e627e3df"}],"releasenotes/notes/bug-2112603-netapp-fix-share-server-creation-node-down-b8e4f2d7c1a39506.yaml":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"f0b4a8a5b162789845979de91c3c42bf45b20afe","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp Driver bug #2112603"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/manila/+bug/2112603\u003e_: In DHSS\u003dTrue mode,"},{"line_number":6,"context_line":"    share server creation failed when any cluster node was down, even if"},{"line_number":7,"context_line":"    the rest of the cluster was healthy and capable of serving data. This"},{"line_number":8,"context_line":"    is now fixed; a downed node no longer prevents share server creation"},{"line_number":9,"context_line":"    as long as its HA partner is available."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"d49ae1bd_871bc43d","line":6,"updated":"2026-08-26 17:08:40.000000000","message":"The patch changes LIF placement from one per cluster node to one per HA pair, even when all nodes are up.\nSince it is a functional change beyond the bug description, it should be called out in the release note.","commit_id":"e1b7d328462a333ba5960cbe38c5175107f4a9e6"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"3d17afa2d19093946e7310fe2ffb40e5cce428e4","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp Driver bug #2112603"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/manila/+bug/2112603\u003e_: In DHSS\u003dTrue mode,"},{"line_number":6,"context_line":"    share server creation failed when any cluster node was down, even if"},{"line_number":7,"context_line":"    the rest of the cluster was healthy and capable of serving data. This"},{"line_number":8,"context_line":"    is now fixed; a downed node no longer prevents share server creation"},{"line_number":9,"context_line":"    as long as its HA partner is available."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"112eeef0_a9584e5f","line":6,"in_reply_to":"d49ae1bd_871bc43d","updated":"2026-08-27 07:10:37.000000000","message":"Done","commit_id":"e1b7d328462a333ba5960cbe38c5175107f4a9e6"}]}
