)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38373,"name":"Manideep","display_name":"Manideep","email":"manideep.openstack@gmail.com","username":"manideepn","status":"NetApp"},"change_message_id":"c13b38caa046f43be58436460af431e214e058b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6654cae4_36fa2737","updated":"2026-02-05 05:58:31.000000000","message":"Run-NetApp CI","commit_id":"d336d3d9b8f0f6347195b807a0a2069ab6abc47c"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"cbdb74f4a5bb290506e7b4970bb740dea363740c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"810143f8_2d2e4762","updated":"2026-02-19 06:17:30.000000000","message":"LGTM","commit_id":"5a4d720865cbd12820c0f0961396036023e54a22"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a69a09ef_38cbe521","updated":"2026-02-23 17:30:18.000000000","message":"See comments inline.  -1 for the unit tests; the other stuff you can take or leave.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"42e0ba6a5984a57c5ad386da46a4b71350686703","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2521425c_a3a6f65d","updated":"2026-02-20 05:59:32.000000000","message":"recheck","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"678f6b59ef3ca1318661f3e9e9fb976de5a5563b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"65cffd34_53ea6e5c","updated":"2026-02-19 11:48:50.000000000","message":"recheck","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e46da7722848a9ff60d025b69c77fb20fe103546","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"789d0787_f0d8f34b","updated":"2026-02-23 04:57:09.000000000","message":"recheck","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":38373,"name":"Manideep","display_name":"Manideep","email":"manideep.openstack@gmail.com","username":"manideepn","status":"NetApp"},"change_message_id":"605a978eb886bc1d8b3faa4c7abfed059b24f8cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1644651d_ed898285","updated":"2026-02-23 12:21:20.000000000","message":"run-NetApp CI","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"8d21298ec5e951eeb35a7221502a174256592a1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ffb3acac_ed38ec39","updated":"2026-02-23 09:27:36.000000000","message":"run-NetApp CI","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"6789d969_c9a5903f","updated":"2026-02-26 15:17:08.000000000","message":"Thanks @rosmaita.fossdev@gmail.com for review comments, could you please take a look and please let me know if you have any further comments.","commit_id":"be7e4b70ce453fe1d78d00b04b594bcbe203540a"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"69624ef03ee8447483310ca70a0853a207ad05d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"40526883_99f615e1","updated":"2026-03-02 06:06:29.000000000","message":"@rosmaita.fossdev@gmail.com, @jobernar@redhat.com and @rajatdhasmana@gmail.com, could please review this patch.","commit_id":"dad4299af45f515868884e9352ecf79b94182cb9"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"fb07472902baf6daf409854b134acfbf418d8f1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"017dbabc_d895b50c","updated":"2026-02-27 10:01:27.000000000","message":"recheck","commit_id":"dad4299af45f515868884e9352ecf79b94182cb9"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"6297a1c6a29381affe6e1ce4b9d4b50271f948db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0ca1b640_c02bbd10","updated":"2026-03-02 05:18:21.000000000","message":"recheck","commit_id":"dad4299af45f515868884e9352ecf79b94182cb9"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"df23bd7d016dad4b05582ebec67980e6424d2489","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4f70f8e5_2e1508ad","updated":"2026-02-28 04:57:57.000000000","message":"recheck","commit_id":"dad4299af45f515868884e9352ecf79b94182cb9"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"938bbd7d25ba16acabed76e6eada783bec44dc53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6de4abb0_9f4731ac","updated":"2026-02-28 13:12:51.000000000","message":"recheck","commit_id":"dad4299af45f515868884e9352ecf79b94182cb9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b3ccf83aea29e79fa2e6214dc4672e727e8c805a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b0ba556b_a2bd8afc","updated":"2026-03-06 16:47:14.000000000","message":"Comment inline.  I\u0027m not going to hold up that patch, but I think this is an issue that can become a problem in the future.","commit_id":"3ab76c9a6ae7c958f0485a45d70f7eca2bd928e6"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"a8e8059b13b58fe26db7cf985667e598ad1babe1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"88c59bbb_93946388","updated":"2026-03-09 16:44:04.000000000","message":"Not holding up for CI, code looks okay to me, I think Brian has a valid concern.","commit_id":"3ab76c9a6ae7c958f0485a45d70f7eca2bd928e6"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"b0e1011b8bf38494a5ae59781ba8eb897cc2c7af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"59f5c7ea_2ddf9d22","updated":"2026-03-05 14:36:12.000000000","message":"Run-NetApp CI","commit_id":"3ab76c9a6ae7c958f0485a45d70f7eca2bd928e6"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"799e458292b1c370a754f869990813dbc0da4d40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"74175570_23b7ba50","updated":"2026-03-10 15:04:13.000000000","message":"Thanks rosmaita.fossdev@gmail.com for your review comments, I have incorporated those and response to few comments, please take a look.","commit_id":"3ab76c9a6ae7c958f0485a45d70f7eca2bd928e6"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"6e4b8b66d954d38ee15d5788fed821f67600c4e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b0b02104_c711b245","updated":"2026-03-05 15:10:16.000000000","message":"This patch all looks good to me, will move to +2 if CI agrees.","commit_id":"3ab76c9a6ae7c958f0485a45d70f7eca2bd928e6"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"493229f5bbf28bb79113964134917865d5f70dd0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d33d6918_3476170c","updated":"2026-03-06 11:30:24.000000000","message":"run-NetApp CI","commit_id":"3ab76c9a6ae7c958f0485a45d70f7eca2bd928e6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0f42ee9c05333318ffdc98775d308bbcf4120e20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c731248e_11ea0b15","updated":"2026-03-12 23:13:20.000000000","message":"I\u0027m still not convinced about the unit tests, but the issue isn\u0027t specific to this patch, so I won\u0027t hold it up.  Code looks like it does what it needs to do to address the bug.","commit_id":"742a066e33b2bfab25ffd80ca0a9e07a3bb58b76"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"946606075533e8f78b55e6a483e9abb34ac6d94c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e197276e_a76e8f67","updated":"2026-03-13 13:42:28.000000000","message":"Restoring my earlier vote, Brian raises a good point that I hope will be addressed in coming patches.","commit_id":"742a066e33b2bfab25ffd80ca0a9e07a3bb58b76"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7f5463221b644279139342246db2c6b719b7b885","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"7bfa94b2_309d99f3","updated":"2026-03-12 06:53:26.000000000","message":"run-NetApp CI","commit_id":"742a066e33b2bfab25ffd80ca0a9e07a3bb58b76"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_block_base.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":true,"context_lines":[{"line_number":172,"context_line":"        self.assertEqual("},{"line_number":173,"context_line":"            0, self.library. _mark_qos_policy_group_for_deletion.call_count)"},{"line_number":174,"context_line":"        self.assertEqual(0, block_base.LOG.error.call_count)"},{"line_number":175,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_create_volume_space_allocation_extra_spec_false(self):"},{"line_number":178,"context_line":"        volume_size_in_bytes \u003d int(fake.SIZE) * units.Gi"}],"source_content_type":"text/x-python","patch_set":4,"id":"7d4183d7_7f4bada7","line":175,"range":{"start_line":175,"start_character":7,"end_line":175,"end_character":72},"updated":"2026-02-23 17:30:18.000000000","message":"This already happens in the setUp for each test (line 62), so you shouldn\u0027t need to do it here.  If you need to do it here or else you get failures, then there is a bigger problem with unit test isolation that you need to deal with.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        self.assertEqual("},{"line_number":173,"context_line":"            0, self.library. _mark_qos_policy_group_for_deletion.call_count)"},{"line_number":174,"context_line":"        self.assertEqual(0, block_base.LOG.error.call_count)"},{"line_number":175,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_create_volume_space_allocation_extra_spec_false(self):"},{"line_number":178,"context_line":"        volume_size_in_bytes \u003d int(fake.SIZE) * units.Gi"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f518090_d018bd78","line":175,"range":{"start_line":175,"start_character":7,"end_line":175,"end_character":72},"in_reply_to":"7d4183d7_7f4bada7","updated":"2026-02-26 15:17:08.000000000","message":"I removed this from here.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":true,"context_lines":[{"line_number":1230,"context_line":"        mock_get_lun_attr.assert_called_once_with(fake.LUN_NAME, \u0027metadata\u0027)"},{"line_number":1231,"context_line":"        self.library.zapi_client.destroy_lun.assert_called_once_with("},{"line_number":1232,"context_line":"            fake.LUN_NAME)"},{"line_number":1233,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"    def test_delete_lun_no_metadata(self):"},{"line_number":1236,"context_line":"        self.mock_object(self.library, \u0027_get_lun_attr\u0027, return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"f6eaa235_a583e867","line":1233,"updated":"2026-02-23 17:30:18.000000000","message":"Same comment as line 175.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b3ccf83aea29e79fa2e6214dc4672e727e8c805a","unresolved":true,"context_lines":[{"line_number":1230,"context_line":"        mock_get_lun_attr.assert_called_once_with(fake.LUN_NAME, \u0027metadata\u0027)"},{"line_number":1231,"context_line":"        self.library.zapi_client.destroy_lun.assert_called_once_with("},{"line_number":1232,"context_line":"            fake.LUN_NAME)"},{"line_number":1233,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"    def test_delete_lun_no_metadata(self):"},{"line_number":1236,"context_line":"        self.mock_object(self.library, \u0027_get_lun_attr\u0027, return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"acded357_2fab8f57","line":1233,"in_reply_to":"6e6fd9fc_353de4f7","updated":"2026-03-06 16:47:14.000000000","message":"OK, so my point is: if the config object is unique to each test (as you claim), then you don\u0027t need to set it back, because each test is working with its own config.  So who cares what you do with it in this test, because it won\u0027t affect the others.  You only need to set it back to False if the config object is going to be reused by another test running after this one.  If the config object is being used by another test concurrently with this test, then changing the value of the option like you do at the beginning of the test is going to affect the other test as well; maybe you\u0027re lucky in that the other tests using this option expect it to be True also, but in general this is not a pattern you can use when working with a global object.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"330727ddc25d5d6c2f14a6141ac236fb0ae6092d","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"        mock_get_lun_attr.assert_called_once_with(fake.LUN_NAME, \u0027metadata\u0027)"},{"line_number":1231,"context_line":"        self.library.zapi_client.destroy_lun.assert_called_once_with("},{"line_number":1232,"context_line":"            fake.LUN_NAME)"},{"line_number":1233,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"    def test_delete_lun_no_metadata(self):"},{"line_number":1236,"context_line":"        self.mock_object(self.library, \u0027_get_lun_attr\u0027, return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"4b1f3566_219ab565","line":1233,"in_reply_to":"848a6fb2_07d6d46f","updated":"2026-03-11 03:25:34.000000000","message":"Marking this resolve, feel free to open the comment if you are not agree.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"799e458292b1c370a754f869990813dbc0da4d40","unresolved":true,"context_lines":[{"line_number":1230,"context_line":"        mock_get_lun_attr.assert_called_once_with(fake.LUN_NAME, \u0027metadata\u0027)"},{"line_number":1231,"context_line":"        self.library.zapi_client.destroy_lun.assert_called_once_with("},{"line_number":1232,"context_line":"            fake.LUN_NAME)"},{"line_number":1233,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"    def test_delete_lun_no_metadata(self):"},{"line_number":1236,"context_line":"        self.mock_object(self.library, \u0027_get_lun_attr\u0027, return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"848a6fb2_07d6d46f","line":1233,"in_reply_to":"acded357_2fab8f57","updated":"2026-03-10 15:04:13.000000000","message":"rosmaita.fossdev@gmail.com , here is my understanding, please correct me if I am wrong.\n\nIn concurrent testing, each thread maintains its own instance of the variable self.library.configuration.netapp_disaggregated_platform.\nWhen running tests with, for example, 10 threads, and each thread executes 9 tests sequentially, the variable value:\n- Is unique per thread.\n- Is shared only among the 9 tests running within the same thread and those test runs sequentially.\n- Is not accessible or modifiable by other threads.\n\nThe test suite contains a mix of test cases that require different settings for netapp_disaggregated_platform.\nSome tests (asar2-related) require the variable to be set to true.\nOther tests (unified or asar2 platform-related) require it to be false.\nSince tests within a thread run sequentially, the variable must be reset to the appropriate value at the end of each test to avoid side effects on subsequent tests.\n\nSuppose a thread picks up 4 tests related to asar2 and 5 tests related to non-asar2, all of which run sequentially within that thread. If I set the netapp_disaggregated_platform variable to true for the asar2 tests so that it will run asar2 related block and in case of non-asar2 platform it will use the default (which is false) value set by setup method which runs before each test execution.\n\nHere you are right, I should not set these value to False, I\u0027ll change that and will push my code.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"        mock_get_lun_attr.assert_called_once_with(fake.LUN_NAME, \u0027metadata\u0027)"},{"line_number":1231,"context_line":"        self.library.zapi_client.destroy_lun.assert_called_once_with("},{"line_number":1232,"context_line":"            fake.LUN_NAME)"},{"line_number":1233,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"    def test_delete_lun_no_metadata(self):"},{"line_number":1236,"context_line":"        self.mock_object(self.library, \u0027_get_lun_attr\u0027, return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"6e6fd9fc_353de4f7","line":1233,"in_reply_to":"f6eaa235_a583e867","updated":"2026-02-26 15:17:08.000000000","message":"I am setting this value to True in line L#1218 so at the end need to set it value to False.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":true,"context_lines":[{"line_number":1450,"context_line":"        mock_extend_volume.assert_called_once_with(fake.VOLUME,"},{"line_number":1451,"context_line":"                                                   new_size,"},{"line_number":1452,"context_line":"                                                   fake.QOS_POLICY_GROUP_NAME)"},{"line_number":1453,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1454,"context_line":""},{"line_number":1455,"context_line":"    def test_extend_volume_api_error(self):"},{"line_number":1456,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"698b907e_fe252ca3","line":1453,"updated":"2026-02-23 17:30:18.000000000","message":"Same comment as line 175.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"        mock_extend_volume.assert_called_once_with(fake.VOLUME,"},{"line_number":1451,"context_line":"                                                   new_size,"},{"line_number":1452,"context_line":"                                                   fake.QOS_POLICY_GROUP_NAME)"},{"line_number":1453,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1454,"context_line":""},{"line_number":1455,"context_line":"    def test_extend_volume_api_error(self):"},{"line_number":1456,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"eadb02df_b0d16be0","line":1453,"in_reply_to":"698b907e_fe252ca3","updated":"2026-02-26 15:17:08.000000000","message":"Same as above","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":true,"context_lines":[{"line_number":1987,"context_line":"        self.library.lun_table \u003d {backend_name: fake_lun}"},{"line_number":1988,"context_line":"        self.library._delete_lun_from_table(fake_lun.name)"},{"line_number":1989,"context_line":"        self.assertEqual({}, self.library.lun_table)"},{"line_number":1990,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1991,"context_line":""},{"line_number":1992,"context_line":"    def test_delete_lun_from_table_not_found(self):"},{"line_number":1993,"context_line":"        fake_lun \u003d block_base.NetAppLun(fake.LUN_HANDLE, fake.LUN_ID,"}],"source_content_type":"text/x-python","patch_set":4,"id":"65f7f7de_f606d2f6","line":1990,"updated":"2026-02-23 17:30:18.000000000","message":"Same comment as line 175.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[{"line_number":1987,"context_line":"        self.library.lun_table \u003d {backend_name: fake_lun}"},{"line_number":1988,"context_line":"        self.library._delete_lun_from_table(fake_lun.name)"},{"line_number":1989,"context_line":"        self.assertEqual({}, self.library.lun_table)"},{"line_number":1990,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d False"},{"line_number":1991,"context_line":""},{"line_number":1992,"context_line":"    def test_delete_lun_from_table_not_found(self):"},{"line_number":1993,"context_line":"        fake_lun \u003d block_base.NetAppLun(fake.LUN_HANDLE, fake.LUN_ID,"}],"source_content_type":"text/x-python","patch_set":4,"id":"4ff6bba7_776be7b6","line":1990,"in_reply_to":"65f7f7de_f606d2f6","updated":"2026-02-26 15:17:08.000000000","message":"Same as above.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0f42ee9c05333318ffdc98775d308bbcf4120e20","unresolved":true,"context_lines":[{"line_number":53,"context_line":"            \u0027configuration\u0027: self.get_config_base(),"},{"line_number":54,"context_line":"            \u0027host\u0027: \u0027openstack@netappblock\u0027,"},{"line_number":55,"context_line":"        }"},{"line_number":56,"context_line":"        self.library \u003d block_base.NetAppBlockStorageLibrary("},{"line_number":57,"context_line":"            \u0027driver\u0027, \u0027protocol\u0027, **kwargs)"},{"line_number":58,"context_line":"        self.library.zapi_client \u003d mock.Mock()"},{"line_number":59,"context_line":"        self.zapi_client \u003d self.library.zapi_client"}],"source_content_type":"text/x-python","patch_set":8,"id":"cc2492f8_720c13a9","line":56,"updated":"2026-03-12 23:13:20.000000000","message":"As you point out, self.library is a new object each setup.  But note that the configuration is injected into this new object ... it\u0027s passed in the kwargs at line 57, and these are set above at lines 53 and 54.  So the question of the independent config has to do with what the function at line 63 is doing.","commit_id":"742a066e33b2bfab25ffd80ca0a9e07a3bb58b76"}],"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":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":true,"context_lines":[{"line_number":205,"context_line":"            fake_metadata)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_create_volume_asar2(self):"},{"line_number":208,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d True"},{"line_number":209,"context_line":"        volume_size_in_bytes \u003d int(fake.SIZE) * units.Gi"},{"line_number":210,"context_line":"        self.mock_object(volume_utils, \u0027extract_host\u0027,"},{"line_number":211,"context_line":"                         return_value\u003dfake.POOL_NAME)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5ded8a53_b309c4f5","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":35},"updated":"2026-02-23 17:30:18.000000000","message":"Is this configuration object local to this test?  If not, changing this setting to True can also affect other concurrently running tests in the time before you set it back to false at line 229.\n\nSame issue for all the other tests you\u0027ve modified on this patch.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"799e458292b1c370a754f869990813dbc0da4d40","unresolved":true,"context_lines":[{"line_number":205,"context_line":"            fake_metadata)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_create_volume_asar2(self):"},{"line_number":208,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d True"},{"line_number":209,"context_line":"        volume_size_in_bytes \u003d int(fake.SIZE) * units.Gi"},{"line_number":210,"context_line":"        self.mock_object(volume_utils, \u0027extract_host\u0027,"},{"line_number":211,"context_line":"                         return_value\u003dfake.POOL_NAME)"}],"source_content_type":"text/x-python","patch_set":4,"id":"6bd5c41d_2887a678","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":35},"in_reply_to":"078f0a6c_51029795","updated":"2026-03-10 15:04:13.000000000","message":"Yes, we have the same as below, I have added this config which is using this params \nhttps://review.opendev.org/c/openstack/cinder/+/975667/7/cinder/tests/unit/volume/drivers/netapp/fakes.py#184","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            fake_metadata)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_create_volume_asar2(self):"},{"line_number":208,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d True"},{"line_number":209,"context_line":"        volume_size_in_bytes \u003d int(fake.SIZE) * units.Gi"},{"line_number":210,"context_line":"        self.mock_object(volume_utils, \u0027extract_host\u0027,"},{"line_number":211,"context_line":"                         return_value\u003dfake.POOL_NAME)"}],"source_content_type":"text/x-python","patch_set":4,"id":"821491af_560d488b","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":35},"in_reply_to":"5ded8a53_b309c4f5","updated":"2026-02-26 15:17:08.000000000","message":"I think we already discuss this as part of below patch \nhttps://review.opendev.org/c/openstack/cinder/+/961525?tab\u003dcomments\n\nCopying my response from that patch \nself.library is an instance variable, so self.library.configuration will be unique for each instance. Therefore, when tests run concurrently, each test instance will have its own self.library.configuration object, preventing any conflicts. Although library.configuration is not local to each test, I setting it\u0027s value to True or False where netapp_disaggregated_platform is used in the dev code.\n\nOn the same thread Erlon R. Cruz has commented \nI believe the configure object is not shared and we should be fine with this tests. The call trace goes like this:\n\nNetAppBlockStorageLibraryTestCase.get_config_base() -\u003e na_fakes.create_configuration() -\u003e conf.Configuration(None) -\u003e DefaultGroupConfiguration() -\u003e CONF -\u003e cfg.CONF -\u003e ConfigOpts() on oslo_config, and since \u0027CONF \u003d ConfigOpts()\u0027, we are getting a new instance of the class for each call.\n\nI tested it with 80 concurrency and all the test are passing\n\n\u003d\u003d\u003d\u003d\u003d\u003d\nTotals\n\u003d\u003d\u003d\u003d\u003d\u003d\nRan: 95 tests in 22.2333 sec.\n - Passed: 95\n - Skipped: 0\n - Expected Fail: 0\n - Unexpected Success: 0\n - Failed: 0\nSum of execute time for each test: 503.9112 sec.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nWorker Balance\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n - Worker 0 (1 tests) \u003d\u003e 0:00:02.560292\n - Worker 1 (1 tests) \u003d\u003e 0:00:05.519022\n - Worker 2 (1 tests) \u003d\u003e 0:00:05.864084\n - Worker 3 (1 tests) \u003d\u003e 0:00:05.441042\n - Worker 4 (1 tests) \u003d\u003e 0:00:06.961101\n - Worker 5 (1 tests) \u003d\u003e 0:00:05.583694\n - Worker 6 (1 tests) \u003d\u003e 0:00:07.292026\n - Worker 7 (1 tests) \u003d\u003e 0:00:05.871084\n - Worker 8 (1 tests) \u003d\u003e 0:00:07.424730\n - Worker 9 (1 tests) \u003d\u003e 0:00:07.148399\n - Worker 10 (1 tests) \u003d\u003e 0:00:05.872219\n - Worker 11 (1 tests) \u003d\u003e 0:00:07.257795\n - Worker 12 (1 tests) \u003d\u003e 0:00:06.971937\n - Worker 13 (1 tests) \u003d\u003e 0:00:07.140520\n - Worker 14 (1 tests) \u003d\u003e 0:00:07.249245\n - Worker 15 (1 tests) \u003d\u003e 0:00:07.316912\n - Worker 16 (1 tests) \u003d\u003e 0:00:05.621396\n - Worker 17 (1 tests) \u003d\u003e 0:00:07.109657\n - Worker 18 (1 tests) \u003d\u003e 0:00:05.752088\n - Worker 19 (1 tests) \u003d\u003e 0:00:07.319647\n - Worker 20 (1 tests) \u003d\u003e 0:00:07.011119\n - Worker 21 (1 tests) \u003d\u003e 0:00:04.837403\n - Worker 22 (1 tests) \u003d\u003e 0:00:06.778407\n - Worker 23 (1 tests) \u003d\u003e 0:00:07.189266\n - Worker 24 (1 tests) \u003d\u003e 0:00:05.918601\n - Worker 25 (1 tests) \u003d\u003e 0:00:05.052757\n - Worker 26 (1 tests) \u003d\u003e 0:00:07.067117\n - Worker 27 (1 tests) \u003d\u003e 0:00:06.610632\n - Worker 28 (1 tests) \u003d\u003e 0:00:05.637860\n - Worker 29 (1 tests) \u003d\u003e 0:00:05.361385\n - Worker 30 (1 tests) \u003d\u003e 0:00:07.105962\n - Worker 31 (1 tests) \u003d\u003e 0:00:06.726077\n - Worker 32 (1 tests) \u003d\u003e 0:00:07.110850\n - Worker 33 (1 tests) \u003d\u003e 0:00:07.114708\n - Worker 34 (1 tests) \u003d\u003e 0:00:07.162274\n - Worker 35 (1 tests) \u003d\u003e 0:00:06.680311\n - Worker 36 (1 tests) \u003d\u003e 0:00:06.180079\n - Worker 37 (1 tests) \u003d\u003e 0:00:05.953557\n - Worker 38 (1 tests) \u003d\u003e 0:00:06.221096\n - Worker 39 (1 tests) \u003d\u003e 0:00:07.449320\n - Worker 40 (1 tests) \u003d\u003e 0:00:05.227329\n - Worker 41 (1 tests) \u003d\u003e 0:00:06.853162\n - Worker 42 (1 tests) \u003d\u003e 0:00:05.461243\n - Worker 43 (1 tests) \u003d\u003e 0:00:06.940311\n - Worker 44 (1 tests) \u003d\u003e 0:00:07.103666\n - Worker 45 (1 tests) \u003d\u003e 0:00:06.967875\n - Worker 46 (1 tests) \u003d\u003e 0:00:07.209605\n - Worker 47 (1 tests) \u003d\u003e 0:00:05.866593\n - Worker 48 (1 tests) \u003d\u003e 0:00:07.246920\n - Worker 49 (1 tests) \u003d\u003e 0:00:07.060561\n - Worker 50 (1 tests) \u003d\u003e 0:00:03.995232\n - Worker 51 (1 tests) \u003d\u003e 0:00:01.660928\n - Worker 52 (1 tests) \u003d\u003e 0:00:05.379860\n - Worker 53 (1 tests) \u003d\u003e 0:00:07.247711\n - Worker 54 (1 tests) \u003d\u003e 0:00:05.028663\n - Worker 55 (1 tests) \u003d\u003e 0:00:06.796046\n - Worker 56 (1 tests) \u003d\u003e 0:00:06.756873\n - Worker 57 (1 tests) \u003d\u003e 0:00:06.870479\n - Worker 58 (1 tests) \u003d\u003e 0:00:04.855322\n - Worker 59 (1 tests) \u003d\u003e 0:00:05.418102\n - Worker 60 (1 tests) \u003d\u003e 0:00:05.114720\n - Worker 61 (1 tests) \u003d\u003e 0:00:07.139668\n - Worker 62 (1 tests) \u003d\u003e 0:00:01.230624\n - Worker 63 (1 tests) \u003d\u003e 0:00:07.452667\n - Worker 64 (1 tests) \u003d\u003e 0:00:06.787030\n - Worker 65 (2 tests) \u003d\u003e 0:00:04.971598\n - Worker 66 (2 tests) \u003d\u003e 0:00:07.434798\n - Worker 67 (2 tests) \u003d\u003e 0:00:07.134772\n - Worker 68 (2 tests) \u003d\u003e 0:00:05.660461\n - Worker 69 (2 tests) \u003d\u003e 0:00:07.546815\n - Worker 70 (2 tests) \u003d\u003e 0:00:07.523456\n - Worker 71 (2 tests) \u003d\u003e 0:00:07.496676\n - Worker 72 (2 tests) \u003d\u003e 0:00:06.581650\n - Worker 73 (2 tests) \u003d\u003e 0:00:05.733658\n - Worker 74 (2 tests) \u003d\u003e 0:00:06.005354\n - Worker 75 (2 tests) \u003d\u003e 0:00:07.389244\n - Worker 76 (2 tests) \u003d\u003e 0:00:07.655412\n - Worker 77 (2 tests) \u003d\u003e 0:00:07.039070\n - Worker 78 (2 tests) \u003d\u003e 0:00:05.373227\n - Worker 79 (2 tests) \u003d\u003e 0:00:06.422335\npy310: commands[1]\u003e stestr slowest\nTest id                                                                                                                                                                      Runtime (s)\n---------------------------------------------------------------------------------------------------------------------------------------------------------------------------  -----------\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test_create_export                                                      7.453\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test_create_snapshot                                                    7.449\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test_check_for_setup_error_disaggregated                                7.425\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test_create_group_from_src_group                                        7.320\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test_get_pool_map_match_all_pools_1_                                    7.317\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test_check_for_setup_error_error_1                                      7.294\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test_get_pool_map_non_matching_patterns_1_abc_stackopen_openstack_abc_  7.292\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test__extend_volume                                                     7.258\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test__delete_namespace                                                  7.249\ncinder.tests.unit.volume.drivers.netapp.dataontap.test_nvme_library.NetAppNVMeStorageLibraryTestCase.test__create_snapshot                                                   7.248\n.pkg: _exit\u003e python /root/GIT/upstream/bug/cinder/.tox/.tox/lib/python3.10/site-packages/pyproject_api/_backend.py True pbr.build\n  py310: OK (154.77\u003dsetup[4.04]+cmd[150.37,0.36] seconds)\n  congratulations :) (155.08 seconds)\nroot@ostack-ubuntu-11:~/GIT/upstream/bug/cinder#","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"330727ddc25d5d6c2f14a6141ac236fb0ae6092d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            fake_metadata)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_create_volume_asar2(self):"},{"line_number":208,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d True"},{"line_number":209,"context_line":"        volume_size_in_bytes \u003d int(fake.SIZE) * units.Gi"},{"line_number":210,"context_line":"        self.mock_object(volume_utils, \u0027extract_host\u0027,"},{"line_number":211,"context_line":"                         return_value\u003dfake.POOL_NAME)"}],"source_content_type":"text/x-python","patch_set":4,"id":"153c911c_91992bea","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":35},"in_reply_to":"6bd5c41d_2887a678","updated":"2026-03-11 03:25:34.000000000","message":"Marking this resolve, feel free to open the comment if you are not agree.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b3ccf83aea29e79fa2e6214dc4672e727e8c805a","unresolved":true,"context_lines":[{"line_number":205,"context_line":"            fake_metadata)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_create_volume_asar2(self):"},{"line_number":208,"context_line":"        self.library.configuration.netapp_disaggregated_platform \u003d True"},{"line_number":209,"context_line":"        volume_size_in_bytes \u003d int(fake.SIZE) * units.Gi"},{"line_number":210,"context_line":"        self.mock_object(volume_utils, \u0027extract_host\u0027,"},{"line_number":211,"context_line":"                         return_value\u003dfake.POOL_NAME)"}],"source_content_type":"text/x-python","patch_set":4,"id":"078f0a6c_51029795","line":208,"range":{"start_line":208,"start_character":8,"end_line":208,"end_character":35},"in_reply_to":"821491af_560d488b","updated":"2026-03-06 16:47:14.000000000","message":"What you really need to check is the id of the configuration object.  I saw Erlon\u0027s analysis, but if he\u0027s talking about the CONF \u003d ConfigOpts() at [0], I\u0027m pretty sure that is created when the module is loaded, not on each test.  And like I said on the other patch, although a new library is created during setup, the config that it uses is injected into the library, so it could be the same one.  The only way to know would be to print out the id of self.library.configuration in a few tests and see if it\u0027s the same object or not.\n\n[0] https://opendev.org/openstack/oslo.config/src/branch/master/oslo_config/cfg.py#L3691","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"}],"cinder/tests/unit/volume/drivers/netapp/test_utils.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":true,"context_lines":[{"line_number":1271,"context_line":"        self.assertEqual("},{"line_number":1272,"context_line":"            na_utils.get_backend_lun_or_ns_name_asar2(\"volume-name-123\"),"},{"line_number":1273,"context_line":"            \"volume_name_123\""},{"line_number":1274,"context_line":"        )"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"    def test_get_backend_lun_or_ns_name_asar2_for_none(self):"},{"line_number":1277,"context_line":"        self.assertIsNone(na_utils.get_backend_lun_or_ns_name_asar2(None))"}],"source_content_type":"text/x-python","patch_set":4,"id":"aaf3924c_e2be3ba1","line":1274,"updated":"2026-02-23 17:30:18.000000000","message":"It\u0027s probably also worth making sure that na_utils.get_backend_lun_or_ns_name_asar2(\"volume_name_123\"),\n            \"volume_name_123\"","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"        self.assertEqual("},{"line_number":1272,"context_line":"            na_utils.get_backend_lun_or_ns_name_asar2(\"volume-name-123\"),"},{"line_number":1273,"context_line":"            \"volume_name_123\""},{"line_number":1274,"context_line":"        )"},{"line_number":1275,"context_line":""},{"line_number":1276,"context_line":"    def test_get_backend_lun_or_ns_name_asar2_for_none(self):"},{"line_number":1277,"context_line":"        self.assertIsNone(na_utils.get_backend_lun_or_ns_name_asar2(None))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5790fb1f_76017116","line":1274,"in_reply_to":"aaf3924c_e2be3ba1","updated":"2026-02-26 15:17:08.000000000","message":"Added more combination for volume names in test.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"}],"cinder/volume/drivers/netapp/dataontap/block_base.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":true,"context_lines":[{"line_number":686,"context_line":"    def _extend_volume(self, volume, new_size, qos_policy_group_name):"},{"line_number":687,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":688,"context_line":"        name \u003d volume[\u0027name\u0027]"},{"line_number":689,"context_line":"        if self.configuration.netapp_disaggregated_platform:"},{"line_number":690,"context_line":"            name \u003d na_utils.get_backend_lun_or_ns_name_asar2(name)"},{"line_number":691,"context_line":"        lun \u003d self._get_lun_from_table(name)"},{"line_number":692,"context_line":"        path \u003d lun.metadata[\u0027Path\u0027]"},{"line_number":693,"context_line":"        curr_size_bytes \u003d str(lun.size)"}],"source_content_type":"text/x-python","patch_set":4,"id":"4ba9275a_d9ab8681","line":690,"range":{"start_line":689,"start_character":0,"end_line":690,"end_character":66},"updated":"2026-02-23 17:30:18.000000000","message":"Something to think about, but instead of using the \"if condition fix_name\" pattern, it might be better to unconditionally call the canonicalize name function and put the logic in the function, like\n\n```\n   name \u003d na_utils.canonicalize_name(volume[\u0027name\u0027])\n```\n\nat line 688, and then the function decides whether the name needs to be modified or not.  Probably not a big deal if the only difference is ONTAP vs. ASAr2.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[{"line_number":686,"context_line":"    def _extend_volume(self, volume, new_size, qos_policy_group_name):"},{"line_number":687,"context_line":"        \"\"\"Extend an existing volume to the new size.\"\"\""},{"line_number":688,"context_line":"        name \u003d volume[\u0027name\u0027]"},{"line_number":689,"context_line":"        if self.configuration.netapp_disaggregated_platform:"},{"line_number":690,"context_line":"            name \u003d na_utils.get_backend_lun_or_ns_name_asar2(name)"},{"line_number":691,"context_line":"        lun \u003d self._get_lun_from_table(name)"},{"line_number":692,"context_line":"        path \u003d lun.metadata[\u0027Path\u0027]"},{"line_number":693,"context_line":"        curr_size_bytes \u003d str(lun.size)"}],"source_content_type":"text/x-python","patch_set":4,"id":"0ef86521_c41dc38a","line":690,"range":{"start_line":689,"start_character":0,"end_line":690,"end_character":66},"in_reply_to":"4ba9275a_d9ab8681","updated":"2026-02-26 15:17:08.000000000","message":"This make sense. moved the logic under get_backend_lun_or_ns_name() method get backend name based on ONTAP platform.","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"}],"cinder/volume/drivers/netapp/utils.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad696aab4d291e107c73902e11aa924428d4f4fb","unresolved":true,"context_lines":[{"line_number":584,"context_line":""},{"line_number":585,"context_line":"def get_backend_lun_or_ns_name_asar2(volume_name):"},{"line_number":586,"context_line":"    \"\"\"Get backend LUN or NameSpace name for ASAr2\"\"\""},{"line_number":587,"context_line":"    if volume_name:"},{"line_number":588,"context_line":"        return volume_name.replace(\"-\", \"_\")"},{"line_number":589,"context_line":"    return None"},{"line_number":590,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"997738ad_fa47ba61","line":587,"updated":"2026-02-23 17:30:18.000000000","message":"Note that this will return an empty string as None -- is that what you want?","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ccba2fde43083692e5a5d261f8df45a5c4c436e6","unresolved":false,"context_lines":[{"line_number":584,"context_line":""},{"line_number":585,"context_line":"def get_backend_lun_or_ns_name_asar2(volume_name):"},{"line_number":586,"context_line":"    \"\"\"Get backend LUN or NameSpace name for ASAr2\"\"\""},{"line_number":587,"context_line":"    if volume_name:"},{"line_number":588,"context_line":"        return volume_name.replace(\"-\", \"_\")"},{"line_number":589,"context_line":"    return None"},{"line_number":590,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"02d0ec80_b779576e","line":587,"in_reply_to":"997738ad_fa47ba61","updated":"2026-02-26 15:17:08.000000000","message":"I have change this method based on one of your comments. New code will be as below \ndef get_backend_lun_or_ns_name(volume_name, config):\n    \"\"\"Get backend LUN or NameSpace name\"\"\"\n    if config.netapp_disaggregated_platform:\n        return volume_name.replace(\"-\", \"_\")\n    else:\n        return volume_name","commit_id":"4501adb368ce3feb36466f45e77ea2446439c838"}]}
