From 4addad4baf3d6978d6fc597737bdd7f8fe697479 Mon Sep 17 00:00:00 2001 From: Saikumar Pulluri Date: Thu, 19 Jun 2025 11:02:15 -0400 Subject: [PATCH] NetApp: iSCSI/FC detach operation fails when multiple initiators connected During the detach operation of iSCSI and Fibre Channel (FC) sessions, the process fails when multiple initiators are connected to LUNS. Investigation reveals that the root cause is related to improper handling of initiator identifiers due to the use of a space character as a delimiter. Specifically, the NetApp's REST API expects initiator IDs to be parsed and processed as distinct entities. However, when multiple initiators are listed or passed as a single string separated by spaces, the parsing logic incorrectly splits or merges these identifiers. This results in failure to correctly identify and detach each initiator session, causing the overall detach operation to fail. To fix the above, updated the delimeter from space character to comma. Closes-Bug: #2114993 Change-Id: Ia143e729a3e84e22fcecf6f5bac8b0b3ae311553 Signed-off-by: Saikumar Pulluri --- .../netapp/dataontap/client/test_client_cmode_rest.py | 10 +++++----- .../netapp/dataontap/client/client_cmode_rest.py | 4 ++-- ...multiple-initiators-connected-b1069bab32d86027.yaml | 6 ++++++ 3 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 releasenotes/notes/bug-2114993-iscsi-fc-detach-operation-fails-when-multiple-initiators-connected-b1069bab32d86027.yaml diff --git a/cinder/tests/unit/volume/drivers/netapp/dataontap/client/test_client_cmode_rest.py b/cinder/tests/unit/volume/drivers/netapp/dataontap/client/test_client_cmode_rest.py index 9e5402c2f55..aeb7f16be11 100644 --- a/cinder/tests/unit/volume/drivers/netapp/dataontap/client/test_client_cmode_rest.py +++ b/cinder/tests/unit/volume/drivers/netapp/dataontap/client/test_client_cmode_rest.py @@ -1894,7 +1894,7 @@ class NetAppRestCmodeClientTestCase(test.TestCase): expected_query = { 'svm.name': fake_client.VOLUME_VSERVER_NAME, - 'initiators.name': ' '.join(initiators), + 'initiators.name': ','.join(initiators), 'fields': 'name,protocol,os_type' } @@ -1919,7 +1919,7 @@ class NetAppRestCmodeClientTestCase(test.TestCase): expected_query = { 'svm.name': fake_client.VOLUME_VSERVER_NAME, - 'initiators.name': ' '.join(initiators), + 'initiators.name': ','.join(initiators), 'fields': 'name,protocol,os_type' } @@ -2180,7 +2180,7 @@ class NetAppRestCmodeClientTestCase(test.TestCase): self.assertTrue(self.client.has_luns_mapped_to_initiators(initiators)) query = { - 'initiators.name': ' '.join(initiators), + 'initiators.name': ','.join(initiators), 'fields': 'lun_maps' } @@ -2196,7 +2196,7 @@ class NetAppRestCmodeClientTestCase(test.TestCase): self.assertFalse(self.client.has_luns_mapped_to_initiators(initiators)) query = { - 'initiators.name': ' '.join(initiators), + 'initiators.name': ','.join(initiators), 'fields': 'lun_maps' } @@ -2212,7 +2212,7 @@ class NetAppRestCmodeClientTestCase(test.TestCase): self.assertFalse(self.client.has_luns_mapped_to_initiators(initiators)) query = { - 'initiators.name': ' '.join(initiators), + 'initiators.name': ','.join(initiators), 'fields': 'lun_maps' } diff --git a/cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py b/cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py index edd6300308d..6db3b176a93 100644 --- a/cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py +++ b/cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py @@ -1434,7 +1434,7 @@ class RestClient(object, metaclass=volume_utils.TraceWrapperMetaclass): query = { 'svm.name': self.vserver, - 'initiators.name': ' '.join(initiator_list), + 'initiators.name': ','.join(initiator_list), 'fields': 'name,protocol,os_type' } @@ -1587,7 +1587,7 @@ class RestClient(object, metaclass=volume_utils.TraceWrapperMetaclass): def has_luns_mapped_to_initiators(self, initiator_list): """Checks whether any LUNs are mapped to the given initiator(s).""" query = { - 'initiators.name': ' '.join(initiator_list), + 'initiators.name': ','.join(initiator_list), 'fields': 'lun_maps' } diff --git a/releasenotes/notes/bug-2114993-iscsi-fc-detach-operation-fails-when-multiple-initiators-connected-b1069bab32d86027.yaml b/releasenotes/notes/bug-2114993-iscsi-fc-detach-operation-fails-when-multiple-initiators-connected-b1069bab32d86027.yaml new file mode 100644 index 00000000000..79c87a5f801 --- /dev/null +++ b/releasenotes/notes/bug-2114993-iscsi-fc-detach-operation-fails-when-multiple-initiators-connected-b1069bab32d86027.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + NetApp Driver `bug #2114993 + `_: Fixed iSCSI and FC + detach operation failure issue when multiple initiators are connected.