Merge "VNX: share server cannot be deleted" into stable/ocata

This commit is contained in:
Jenkins 2017-07-31 14:35:28 +00:00 committed by Gerrit Code Review
commit 36495bb8f7
5 changed files with 48 additions and 13 deletions

View File

@ -1015,7 +1015,8 @@ class VDM(StorageObject):
if_name = m_if.group('if').strip()
if 'cifs' == m_if.group('type') and if_name != '':
interfaces['cifs'].append(if_name)
elif 'vdm' == m_if.group('type') and if_name != '':
elif (m_if.group('type') in ('vdm', 'nfs')
and if_name != ''):
interfaces['nfs'].append(if_name)
return interfaces

View File

@ -758,8 +758,9 @@ class VDMTestData(StorageObjectTestData):
'-vdm', self.vdm_name,
]
def output_get_interfaces(self, cifs_interface=FakeData.interface_name1,
nfs_interface=FakeData.interface_name2):
def output_get_interfaces_vdm(self,
cifs_interface=FakeData.interface_name1,
nfs_interface=FakeData.interface_name2):
return (
"""id = %(vdmid)s
name = %(name)s
@ -782,6 +783,31 @@ class VDMTestData(StorageObjectTestData):
'cifs_if_name': cifs_interface}
)
def output_get_interfaces_nfs(self,
cifs_interface=FakeData.interface_name1,
nfs_interface=FakeData.interface_name2):
return (
"""id = %(vdmid)s
name = %(name)s
acl = 0
type = vdm
server = server_2
rootfs = root_fs_vdm_vdm-fakeid
I18N mode = UNICODE
mountedfs =
member_of =
status :
defined = enabled
actual = loaded, active
Interfaces to services mapping:
interface=%(nfs_if_name)s :nfs
interface=%(cifs_if_name)s :cifs""" %
{'vdmid': self.vdm_id,
'name': self.vdm_name,
'nfs_if_name': nfs_interface,
'cifs_if_name': cifs_interface}
)
class PoolTestData(StorageObjectTestData):
def __init__(self):

View File

@ -716,7 +716,7 @@ class StorageConnectionTestCase(test.TestCase):
xml_req_mock = utils.EMCMock(side_effect=hook)
self.connection.manager.connectors['XML'].request = xml_req_mock
ssh_hook = utils.SSHSideEffect()
ssh_hook.append(self.vdm.output_get_interfaces(nfs_interface=''))
ssh_hook.append(self.vdm.output_get_interfaces_vdm(nfs_interface=''))
ssh_cmd_mock = mock.Mock(side_effect=ssh_hook)
self.connection.manager.connectors['SSH'].run_ssh = ssh_cmd_mock
@ -755,7 +755,7 @@ class StorageConnectionTestCase(test.TestCase):
self.connection.manager.connectors['XML'].request = xml_req_mock
ssh_hook = utils.SSHSideEffect()
ssh_hook.append(self.vdm.output_get_interfaces(nfs_interface=''))
ssh_hook.append(self.vdm.output_get_interfaces_vdm(nfs_interface=''))
ssh_cmd_mock = mock.Mock(side_effect=ssh_hook)
self.connection.manager.connectors['SSH'].run_ssh = ssh_cmd_mock
@ -805,7 +805,7 @@ class StorageConnectionTestCase(test.TestCase):
self.connection.manager.connectors['XML'].request = xml_req_mock
ssh_hook = utils.SSHSideEffect()
ssh_hook.append(self.vdm.output_get_interfaces())
ssh_hook.append(self.vdm.output_get_interfaces_vdm())
ssh_hook.append()
ssh_cmd_mock = mock.Mock(side_effect=ssh_hook)
self.connection.manager.connectors['SSH'].run_ssh = ssh_cmd_mock
@ -848,7 +848,7 @@ class StorageConnectionTestCase(test.TestCase):
self.connection.manager.connectors['XML'].request = xml_req_mock
ssh_hook = utils.SSHSideEffect()
ssh_hook.append(self.vdm.output_get_interfaces())
ssh_hook.append(self.vdm.output_get_interfaces_vdm())
ssh_hook.append()
ssh_cmd_mock = mock.Mock(side_effect=ssh_hook)
self.connection.manager.connectors['SSH'].run_ssh = ssh_cmd_mock
@ -906,7 +906,7 @@ class StorageConnectionTestCase(test.TestCase):
self.connection.manager.connectors['XML'].request = xml_req_mock
ssh_hook = utils.SSHSideEffect()
ssh_hook.append(self.vdm.output_get_interfaces())
ssh_hook.append(self.vdm.output_get_interfaces_vdm())
ssh_hook.append()
ssh_cmd_mock = mock.Mock(side_effect=ssh_hook)
self.connection.manager.connectors['SSH'].run_ssh = ssh_cmd_mock
@ -947,7 +947,7 @@ class StorageConnectionTestCase(test.TestCase):
self.connection.manager.connectors['XML'].request = xml_req_mock
ssh_hook = utils.SSHSideEffect()
ssh_hook.append(self.vdm.output_get_interfaces())
ssh_hook.append(self.vdm.output_get_interfaces_vdm())
ssh_hook.append()
ssh_cmd_mock = mock.Mock(side_effect=ssh_hook)
self.connection.manager.connectors['SSH'].run_ssh = ssh_cmd_mock

View File

@ -851,6 +851,7 @@ class MountPointTestCase(StorageObjectTestCaseBase):
context.conn['XML'].request.assert_has_calls(expected_calls)
@ddt.ddt
class VDMTestCase(StorageObjectTestCaseBase):
def setUp(self):
super(self.__class__, self).setUp()
@ -1075,11 +1076,11 @@ class VDMTestCase(StorageObjectTestCaseBase):
def test_detach_nfs_interface_with_error(self):
self.ssh_hook.append(ex=processutils.ProcessExecutionError(
stdout=self.vdm.fake_output))
self.ssh_hook.append(self.vdm.output_get_interfaces(
self.ssh_hook.append(self.vdm.output_get_interfaces_vdm(
self.mover.interface_name2))
self.ssh_hook.append(ex=processutils.ProcessExecutionError(
stdout=self.vdm.fake_output))
self.ssh_hook.append(self.vdm.output_get_interfaces(
self.ssh_hook.append(self.vdm.output_get_interfaces_vdm(
nfs_interface=fakes.FakeData.interface_name1))
context = self.manager.getStorageContext('VDM')
@ -1101,8 +1102,10 @@ class VDMTestCase(StorageObjectTestCaseBase):
]
context.conn['SSH'].run_ssh.assert_has_calls(ssh_calls)
def test_get_cifs_nfs_interface(self):
self.ssh_hook.append(self.vdm.output_get_interfaces())
@ddt.data(fakes.VDMTestData().output_get_interfaces_vdm(),
fakes.VDMTestData().output_get_interfaces_nfs())
def test_get_cifs_nfs_interface(self, fake_output):
self.ssh_hook.append(fake_output)
context = self.manager.getStorageContext('VDM')
context.conn['SSH'].run_ssh = mock.Mock(side_effect=self.ssh_hook)

View File

@ -0,0 +1,5 @@
---
fixes:
- Fix the issue of deleting share server in VNX driver. The VNX driver failed
to detect the NFS interface of share server, so the detach and deletion of
NFS interface were skipped.