diff --git a/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py b/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py index 1aec0e9a25..d266ac132c 100644 --- a/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py +++ b/manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py @@ -320,8 +320,10 @@ class NetAppCmodeMultiSVMFileStorageLibrary( vserver_client = self._get_api_client(vserver=vserver) network_interfaces = vserver_client.get_network_interfaces() - home_port = network_interfaces[0]['home-port'] - vlan = home_port.split('-')[1] + vlan = None + if network_interfaces: + home_port = network_interfaces[0]['home-port'] + vlan = home_port.split('-')[1] @utils.synchronized('netapp-VLAN-%s' % vlan, external=True) def _delete_vserver_with_lock(): diff --git a/manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_lib_multi_svm.py b/manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_lib_multi_svm.py index 6c9df347a7..ea61bbb7ef 100644 --- a/manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_lib_multi_svm.py +++ b/manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_lib_multi_svm.py @@ -698,7 +698,8 @@ class NetAppFileStorageLibraryTestCase(test.TestCase): mock_delete_vserver_vlan.assert_called_once_with( c_fake.NETWORK_INTERFACES) - def test_delete_vserver_with_ipspace(self): + @ddt.data([], c_fake.NETWORK_INTERFACES) + def test_delete_vserver_with_ipspace(self, interfaces): self.mock_object(self.library._client, 'get_vserver_ipspace', @@ -714,7 +715,7 @@ class NetAppFileStorageLibraryTestCase(test.TestCase): '_delete_vserver_vlan') self.mock_object(vserver_client, 'get_network_interfaces', - mock.Mock(return_value=c_fake.NETWORK_INTERFACES)) + mock.Mock(return_value=interfaces)) security_services = fake.NETWORK_INFO['security_services'] @@ -727,8 +728,7 @@ class NetAppFileStorageLibraryTestCase(test.TestCase): fake.VSERVER1, vserver_client, security_services=security_services) self.library._client.delete_ipspace.assert_called_once_with( fake.IPSPACE) - mock_delete_vserver_vlan.assert_called_once_with( - c_fake.NETWORK_INTERFACES) + mock_delete_vserver_vlan.assert_called_once_with(interfaces) def test_delete_vserver_vlan(self): diff --git a/releasenotes/notes/bug-1607029-fix-share-server-deletion-when-interfaces-dont-exist-4d00fe9dafadc252.yaml b/releasenotes/notes/bug-1607029-fix-share-server-deletion-when-interfaces-dont-exist-4d00fe9dafadc252.yaml new file mode 100644 index 0000000000..50f9876ae3 --- /dev/null +++ b/releasenotes/notes/bug-1607029-fix-share-server-deletion-when-interfaces-dont-exist-4d00fe9dafadc252.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - Fixed issue with NetApp cDOT share server cleanup when LIF creation fails + while setting up a new vServer.