)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"9af0f258d089fa124cb23169f4566f237cbd31da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d5018b7c_38303286","updated":"2026-06-04 04:18:59.000000000","message":"@anoop.shukla@netapp.com - updated comments. Pls check.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"591368495cc5f7b7cd5c8a36d750b1f01c0a6db6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ac6304d6_d6842ff2","updated":"2026-07-10 15:43:56.000000000","message":"Code looks good to me.\n\nI have one question based on the behavior in querying the value that I\u0027d like confirmation for, but otherwise I can +2 this.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"00eaab9e0084f5c6fd27a7660ab7d92750a33144","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b17ce583_46985f25","updated":"2026-06-02 10:26:26.000000000","message":"Hi, opening for internal review.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"fff80962faa73209b1e521ace902cebf2e3a62f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fbac13fb_8265ca81","updated":"2026-06-09 05:45:21.000000000","message":"LGTM","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"26b5235fc636a73fd4e10ba07bff6157f2b54b45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0561307d_c6485c51","updated":"2026-06-11 10:42:05.000000000","message":"Opening for core review.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"09e2b65585eb53688ca930057ed58d0965dab07b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9cf341fd_3499b71b","updated":"2026-06-02 13:07:31.000000000","message":"Please take a look at the comments.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"818ed84de7f525d9b81706a4f7fffaf4e0e5a2be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0182956b_a065b142","updated":"2026-06-02 10:27:00.000000000","message":"Run-NetApp CI","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/client/test_client_cmode_rest.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"591368495cc5f7b7cd5c8a36d750b1f01c0a6db6","unresolved":true,"context_lines":[{"line_number":4928,"context_line":""},{"line_number":4929,"context_line":"        self.assertIsNone(result)"},{"line_number":4930,"context_line":""},{"line_number":4931,"context_line":"    def test_get_svm_san_multipathing_active_active(self):"},{"line_number":4932,"context_line":"        self.mock_object("},{"line_number":4933,"context_line":"            self.client, \u0027send_request\u0027,"},{"line_number":4934,"context_line":"            return_value\u003d{\u0027records\u0027: ["}],"source_content_type":"text/x-python","patch_set":1,"id":"ad5977d5_2985bdd1","line":4931,"updated":"2026-07-10 15:43:56.000000000","message":"You do not have to change this for me if you do not want to, but consider using DDT for some of the tests like this that all have similar structure.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"591368495cc5f7b7cd5c8a36d750b1f01c0a6db6","unresolved":true,"context_lines":[{"line_number":2880,"context_line":"        if not hasattr(self, \u0027_rest_connection\u0027):"},{"line_number":2881,"context_line":"            zapi_cert_path \u003d getattr("},{"line_number":2882,"context_line":"                self.connection, \u0027_ssl_cert_path\u0027, None)"},{"line_number":2883,"context_line":"            # When the ZAPI connection has no explicit CA cert path it"},{"line_number":2884,"context_line":"            # silently disables SSL verification (unverified context)."},{"line_number":2885,"context_line":"            # Mirror that behaviour for the REST session by passing"},{"line_number":2886,"context_line":"            # False so that requests also skips certificate checks."}],"source_content_type":"text/x-python","patch_set":1,"id":"688f7972_ab017793","line":2883,"updated":"2026-07-10 15:43:56.000000000","message":"Not a topic for this specific patch (especially since it\u0027s just mirroring existing behavior), but I\u0027m guessing this will need to change (silent disabling of SSL verification) at some point given all the security talks we\u0027ve had in the meetings the last few weeks.\n\nSmall heads up.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"591368495cc5f7b7cd5c8a36d750b1f01c0a6db6","unresolved":true,"context_lines":[{"line_number":3319,"context_line":"            if records:"},{"line_number":3320,"context_line":"                return records[0].get(\u0027san_multipathing\u0027)"},{"line_number":3321,"context_line":"        except Exception:"},{"line_number":3322,"context_line":"            LOG.debug(\u0027Failed to query san_multipathing via REST. \u0027"},{"line_number":3323,"context_line":"                      \u0027Defaulting to None.\u0027)"},{"line_number":3324,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"da304c3d_3358499a","line":3322,"updated":"2026-07-10 15:43:56.000000000","message":"Based on this being a capability-type thing, I assume that if this fails with an exception it won\u0027t cause direct harm (and/or will be queried again later).\n\nCan you confirm this?  I ask because if the result is highly important, swallowing the exception may not be the best way to go about this.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"}],"cinder/volume/drivers/netapp/dataontap/utils/capabilities.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":"09e2b65585eb53688ca930057ed58d0965dab07b","unresolved":true,"context_lines":[{"line_number":95,"context_line":"        ssc \u003d {}"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # SVM-level property -- query once, apply to all pools"},{"line_number":98,"context_line":"        san_mp_info \u003d self._get_ssc_san_multipathing_info()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        for flexvol_name, flexvol_info in flexvol_map.items():"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8d505851_2108cd9d","line":98,"updated":"2026-06-02 13:07:31.000000000","message":"Shouldnt there be a check for ASAR2?","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"fff80962faa73209b1e521ace902cebf2e3a62f6","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        ssc \u003d {}"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # SVM-level property -- query once, apply to all pools"},{"line_number":98,"context_line":"        san_mp_info \u003d self._get_ssc_san_multipathing_info()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        for flexvol_name, flexvol_info in flexvol_map.items():"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"58f547e4_c7f2d913","line":98,"in_reply_to":"5242acd9_a0acd664","updated":"2026-06-09 05:45:21.000000000","message":"okay good.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"dfb0297a31a451a485ec2c480d0ea00bf8073364","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        ssc \u003d {}"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # SVM-level property -- query once, apply to all pools"},{"line_number":98,"context_line":"        san_mp_info \u003d self._get_ssc_san_multipathing_info()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        for flexvol_name, flexvol_info in flexvol_map.items():"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5242acd9_a0acd664","line":98,"in_reply_to":"5b5c9349_31b5c486","updated":"2026-06-04 04:19:28.000000000","message":"Acknowledged","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"9af0f258d089fa124cb23169f4566f237cbd31da","unresolved":true,"context_lines":[{"line_number":95,"context_line":"        ssc \u003d {}"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # SVM-level property -- query once, apply to all pools"},{"line_number":98,"context_line":"        san_mp_info \u003d self._get_ssc_san_multipathing_info()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        for flexvol_name, flexvol_info in flexvol_map.items():"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5b5c9349_31b5c486","line":98,"in_reply_to":"8d505851_2108cd9d","updated":"2026-06-04 04:18:59.000000000","message":"Its not required as this function is not called for ASAr2,\n\ndef _update_ssc(self):\n        \"\"\"Refresh the storage service catalog with the latest set of pools.\"\"\"\n        if self.configuration.netapp_disaggregated_platform:\n            self.ssc_library.update_ssc_asa(self._get_cluster_to_pool_map())\n        else:\n            self.ssc_library.update_ssc(self._get_flexvol_to_pool_map())","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"09e2b65585eb53688ca930057ed58d0965dab07b","unresolved":true,"context_lines":[{"line_number":121,"context_line":"            ssc_volume.update(self._get_ssc_qos_min_info(node_name))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            # SVM-level SAN multipathing capability"},{"line_number":124,"context_line":"            ssc_volume.update(san_mp_info)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            if self.protocol.casefold() !\u003d \u0027nfs\u0027:"},{"line_number":127,"context_line":"                ssc_volume.update"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8e95a1_960f7693","line":124,"updated":"2026-06-02 13:07:31.000000000","message":"Have we tested with ASAr2 platform? Does this work on ASAr2 with the same API call?","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"dfb0297a31a451a485ec2c480d0ea00bf8073364","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            ssc_volume.update(self._get_ssc_qos_min_info(node_name))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            # SVM-level SAN multipathing capability"},{"line_number":124,"context_line":"            ssc_volume.update(san_mp_info)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            if self.protocol.casefold() !\u003d \u0027nfs\u0027:"},{"line_number":127,"context_line":"                ssc_volume.update"}],"source_content_type":"text/x-python","patch_set":1,"id":"1165ea5c_0af28d48","line":124,"in_reply_to":"6d595fec_d206f045","updated":"2026-06-04 04:19:28.000000000","message":"Acknowledged","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"9af0f258d089fa124cb23169f4566f237cbd31da","unresolved":true,"context_lines":[{"line_number":121,"context_line":"            ssc_volume.update(self._get_ssc_qos_min_info(node_name))"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"            # SVM-level SAN multipathing capability"},{"line_number":124,"context_line":"            ssc_volume.update(san_mp_info)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"            if self.protocol.casefold() !\u003d \u0027nfs\u0027:"},{"line_number":127,"context_line":"                ssc_volume.update"}],"source_content_type":"text/x-python","patch_set":1,"id":"6d595fec_d206f045","line":124,"in_reply_to":"7a8e95a1_960f7693","updated":"2026-06-04 04:18:59.000000000","message":"Same comment as above.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"09e2b65585eb53688ca930057ed58d0965dab07b","unresolved":true,"context_lines":[{"line_number":342,"context_line":"            return {}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        ontap_version_str \u003d \".\".join(map(str, ontap_version))"},{"line_number":345,"context_line":"        if (version.parse(ontap_version_str) \u003c"},{"line_number":346,"context_line":"                version.parse(MINIMUM_SAN_AA_VERSION)):"},{"line_number":347,"context_line":"            return {}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        san_multipathing \u003d self.zapi_client.get_svm_san_multipathing()"}],"source_content_type":"text/x-python","patch_set":1,"id":"aac75ba4_232f3e80","line":346,"range":{"start_line":345,"start_character":8,"end_line":346,"end_character":55},"updated":"2026-06-02 13:07:31.000000000","message":"This check should be done in the caller method? The method call is unnecessary for older versions of ONTAP.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"fff80962faa73209b1e521ace902cebf2e3a62f6","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            return {}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        ontap_version_str \u003d \".\".join(map(str, ontap_version))"},{"line_number":345,"context_line":"        if (version.parse(ontap_version_str) \u003c"},{"line_number":346,"context_line":"                version.parse(MINIMUM_SAN_AA_VERSION)):"},{"line_number":347,"context_line":"            return {}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        san_multipathing \u003d self.zapi_client.get_svm_san_multipathing()"}],"source_content_type":"text/x-python","patch_set":1,"id":"6f89c463_431e732a","line":346,"range":{"start_line":345,"start_character":8,"end_line":346,"end_character":55},"in_reply_to":"6a180440_d2a0a4e1","updated":"2026-06-09 05:45:21.000000000","message":"Okay..since we are using cached\u003dtrue, we can keep it here.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"9af0f258d089fa124cb23169f4566f237cbd31da","unresolved":true,"context_lines":[{"line_number":342,"context_line":"            return {}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        ontap_version_str \u003d \".\".join(map(str, ontap_version))"},{"line_number":345,"context_line":"        if (version.parse(ontap_version_str) \u003c"},{"line_number":346,"context_line":"                version.parse(MINIMUM_SAN_AA_VERSION)):"},{"line_number":347,"context_line":"            return {}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        san_multipathing \u003d self.zapi_client.get_svm_san_multipathing()"}],"source_content_type":"text/x-python","patch_set":1,"id":"f0864b29_7d10d9a4","line":346,"range":{"start_line":345,"start_character":8,"end_line":346,"end_character":55},"in_reply_to":"aac75ba4_232f3e80","updated":"2026-06-04 04:18:59.000000000","message":"The check here keeps the code clean, with only the function call bieng done in update_ssc and the internal version validation done in the function itself.","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"dfb0297a31a451a485ec2c480d0ea00bf8073364","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            return {}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        ontap_version_str \u003d \".\".join(map(str, ontap_version))"},{"line_number":345,"context_line":"        if (version.parse(ontap_version_str) \u003c"},{"line_number":346,"context_line":"                version.parse(MINIMUM_SAN_AA_VERSION)):"},{"line_number":347,"context_line":"            return {}"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        san_multipathing \u003d self.zapi_client.get_svm_san_multipathing()"}],"source_content_type":"text/x-python","patch_set":1,"id":"6a180440_d2a0a4e1","line":346,"range":{"start_line":345,"start_character":8,"end_line":346,"end_character":55},"in_reply_to":"f0864b29_7d10d9a4","updated":"2026-06-04 04:19:28.000000000","message":"Acknowledged","commit_id":"5f632a06f51cc678011163a281b3ae671df8276a"}]}
