diff options
Diffstat (limited to 'nova/tests/unit/virt/vmwareapi/test_vm_util.py')
-rw-r--r-- | nova/tests/unit/virt/vmwareapi/test_vm_util.py | 91 |
1 files changed, 77 insertions, 14 deletions
diff --git a/nova/tests/unit/virt/vmwareapi/test_vm_util.py b/nova/tests/unit/virt/vmwareapi/test_vm_util.py index ea30895a4d..82fa07a882 100644 --- a/nova/tests/unit/virt/vmwareapi/test_vm_util.py +++ b/nova/tests/unit/virt/vmwareapi/test_vm_util.py @@ -15,14 +15,15 @@ # under the License. import collections +from unittest import mock -import mock from oslo_service import fixture as oslo_svc_fixture from oslo_utils import units from oslo_utils import uuidutils from oslo_vmware import exceptions as vexc from oslo_vmware.objects import datastore as ds_obj from oslo_vmware import pbm +from oslo_vmware import vim_util as vutil from nova import exception from nova.network import model as network_model @@ -31,7 +32,7 @@ from nova.tests.unit import fake_instance from nova.tests.unit.virt.vmwareapi import fake from nova.tests.unit.virt.vmwareapi import stubs from nova.virt.vmwareapi import constants -from nova.virt.vmwareapi import driver +from nova.virt.vmwareapi import session as vmware_session from nova.virt.vmwareapi import vm_util @@ -375,7 +376,7 @@ class VMwareVMUtilTestCase(test.NoDBTestCase): ide_controller = fake.VirtualIDEController() devices.append(scsi_controller) devices.append(ide_controller) - fake._update_object("VirtualMachine", vm) + fake.update_object(vm) # return the scsi type, not ide self.assertEqual(constants.DEFAULT_ADAPTER_TYPE, vm_util.get_scsi_adapter_type(devices)) @@ -387,7 +388,7 @@ class VMwareVMUtilTestCase(test.NoDBTestCase): ide_controller = fake.VirtualIDEController() devices.append(scsi_controller) devices.append(ide_controller) - fake._update_object("VirtualMachine", vm) + fake.update_object(vm) # the controller is not suitable since the device under this controller # has exceeded SCSI_MAX_CONNECT_NUMBER for i in range(0, constants.SCSI_MAX_CONNECT_NUMBER): @@ -1036,7 +1037,7 @@ class VMwareVMUtilTestCase(test.NoDBTestCase): found[0] = True mock_log_warn.side_effect = fake_log_warn - session = driver.VMwareAPISession() + session = vmware_session.VMwareAPISession() config_spec = vm_util.get_vm_create_spec( session.vim.client.factory, @@ -1987,23 +1988,85 @@ class VMwareVMUtilTestCase(test.NoDBTestCase): mock_get_name.assert_called_once_with(self._instance.display_name, self._instance.uuid) - -@mock.patch.object(driver.VMwareAPISession, 'vim', stubs.fake_vim_prop) + def test_create_fcd_id_obj(self): + fcd_id_obj = mock.Mock() + client_factory = mock.Mock() + client_factory.create.return_value = fcd_id_obj + fcd_id = mock.sentinel.fcd_id + ret = vm_util._create_fcd_id_obj(client_factory, fcd_id) + + self.assertEqual(fcd_id_obj, ret) + self.assertEqual(fcd_id, ret.id) + client_factory.create.assert_called_once_with('ns0:ID') + + @mock.patch.object(vm_util, '_create_fcd_id_obj') + @mock.patch.object(vutil, 'get_moref') + def test_attach_fcd(self, get_moref, create_fcd_id_obj): + disk_id = mock.sentinel.disk_id + create_fcd_id_obj.return_value = disk_id + + ds_ref = mock.sentinel.ds_ref + get_moref.return_value = ds_ref + + task = mock.sentinel.task + session = mock.Mock() + session._call_method.return_value = task + + vm_ref = mock.sentinel.vm_ref + fcd_id = mock.sentinel.fcd_id + ds_ref_val = mock.sentinel.ds_ref_val + controller_key = mock.sentinel.controller_key + unit_number = mock.sentinel.unit_number + vm_util.attach_fcd( + session, vm_ref, fcd_id, ds_ref_val, controller_key, unit_number) + + create_fcd_id_obj.assert_called_once_with( + session.vim.client.factory, fcd_id) + get_moref.assert_called_once_with(ds_ref_val, 'Datastore') + session._call_method.assert_called_once_with( + session.vim, "AttachDisk_Task", vm_ref, diskId=disk_id, + datastore=ds_ref, controllerKey=controller_key, + unitNumber=unit_number) + session._wait_for_task.assert_called_once_with(task) + + @mock.patch.object(vm_util, '_create_fcd_id_obj') + def test_detach_fcd(self, create_fcd_id_obj): + disk_id = mock.sentinel.disk_id + create_fcd_id_obj.return_value = disk_id + + task = mock.sentinel.task + session = mock.Mock() + session._call_method.return_value = task + + vm_ref = mock.sentinel.vm_ref + fcd_id = mock.sentinel.fcd_id + vm_util.detach_fcd(session, vm_ref, fcd_id) + + create_fcd_id_obj.assert_called_once_with( + session.vim.client.factory, fcd_id) + session._call_method.assert_called_once_with( + session.vim, "DetachDisk_Task", vm_ref, diskId=disk_id) + session._wait_for_task.assert_called_once_with(task) + + +@mock.patch.object(vmware_session.VMwareAPISession, 'vim', + stubs.fake_vim_prop) class VMwareVMUtilGetHostRefTestCase(test.NoDBTestCase): # N.B. Mocking on the class only mocks test_*(), but we need - # VMwareAPISession.vim to be mocked in both setUp and tests. Not mocking in - # setUp causes object initialisation to fail. Not mocking in tests results - # in vim calls not using FakeVim. - @mock.patch.object(driver.VMwareAPISession, 'vim', stubs.fake_vim_prop) + # session.VMwareAPISession.vim to be mocked in both setUp and tests. + # Not mocking in setUp causes object initialisation to fail. Not + # mocking in tests results in vim calls not using FakeVim. + @mock.patch.object(vmware_session.VMwareAPISession, 'vim', + stubs.fake_vim_prop) def setUp(self): super(VMwareVMUtilGetHostRefTestCase, self).setUp() fake.reset() vm_util.vm_refs_cache_reset() - self.session = driver.VMwareAPISession() + self.session = vmware_session.VMwareAPISession() # Create a fake VirtualMachine running on a known host - self.host_ref = list(fake._db_content['HostSystem'].keys())[0] + self.host_ref = fake.get_first_object_ref("HostSystem") self.vm_ref = fake.create_vm(host_ref=self.host_ref) @mock.patch.object(vm_util, 'get_vm_ref') @@ -2019,7 +2082,7 @@ class VMwareVMUtilGetHostRefTestCase(test.NoDBTestCase): def test_get_host_name_for_vm(self, mock_get_vm_ref): mock_get_vm_ref.return_value = self.vm_ref - host = fake._get_object(self.host_ref) + host = fake.get_object(self.host_ref) ret = vm_util.get_host_name_for_vm(self.session, 'fake-instance') |