)]}'
{"/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":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"71be6278_223bede3","updated":"2025-08-14 08:30:23.000000000","message":"Please address the comments.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d42744b7_b27bdaba","updated":"2025-08-14 15:40:42.000000000","message":"Thank you! Anoop for detailed review. Addressed suggested review comments. Please review again.","commit_id":"36cdf73fcb4ccfdd0524c7c31172f85647f3053d"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"8c94495a596f8356f358f0a5790a087be1fc5b45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f0209e2a_2751fe84","updated":"2025-08-18 07:20:29.000000000","message":"recehck","commit_id":"4f6f97c670de0c52870a3f7c533eefae26ec2f14"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"6690038063131978ef21156bf4ad1e0a029e3b8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"80d8000b_835d4c53","updated":"2025-08-18 08:03:42.000000000","message":"zuul is getting failed also third party ci result is not available.","commit_id":"4f6f97c670de0c52870a3f7c533eefae26ec2f14"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"c8fbf30091a0123e644a437220258722448bc049","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b6e7881b_64557608","updated":"2025-08-18 11:55:45.000000000","message":"recheck","commit_id":"caba035be785e979c4fb519ba8e388b5d447f322"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2ab5bd70_a187b22d","updated":"2025-08-18 16:56:44.000000000","message":"I think the code is generally in good shape, and just needs some minor cleanup as noted.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ae4d441503c33de30c46627a3a0417f6de2c9b49","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"78ebc2a4_7d11ab33","updated":"2025-08-18 16:00:14.000000000","message":"few comments, mostly related to releasenotes.\nThis patch is adding a framework to implement ASA r2 functionality which uses REST based architecture for to interact with storage array running SAN workloads so overall looks good as an improvement here.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"c7e4c380282a58a57eb10aee215e397168328af9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c1432723_b8268f7c","updated":"2025-08-18 15:06:14.000000000","message":"recheck","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"70f47269_1c343260","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! Alan and Rajat, Really appreciate your time in reviewing big PR. Addressed your review comments. Also found disc_type is missing in pool. added this information at part of this update. Please review again.","commit_id":"f30747a729ae9ae92b6df534758bc91fde2e2a85"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"bc988df64b556b1a4fd298270771d3f794dce6d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4b79e870_c36f8ec6","updated":"2025-08-23 04:54:25.000000000","message":"Hi Alan, uploder is updated due to dependent patch. can you please approve again.","commit_id":"864c07965a5e229d0519ca0883af6cdfbf61840d"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e68637d0bddf55491e45e2817179ca1e51970fc2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"ad1f2017_ec7be403","updated":"2025-08-21 14:02:12.000000000","message":"LGTM ..!","commit_id":"864c07965a5e229d0519ca0883af6cdfbf61840d"},{"author":{"_account_id":38290},"change_message_id":"59727bd11659d0b06723d85dfdb48518118409b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"c3edc9a1_2b20621f","updated":"2025-08-21 15:13:24.000000000","message":"Run-NetApp CI","commit_id":"864c07965a5e229d0519ca0883af6cdfbf61840d"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"b4c35ca1e1eec0f505797d42024cece3dae60adf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"bebdbf09_258dd53a","updated":"2025-08-21 18:47:40.000000000","message":"recheck","commit_id":"864c07965a5e229d0519ca0883af6cdfbf61840d"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"dbd091f984fb253f73fe07114e624cf655fef7b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"c37a40fc_901be40b","updated":"2025-08-21 04:12:37.000000000","message":"recheck","commit_id":"864c07965a5e229d0519ca0883af6cdfbf61840d"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"062a90841439a3cb5a2e06989f5b852f2c83a90f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"3b63a166_28c7f5a9","updated":"2025-08-21 12:21:40.000000000","message":"recheck-nfs-related-failure","commit_id":"864c07965a5e229d0519ca0883af6cdfbf61840d"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"86695c010ab06eeccde9255025b8b7f95fa45c85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"168f83d6_7165c11a","updated":"2025-08-25 04:47:18.000000000","message":"Hi @abishop@redhat.com, Can you please review this patch again. Third party changes from different author added into this patch. Reverted back all changes. There are not changes between last time you have approved and now(i.e. between patchset13 and patchset15).","commit_id":"c0db267a665967fd58a3cc8d5c3f99315acdb8ea"},{"author":{"_account_id":38290},"change_message_id":"0d36aeaf940ef52e0886c1aa0683a34049bd5953","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"5ea8a101_522e7a1c","updated":"2025-08-25 04:45:32.000000000","message":"Run-NetApp CI","commit_id":"c0db267a665967fd58a3cc8d5c3f99315acdb8ea"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"bc616c84a8030594f578739d59ec86f39f9e9cad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"8c590dfc_8d58c05a","updated":"2025-08-25 07:56:19.000000000","message":"Run-NetApp CI","commit_id":"c965f25e141a7b6a389b189e55f08c95764240a1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"77d0479d8b3ff3639f9e0dc0f82cde18853616d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"c842e3fb_149ea14e","updated":"2025-08-27 12:39:36.000000000","message":"@jayaanand.borra@netapp.com Thanks for the explanation.  The green third-party CI shows that this scaffolding patch doesn\u0027t cause any regressions, so I\u0027m OK with merging this base patch.","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"280eaef5a74e2f04f0b62b611bbe5e7a036b5307","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"78de993c_9c8d2bf3","updated":"2025-08-26 18:57:56.000000000","message":"A few comments inline; mostly about confusing/misleading comments but nothing that can\u0027t be fixed in a followup patch.","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"69903077ea1966a4c2b3cf577f0c2ef20a5d696f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"2591620a_7b50a53d","updated":"2025-08-27 09:13:06.000000000","message":"Hi @rosmaita.fossdev@gmail.com, this patch is not dependent on follow up patch. follow up patch dependent on this patch. merging this change won\u0027t case any issue to next patch. also, this patch did ground work for other pach to merge","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4e97fd68683ee5bca1266361b3835707bf436f45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"200f0069_41a62954","updated":"2025-08-26 19:04:56.000000000","message":"Just saw Alan\u0027s comment on the child patch https://review.opendev.org/c/openstack/cinder/+/956064/14 that they need to be merged together, so un-approving this one.","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"90ff52c19541ec2007b34d4c31414dd03303ae66","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"dedc4aca_c5aba469","updated":"2025-08-26 13:22:14.000000000","message":"My comments are addressed, the NetApp iSCSI and NVMe-TCP CIs are passing (FC is failing but shouldn\u0027t be related to this patch). LGTM.","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fdb400a601445199d8387edbb1e124532152f6a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"690a5b37_ec7eb2eb","updated":"2025-08-26 18:59:23.000000000","message":"Third party CI is passing.","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"6692d2d79fdacc32568d3c1980c9850a6bd979e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"4a5bc98d_db243674","updated":"2025-08-27 18:18:03.000000000","message":"recheck","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"ac73a253cc47ea22e570191776d787b269f87339","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"64fb7f4d_71ff05be","updated":"2025-08-28 11:51:33.000000000","message":"recheck","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"4e3edb59876bbea3587e70f6e517584d46864813","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"693aee29_a4941ed2","updated":"2025-08-27 09:07:45.000000000","message":"recheck","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"7318af6b5e8879138380fd25e828be0c9d5cffd4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"81e4a246_cc55761f","updated":"2025-08-28 11:14:14.000000000","message":"recheck","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"007373bd0f4ede101af0887631e2d6f29ff377cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"acb92f6e_341fde9a","updated":"2025-08-28 09:34:57.000000000","message":"recheck","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"30ee18309febe4e82644af75526c4d831717df0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"fb7000a2_9c9162cf","updated":"2025-08-28 04:19:07.000000000","message":"recheck","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/client/test_client_cmode_rest_asar2.py":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":true,"context_lines":[{"line_number":134,"context_line":"        result \u003d self.client.get_ontap_version()"},{"line_number":135,"context_line":"        self.assertEqual(expected_version, result)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def test_get_ontap_version_cached(self):"},{"line_number":138,"context_line":"        \"\"\"Test get_ontap_version method with cached parameter.\"\"\""},{"line_number":139,"context_line":"        expected_version \u003d (9, 16, 1)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"8eebb7ea_52492ca0","line":137,"updated":"2025-08-18 16:56:44.000000000","message":"This code is fine, but you don\u0027t need separate \"_cached\" functions (here, and at L151) if you used DDT for the \u0027cached\u0027 parameter value, similar to what you do at L197.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        result \u003d self.client.get_ontap_version()"},{"line_number":135,"context_line":"        self.assertEqual(expected_version, result)"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def test_get_ontap_version_cached(self):"},{"line_number":138,"context_line":"        \"\"\"Test get_ontap_version method with cached parameter.\"\"\""},{"line_number":139,"context_line":"        expected_version \u003d (9, 16, 1)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"d4e79f07_e8a4fdaf","line":137,"in_reply_to":"8eebb7ea_52492ca0","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! test_get_ontap_version_cached is removed from rest_asar2 and added ddt to test_get_ontapi_version","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_block_cmode.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ae4d441503c33de30c46627a3a0417f6de2c9b49","unresolved":true,"context_lines":[{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    def test_update_ssc(self):"},{"line_number":662,"context_line":"        \"\"\"Test _update_ssc with traditional platform (flexvol).\"\"\""},{"line_number":663,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":664,"context_line":"        mock_get_pool_map \u003d self.mock_object("},{"line_number":665,"context_line":"            self.library, \u0027_get_flexvol_to_pool_map\u0027,"},{"line_number":666,"context_line":"            return_value\u003dfake.FAKE_CMODE_VOLUMES)"}],"source_content_type":"text/x-python","patch_set":11,"id":"6dc02cab_0d536f78","line":663,"range":{"start_line":663,"start_character":0,"end_line":663,"end_character":72},"updated":"2025-08-18 16:00:14.000000000","message":"this is disabled by default right? why do we need to set this here specifically?","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":660,"context_line":""},{"line_number":661,"context_line":"    def test_update_ssc(self):"},{"line_number":662,"context_line":"        \"\"\"Test _update_ssc with traditional platform (flexvol).\"\"\""},{"line_number":663,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":664,"context_line":"        mock_get_pool_map \u003d self.mock_object("},{"line_number":665,"context_line":"            self.library, \u0027_get_flexvol_to_pool_map\u0027,"},{"line_number":666,"context_line":"            return_value\u003dfake.FAKE_CMODE_VOLUMES)"}],"source_content_type":"text/x-python","patch_set":11,"id":"dc04eda0_d7e58e22","line":663,"range":{"start_line":663,"start_character":0,"end_line":663,"end_character":72},"in_reply_to":"6dc02cab_0d536f78","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! netapp_disaggregated_platform is False by default. Added this in UTs to be explicit. Removed now as it is redundant.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_nvme_library.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"280eaef5a74e2f04f0b62b611bbe5e7a036b5307","unresolved":true,"context_lines":[{"line_number":146,"context_line":"            self.library.check_for_setup_error)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def test_check_for_setup_error_disaggregated(self):"},{"line_number":149,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d True"},{"line_number":150,"context_line":"        self.mock_object(self.library, \u0027_get_cluster_to_pool_map\u0027,"},{"line_number":151,"context_line":"                         return_value\u003dfake.POOL_NAME)"},{"line_number":152,"context_line":"        self.mock_object(self.library, \u0027_add_looping_tasks\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"7c783757_7524b7ea","line":149,"range":{"start_line":149,"start_character":21,"end_line":149,"end_character":34},"updated":"2025-08-26 18:57:56.000000000","message":"What kind of thing is this? If it\u0027s a \"real\" oslo.config object, that thing is global, so you may get weird interactions between tests.  The base test class has an override_config() method you can use that will override the config value for this test and then set it back during test cleanup.  I don\u0027t see it being used anywhere in the netapp tests, so maybe you\u0027re OK.","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"}],"cinder/volume/drivers/netapp/dataontap/block_base.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ae4d441503c33de30c46627a3a0417f6de2c9b49","unresolved":true,"context_lines":[{"line_number":189,"context_line":"        \"\"\""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        # Add the task that deletes snapshots marked for deletion."},{"line_number":192,"context_line":"        # ADD snapshot cleanup task to ASA r2 once snapshot feature is"},{"line_number":193,"context_line":"        # implemented in the driver."},{"line_number":194,"context_line":"        if not self.configuration.netapp_disaggregated_platform:"},{"line_number":195,"context_line":"            self.loopingcalls.add_task("},{"line_number":196,"context_line":"                self._delete_snapshots_marked_for_deletion,"},{"line_number":197,"context_line":"                loopingcalls.ONE_MINUTE,"}],"source_content_type":"text/x-python","patch_set":11,"id":"557b512a_45943998","line":194,"range":{"start_line":192,"start_character":8,"end_line":194,"end_character":64},"updated":"2025-08-18 16:00:14.000000000","message":"what happens if we mark some snapshots for deletion in old workflow and upgrade/enable this new configuration before those snapshots are removed? they will stay on the backend until we have this functionality available right?","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":true,"context_lines":[{"line_number":189,"context_line":"        \"\"\""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        # Add the task that deletes snapshots marked for deletion."},{"line_number":192,"context_line":"        # ADD snapshot cleanup task to ASA r2 once snapshot feature is"},{"line_number":193,"context_line":"        # implemented in the driver."},{"line_number":194,"context_line":"        if not self.configuration.netapp_disaggregated_platform:"},{"line_number":195,"context_line":"            self.loopingcalls.add_task("},{"line_number":196,"context_line":"                self._delete_snapshots_marked_for_deletion,"},{"line_number":197,"context_line":"                loopingcalls.ONE_MINUTE,"}],"source_content_type":"text/x-python","patch_set":11,"id":"716be9e6_daed71be","line":194,"range":{"start_line":192,"start_character":8,"end_line":194,"end_character":64},"in_reply_to":"557b512a_45943998","updated":"2025-08-18 16:56:44.000000000","message":"I also find the comment confusing. Are you saying the snapshots shouldn\u0027t be marked for deletion because the ASA r2 \"netapp_disaggregated_platform\" driver doesn\u0027t support deleting snapshots marked for deletion? As Rajat noted, this seems to leave these snapshots in an awkward state, especially if they consume space and can potentially persist for a very long time (like, next cycle when the driver is updated?).","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        \"\"\""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        # Add the task that deletes snapshots marked for deletion."},{"line_number":192,"context_line":"        # ADD snapshot cleanup task to ASA r2 once snapshot feature is"},{"line_number":193,"context_line":"        # implemented in the driver."},{"line_number":194,"context_line":"        if not self.configuration.netapp_disaggregated_platform:"},{"line_number":195,"context_line":"            self.loopingcalls.add_task("},{"line_number":196,"context_line":"                self._delete_snapshots_marked_for_deletion,"},{"line_number":197,"context_line":"                loopingcalls.ONE_MINUTE,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bca7c577_78748718","line":194,"range":{"start_line":192,"start_character":8,"end_line":194,"end_character":64},"in_reply_to":"716be9e6_daed71be","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! ASA r2 snapshots API different from current ONTAP platforms need to override in ASAr2 specific implementation. We are planning to do it in G cycle. Also, Snapshot related all workflows wont\u0027 work for ASA r2. Comment indicate this deviation and planned work.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"}],"cinder/volume/drivers/netapp/dataontap/block_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":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":true,"context_lines":[{"line_number":425,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":426,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"            if (self.using_cluster_credentials and"},{"line_number":429,"context_line":"                    not self.configuration.netapp_disaggregated_platform):"},{"line_number":430,"context_line":"                dedupe_used \u003d ("},{"line_number":431,"context_line":"                    self.zapi_client"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ca4622f_51e9d848","line":428,"updated":"2025-08-14 08:30:23.000000000","message":"We should be able to provide the used percent for cluster space using existing space attributes.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":426,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"            if (self.using_cluster_credentials and"},{"line_number":429,"context_line":"                    not self.configuration.netapp_disaggregated_platform):"},{"line_number":430,"context_line":"                dedupe_used \u003d ("},{"line_number":431,"context_line":"                    self.zapi_client"}],"source_content_type":"text/x-python","patch_set":7,"id":"e97d72f1_7a5cade8","line":428,"in_reply_to":"9ca4622f_51e9d848","updated":"2025-08-14 15:40:42.000000000","message":"i am not finding direct attribute for percentage cluster space. i will update once percentage value is available.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":true,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        return pools"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def _get_cluster_to_pool_map(self):"},{"line_number":496,"context_line":"        \"\"\"Get the cluster name for ASA r2 systems."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        For ASA r2 systems, instead of using flexvols, we use the cluster name"}],"source_content_type":"text/x-python","patch_set":7,"id":"a68914a2_7f071aff","line":495,"updated":"2025-08-14 08:30:23.000000000","message":"We should check if is_disaggregated flag on ONTAP Cluster API is true before we populate the pool and fail with appropriate misconfiguration message for customer to remove the flag if its added by mistake on a Cluster that is not ASAr2. Apart from that, ONTAP ASAr2 is only available from 9.16.0 onwards. We need to add the version check as well.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        return pools"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    def _get_cluster_to_pool_map(self):"},{"line_number":496,"context_line":"        \"\"\"Get the cluster name for ASA r2 systems."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        For ASA r2 systems, instead of using flexvols, we use the cluster name"}],"source_content_type":"text/x-python","patch_set":7,"id":"8bf2dbf9_8decab80","line":495,"in_reply_to":"a68914a2_7f071aff","updated":"2025-08-14 15:40:42.000000000","message":"yes, added code to check is_disaggregated to return misconfiguration exception. version 9.16.0 reflected is_disaggregated flag.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":true,"context_lines":[{"line_number":141,"context_line":"                    \u0027netapp_pool_name_search_pattern is set correctly.\u0027)"},{"line_number":142,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":143,"context_line":"        elif self.configuration.netapp_disaggregated_platform:"},{"line_number":144,"context_line":"            if not self._get_cluster_to_pool_map():"},{"line_number":145,"context_line":"                msg \u003d _(\u0027No pools are available for provisioning volumes. \u0027"},{"line_number":146,"context_line":"                        \u0027Ensure ASA r2 configuration option is set correctly.\u0027)"},{"line_number":147,"context_line":"                raise na_utils.NetAppDriverException(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"c57b96c7_9eeb3a63","line":144,"updated":"2025-08-18 16:56:44.000000000","message":"nit: this could be handled using \"and not\" just like you did on L138 rather than adding another nested conditional.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                    \u0027netapp_pool_name_search_pattern is set correctly.\u0027)"},{"line_number":142,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":143,"context_line":"        elif self.configuration.netapp_disaggregated_platform:"},{"line_number":144,"context_line":"            if not self._get_cluster_to_pool_map():"},{"line_number":145,"context_line":"                msg \u003d _(\u0027No pools are available for provisioning volumes. \u0027"},{"line_number":146,"context_line":"                        \u0027Ensure ASA r2 configuration option is set correctly.\u0027)"},{"line_number":147,"context_line":"                raise na_utils.NetAppDriverException(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba887e33_3b35b46e","line":144,"in_reply_to":"c57b96c7_9eeb3a63","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! update logic to combine both elif and if not logic to one statement.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest_asar2.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":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":true,"context_lines":[{"line_number":101,"context_line":"    def get_performance_counter_info(self, object_name, counter_name):"},{"line_number":102,"context_line":"        \"\"\"ASA r2 doesn\u0027t support performance counter APIs.\"\"\""},{"line_number":103,"context_line":"        from cinder import exception"},{"line_number":104,"context_line":"        msg \u003d \u0027Performance counter APIs are not supported on ASA r2.\u0027"},{"line_number":105,"context_line":"        raise exception.NotFound(msg)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def get_performance_instance_uuids(self, object_name, node_name):"}],"source_content_type":"text/x-python","patch_set":7,"id":"f294470c_d5b61cad","line":104,"updated":"2025-08-14 08:30:23.000000000","message":"\"Currently performance counter APIs are not supported on ASA r2.\" Since ASAr2 does support performance counters (we have to integrate it) it may mislead.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def get_performance_counter_info(self, object_name, counter_name):"},{"line_number":102,"context_line":"        \"\"\"ASA r2 doesn\u0027t support performance counter APIs.\"\"\""},{"line_number":103,"context_line":"        from cinder import exception"},{"line_number":104,"context_line":"        msg \u003d \u0027Performance counter APIs are not supported on ASA r2.\u0027"},{"line_number":105,"context_line":"        raise exception.NotFound(msg)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def get_performance_instance_uuids(self, object_name, node_name):"}],"source_content_type":"text/x-python","patch_set":7,"id":"10b2000f_9e41f733","line":104,"in_reply_to":"f294470c_d5b61cad","updated":"2025-08-14 15:40:42.000000000","message":"thank you! updated comments to reflect planned performance counters in coming resales.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":true,"context_lines":[{"line_number":144,"context_line":"        }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        try:"},{"line_number":147,"context_line":"            response \u003d self.send_request(\u0027/storage/cluster\u0027,"},{"line_number":148,"context_line":"                                         \u0027get\u0027, query\u003dquery,"},{"line_number":149,"context_line":"                                         enable_tunneling\u003dFalse)"},{"line_number":150,"context_line":"            if not response:"}],"source_content_type":"text/x-python","patch_set":7,"id":"278b0070_42319d1b","line":147,"updated":"2025-08-14 08:30:23.000000000","message":"we should add ?fields\u003d\u003cfieldnames with comma separated value\u003e to all the GET APIs we trigger so that ONTAP calls can be performance optimized.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        try:"},{"line_number":147,"context_line":"            response \u003d self.send_request(\u0027/storage/cluster\u0027,"},{"line_number":148,"context_line":"                                         \u0027get\u0027, query\u003dquery,"},{"line_number":149,"context_line":"                                         enable_tunneling\u003dFalse)"},{"line_number":150,"context_line":"            if not response:"}],"source_content_type":"text/x-python","patch_set":7,"id":"b7d948bb_4758eef6","line":147,"in_reply_to":"278b0070_42319d1b","updated":"2025-08-14 15:40:42.000000000","message":"yes, fields are passed comma separated values are fetched all values at once.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":true,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    # Override methods below only when ASA r2 specific behavior is needed"},{"line_number":83,"context_line":"    # Example of overriding a method for ASA r2 specific behavior:"},{"line_number":84,"context_line":"    def get_ontap_version(self, cached\u003dFalse):"},{"line_number":85,"context_line":"        \"\"\"Get ONTAP version with ASA r2 specific handling."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        This method demonstrates how to override parent methods"}],"source_content_type":"text/x-python","patch_set":11,"id":"2d81097e_c1455104","line":84,"updated":"2025-08-18 16:56:44.000000000","message":"This override doesn\u0027t seem to add much value (just a couple of debug messages), and there are other examples of ASA r2 overrides below. Are you sure you need this function?","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    # Override methods below only when ASA r2 specific behavior is needed"},{"line_number":83,"context_line":"    # Example of overriding a method for ASA r2 specific behavior:"},{"line_number":84,"context_line":"    def get_ontap_version(self, cached\u003dFalse):"},{"line_number":85,"context_line":"        \"\"\"Get ONTAP version with ASA r2 specific handling."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        This method demonstrates how to override parent methods"}],"source_content_type":"text/x-python","patch_set":11,"id":"7266e614_ec1353ca","line":84,"in_reply_to":"2d81097e_c1455104","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! True. This function added to demo for others realize how implementation is done. Removed now. also Tests related this function is removed. Other functions are specific to ASA r2.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        \"\"\""},{"line_number":106,"context_line":"        from cinder import exception"},{"line_number":107,"context_line":"        msg \u003d \u0027Performance counter APIs are not supported on ASA r2.\u0027"},{"line_number":108,"context_line":"        raise exception.NotFound(msg)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_performance_instance_uuids(self, object_name, node_name):"},{"line_number":111,"context_line":"        \"\"\"ASA r2 doesn\u0027t support performance counter APIs.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"f5c9bc9a_4453143e","line":108,"range":{"start_line":108,"start_character":24,"end_line":108,"end_character":32},"updated":"2025-08-18 16:56:44.000000000","message":"VolumeDriverException or NetAppDriverException feels more appropriate than NotFound.\n\nSee also L114, L121.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        \"\"\""},{"line_number":106,"context_line":"        from cinder import exception"},{"line_number":107,"context_line":"        msg \u003d \u0027Performance counter APIs are not supported on ASA r2.\u0027"},{"line_number":108,"context_line":"        raise exception.NotFound(msg)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def get_performance_instance_uuids(self, object_name, node_name):"},{"line_number":111,"context_line":"        \"\"\"ASA r2 doesn\u0027t support performance counter APIs.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"45820246_6b713743","line":108,"range":{"start_line":108,"start_character":24,"end_line":108,"end_character":32},"in_reply_to":"f5c9bc9a_4453143e","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! Update NotFound exception to NetAppDriverException to indicate this is driver specific exception for NetApp.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":true,"context_lines":[{"line_number":138,"context_line":"            return response"},{"line_number":139,"context_line":"        except Exception as e:"},{"line_number":140,"context_line":"            LOG.exception(\u0027Failed to get cluster information: %s\u0027, e)"},{"line_number":141,"context_line":"            return None"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def get_cluster_capacity(self):"},{"line_number":144,"context_line":"        \"\"\"Get cluster capacity information for ASA r2.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"272aadfb_0620e7eb","line":141,"updated":"2025-08-18 16:56:44.000000000","message":"Are callers prepared to handle None for the returned value? I just want to be sure the caller doesn\u0027t stumble on and do something bad.\n\nUPDATE: I see the caller handles None by raising an exception, so this is fine. An alternative would be for this function to raise the exception.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            return response"},{"line_number":139,"context_line":"        except Exception as e:"},{"line_number":140,"context_line":"            LOG.exception(\u0027Failed to get cluster information: %s\u0027, e)"},{"line_number":141,"context_line":"            return None"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def get_cluster_capacity(self):"},{"line_number":144,"context_line":"        \"\"\"Get cluster capacity information for ASA r2.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"96150e03_fd662608","line":141,"in_reply_to":"272aadfb_0620e7eb","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! Raising exception will result in Discovery failure. Instead return None to skip this section in pool","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"280eaef5a74e2f04f0b62b611bbe5e7a036b5307","unresolved":true,"context_lines":[{"line_number":98,"context_line":"        msg \u003d _(\u0027Performance counter APIs are not supported on ASA r2.\u0027)"},{"line_number":99,"context_line":"        raise netapp_utils.NetAppDriverException(msg)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    # ASA r2 does not support ONTAPI, so we raise NotImplementedError"},{"line_number":102,"context_line":"    def get_ontapi_version(self, cached\u003dTrue):"},{"line_number":103,"context_line":"        \"\"\"ASA r2 doesn\u0027t support ONTAPI.\"\"\""},{"line_number":104,"context_line":"        return (0, 0)"}],"source_content_type":"text/x-python","patch_set":18,"id":"405b42e1_a721e0ce","line":101,"range":{"start_line":101,"start_character":38,"end_line":101,"end_character":69},"updated":"2025-08-26 18:57:56.000000000","message":"Actually, this doesn\u0027t raise NotImplementedError ... i took a quick look at the code, and didn\u0027t see a place where (0,0) will cause a NotImplementedError to be raised, so maybe this comment is left over from earlier development?  Also, you have a unit test to make sure this returns (0,0), so I think this is a leftover comment.","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"}],"cinder/volume/drivers/netapp/dataontap/nvme_library.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":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":true,"context_lines":[{"line_number":193,"context_line":"        \"\"\""},{"line_number":194,"context_line":"        pools \u003d {}"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        cluster_info \u003d self.client.get_cluster_info()"},{"line_number":197,"context_line":"        if cluster_info and \u0027name\u0027 in cluster_info:"},{"line_number":198,"context_line":"            cluster_name \u003d cluster_info[\u0027name\u0027]"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"8a9b8205_6c2029c5","line":196,"updated":"2025-08-14 08:30:23.000000000","message":"Since this is the same method we had above, we can create a cluster_utils.py and inject that method in both the places to avoid duplication.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        \"\"\""},{"line_number":194,"context_line":"        pools \u003d {}"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        cluster_info \u003d self.client.get_cluster_info()"},{"line_number":197,"context_line":"        if cluster_info and \u0027name\u0027 in cluster_info:"},{"line_number":198,"context_line":"            cluster_name \u003d cluster_info[\u0027name\u0027]"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"769810b5_0a1f7a1d","line":196,"in_reply_to":"8a9b8205_6c2029c5","updated":"2025-08-14 15:40:42.000000000","message":"yes... removed duplicate code.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"}],"cinder/volume/drivers/netapp/dataontap/utils/capabilities.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"90ff52c19541ec2007b34d4c31414dd03303ae66","unresolved":true,"context_lines":[{"line_number":146,"context_line":"                \u0027netapp_flexvol_encryption\u0027: False,"},{"line_number":147,"context_line":"            })"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"            # ASA r2 is disaggregated aggregate info is not available"},{"line_number":150,"context_line":"            disk_types \u003d self.zapi_client.get_aggregate_disk_types()"},{"line_number":151,"context_line":"            aggr_disk_info \u003d {"},{"line_number":152,"context_line":"                \u0027netapp_raid_type\u0027: None,"}],"source_content_type":"text/x-python","patch_set":18,"id":"653210a2_113abd8d","line":149,"range":{"start_line":149,"start_character":37,"end_line":149,"end_character":38},"updated":"2025-08-26 13:22:14.000000000","message":"nit: comma","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"}],"cinder/volume/drivers/netapp/dataontap/utils/utils.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":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    # Parameter takes precedence over config setting"},{"line_number":75,"context_line":"    is_disaggregated \u003d config.netapp_disaggregated_platform"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    if is_disaggregated:"},{"line_number":78,"context_line":"        force_rest \u003d True"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    if config.netapp_use_legacy_client and not force_rest:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f5f579f_d3f6bdac","line":77,"updated":"2025-08-14 08:30:23.000000000","message":"We need to add comment -ZAPI clients are not supported for ASAr2 platform. Hence we are forcing the client to be REST client.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    # Parameter takes precedence over config setting"},{"line_number":75,"context_line":"    is_disaggregated \u003d config.netapp_disaggregated_platform"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    if is_disaggregated:"},{"line_number":78,"context_line":"        force_rest \u003d True"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    if config.netapp_use_legacy_client and not force_rest:"}],"source_content_type":"text/x-python","patch_set":7,"id":"610ab4df_e15d86c3","line":77,"in_reply_to":"9f5f579f_d3f6bdac","updated":"2025-08-14 15:40:42.000000000","message":"yes, updated comments to reflect ZAPI are not supported ASAr2.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"280eaef5a74e2f04f0b62b611bbe5e7a036b5307","unresolved":true,"context_lines":[{"line_number":73,"context_line":"    config \u003d get_backend_configuration(backend_name)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    # Determine if disaggregated platform should be used"},{"line_number":76,"context_line":"    # Parameter takes precedence over config setting"},{"line_number":77,"context_line":"    is_disaggregated \u003d config.netapp_disaggregated_platform"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    # ZAPI clients are not supported for ASAr2 platform."}],"source_content_type":"text/x-python","patch_set":18,"id":"cc8a2b1a_65c99f66","line":76,"range":{"start_line":76,"start_character":6,"end_line":76,"end_character":52},"updated":"2025-08-26 18:57:56.000000000","message":"I think line 76 is confusing.  Are you talking about what\u0027s happening on lines 81-82, where even if force_rest is False, it\u0027s going to be overriden?  I think that\u0027s clearly documented by the comments at line 79-80.  Line 76 seems to have it backwards, because the config setting is taking precedence over the function parameter.  I\u0027d just delete line 76 (unless i am completely misunderstanding your point).","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"}],"releasenotes/notes/netapp-asar2-disaggregated-platform-support-a1b2c3d4e5f6g7h8.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":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    specific behavior. This design ensures that:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    * No existing functionality is lost"},{"line_number":44,"context_line":"    * New ASA r2 features can be added incrementally"},{"line_number":45,"context_line":"    * The same method names and interfaces are maintained"},{"line_number":46,"context_line":"    * Fallback mechanisms are automatically handled"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"fb80f995_5a98d247","line":44,"updated":"2025-08-14 08:30:23.000000000","message":"\"will be\"","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    specific behavior. This design ensures that:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    * No existing functionality is lost"},{"line_number":44,"context_line":"    * New ASA r2 features can be added incrementally"},{"line_number":45,"context_line":"    * The same method names and interfaces are maintained"},{"line_number":46,"context_line":"    * Fallback mechanisms are automatically handled"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"448f7821_062353b2","line":44,"in_reply_to":"fb80f995_5a98d247","updated":"2025-08-14 15:40:42.000000000","message":"yes, updated.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e978fe3c650ca84f824dc550db1a8d0286e7c3bf","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    * No existing functionality is lost"},{"line_number":44,"context_line":"    * New ASA r2 features can be added incrementally"},{"line_number":45,"context_line":"    * The same method names and interfaces are maintained"},{"line_number":46,"context_line":"    * Fallback mechanisms are automatically handled"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    This feature enables users to take advantage of NetApp\u0027s disaggregated"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"09d46f57_ff0d914c","line":45,"updated":"2025-08-14 08:30:23.000000000","message":"Lets also add - ASAr2 does not support ZAPIs. Hence all the ONTAP interactions are via REST client.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"cb4cfe3a7babdac31573c6607c2a5132c9d5204d","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    * No existing functionality is lost"},{"line_number":44,"context_line":"    * New ASA r2 features can be added incrementally"},{"line_number":45,"context_line":"    * The same method names and interfaces are maintained"},{"line_number":46,"context_line":"    * Fallback mechanisms are automatically handled"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    This feature enables users to take advantage of NetApp\u0027s disaggregated"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"46b1571a_1a5f951d","line":45,"in_reply_to":"09d46f57_ff0d914c","updated":"2025-08-14 15:40:42.000000000","message":"yes, added comment to reflect ZAPIs are not supported.","commit_id":"9be2cd61fa5657ed1f1a67404d36ea951b23f6d8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ae4d441503c33de30c46627a3a0417f6de2c9b49","unresolved":true,"context_lines":[{"line_number":11,"context_line":"    * New boolean configuration option ``netapp_disaggregated_platform``"},{"line_number":12,"context_line":"      (default: False) to enable ASA r2 workflows"},{"line_number":13,"context_line":"    * New ``RestClientASAr2`` class that inherits from the standard REST client"},{"line_number":14,"context_line":"    * Automatic method delegation using ``__getattr__`` pattern for seamless"},{"line_number":15,"context_line":"      operation"},{"line_number":16,"context_line":"    * Override capability for ASA r2 specific functionality when needed"},{"line_number":17,"context_line":"    * Full backward compatibility with existing NetApp ONTAP configurations"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"87ea22dd_d685b3ca","line":15,"range":{"start_line":14,"start_character":6,"end_line":15,"end_character":15},"updated":"2025-08-18 16:00:14.000000000","message":"this is not useful for the audience intended for releasenotes so we can remove this","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    * New boolean configuration option ``netapp_disaggregated_platform``"},{"line_number":12,"context_line":"      (default: False) to enable ASA r2 workflows"},{"line_number":13,"context_line":"    * New ``RestClientASAr2`` class that inherits from the standard REST client"},{"line_number":14,"context_line":"    * Automatic method delegation using ``__getattr__`` pattern for seamless"},{"line_number":15,"context_line":"      operation"},{"line_number":16,"context_line":"    * Override capability for ASA r2 specific functionality when needed"},{"line_number":17,"context_line":"    * Full backward compatibility with existing NetApp ONTAP configurations"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"7f7e4bf7_b1e604bb","line":15,"range":{"start_line":14,"start_character":6,"end_line":15,"end_character":15},"in_reply_to":"2202e5c0_b7c8065e","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! Cleaned up L16. This is useful for the developers. We will communicate internally.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":true,"context_lines":[{"line_number":11,"context_line":"    * New boolean configuration option ``netapp_disaggregated_platform``"},{"line_number":12,"context_line":"      (default: False) to enable ASA r2 workflows"},{"line_number":13,"context_line":"    * New ``RestClientASAr2`` class that inherits from the standard REST client"},{"line_number":14,"context_line":"    * Automatic method delegation using ``__getattr__`` pattern for seamless"},{"line_number":15,"context_line":"      operation"},{"line_number":16,"context_line":"    * Override capability for ASA r2 specific functionality when needed"},{"line_number":17,"context_line":"    * Full backward compatibility with existing NetApp ONTAP configurations"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"2202e5c0_b7c8065e","line":15,"range":{"start_line":14,"start_character":6,"end_line":15,"end_character":15},"in_reply_to":"87ea22dd_d685b3ca","updated":"2025-08-18 16:56:44.000000000","message":"I agree, and L16 could also be removed.\n\nCompare with L17, which IS something important for the cloud admin to know.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ae4d441503c33de30c46627a3a0417f6de2c9b49","unresolved":true,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    When ``netapp_disaggregated_platform`` is set to ``True``, the driver will:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    * Use the new ``RestClientASAr2`` class for ONTAP communication"},{"line_number":34,"context_line":"    * Apply ASA r2 specific optimizations and workflows"},{"line_number":35,"context_line":"    * Maintain full compatibility with existing volume operations"},{"line_number":36,"context_line":"    * Automatically fall back to standard ONTAP behavior when ASA r2 specific"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"a37f3601_bacc99c3","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":67},"updated":"2025-08-18 16:00:14.000000000","message":"again it\u0027s a implementation specific detail which the cloud admins/end users wouldn\u0027t benefit from, we can remove this line","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    When ``netapp_disaggregated_platform`` is set to ``True``, the driver will:"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    * Use the new ``RestClientASAr2`` class for ONTAP communication"},{"line_number":34,"context_line":"    * Apply ASA r2 specific optimizations and workflows"},{"line_number":35,"context_line":"    * Maintain full compatibility with existing volume operations"},{"line_number":36,"context_line":"    * Automatically fall back to standard ONTAP behavior when ASA r2 specific"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"19c5619c_76a9df4e","line":33,"range":{"start_line":33,"start_character":0,"end_line":33,"end_character":67},"in_reply_to":"a37f3601_bacc99c3","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! Yes, This is useful for the developers. We will communicate internally.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ae4d441503c33de30c46627a3a0417f6de2c9b49","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    * No existing functionality is lost"},{"line_number":44,"context_line":"    * New ASA r2 features will be added incrementally"},{"line_number":45,"context_line":"    * The same method names and interfaces are maintained"},{"line_number":46,"context_line":"    * Fallback mechanisms are automatically handled"},{"line_number":47,"context_line":"    * ASAr2 does not support ZAPIs. Hence all the APIs are accessed using REST."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"e4d50761_a6a0f67d","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":57},"updated":"2025-08-18 16:00:14.000000000","message":"implementation detail, we can remove this (these are more intended for commit message or comments in driver)","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    * No existing functionality is lost"},{"line_number":44,"context_line":"    * New ASA r2 features will be added incrementally"},{"line_number":45,"context_line":"    * The same method names and interfaces are maintained"},{"line_number":46,"context_line":"    * Fallback mechanisms are automatically handled"},{"line_number":47,"context_line":"    * ASAr2 does not support ZAPIs. Hence all the APIs are accessed using REST."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"456d9134_43221e19","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":57},"in_reply_to":"249bcaeb_07554822","updated":"2025-08-19 10:50:49.000000000","message":"Thank you! Cleaned up L45,46. This is useful for the developers. We will communicate internally.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"5c9afe19d88074cbd2b68099341a418f4566e48e","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    * No existing functionality is lost"},{"line_number":44,"context_line":"    * New ASA r2 features will be added incrementally"},{"line_number":45,"context_line":"    * The same method names and interfaces are maintained"},{"line_number":46,"context_line":"    * Fallback mechanisms are automatically handled"},{"line_number":47,"context_line":"    * ASAr2 does not support ZAPIs. Hence all the APIs are accessed using REST."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"249bcaeb_07554822","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":57},"in_reply_to":"e4d50761_a6a0f67d","updated":"2025-08-18 16:56:44.000000000","message":"And L46 as well.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ae4d441503c33de30c46627a3a0417f6de2c9b49","unresolved":true,"context_lines":[{"line_number":47,"context_line":"    * ASAr2 does not support ZAPIs. Hence all the APIs are accessed using REST."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    This feature enables users to take advantage of NetApp\u0027s disaggregated"},{"line_number":50,"context_line":"    architecture and ASA r2 specific performance optimizations while "},{"line_number":51,"context_line":"    maintaining a familiar operational experience."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"8014d3a6_ce1bf6dc","line":50,"range":{"start_line":50,"start_character":68,"end_line":50,"end_character":69},"updated":"2025-08-18 16:00:14.000000000","message":"nit: extra whitespace","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"15c945c0242cf9f3a582913144083b61d197d712","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    * ASAr2 does not support ZAPIs. Hence all the APIs are accessed using REST."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    This feature enables users to take advantage of NetApp\u0027s disaggregated"},{"line_number":50,"context_line":"    architecture and ASA r2 specific performance optimizations while "},{"line_number":51,"context_line":"    maintaining a familiar operational experience."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"8fddce56_19f1c896","line":50,"range":{"start_line":50,"start_character":68,"end_line":50,"end_character":69},"in_reply_to":"8014d3a6_ce1bf6dc","updated":"2025-08-19 10:50:49.000000000","message":"remove extra white space.","commit_id":"ed61f07b5338a08fdf37e36209de15858b4c00be"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"90ff52c19541ec2007b34d4c31414dd03303ae66","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    * New boolean configuration option ``netapp_disaggregated_platform``"},{"line_number":12,"context_line":"      (default: False) to enable ASA r2 workflows"},{"line_number":13,"context_line":"    * New ``RestClientASAr2`` class that inherits from the standard REST client"},{"line_number":14,"context_line":"    * Override capability for ASA r2 specific functionality when needed"},{"line_number":15,"context_line":"    * Full backward compatibility with existing NetApp ONTAP configurations"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"fa10b103_aefc6fbc","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":79},"updated":"2025-08-26 13:22:14.000000000","message":"nit: this is again an implementation detail that won\u0027t be useful for operators","commit_id":"07acca1b51183127483848e0e33ef2486b94b058"}]}
