Cleanup livemigrationutils
This reverts commit e02f3e6023
.
This commit will be merged after all the old livemigrationutils
usage has been updated to create a planned VM on the destionation
host beforehand.
Change-Id: I23409877234edefcea9860a6c0a8d70ef7a06c8a
This commit is contained in:
parent
265082debc
commit
76d324ed95
|
@ -43,7 +43,6 @@ class LiveMigrationUtilsTestCase(test_base.OsWinBaseTestCase):
|
|||
self._conn = mock.MagicMock()
|
||||
self.liveutils._conn_attr = self._conn
|
||||
self.liveutils._vmutils = mock.MagicMock()
|
||||
self.liveutils._iscsi_initiator = mock.MagicMock()
|
||||
self.liveutils._jobutils = mock.Mock()
|
||||
|
||||
self.liveutils._get_conn_v2 = mock.MagicMock(return_value=self._conn)
|
||||
|
@ -150,68 +149,6 @@ class LiveMigrationUtilsTestCase(test_base.OsWinBaseTestCase):
|
|||
mock.sentinel.FAKE_JOB_PATH,
|
||||
self._FAKE_RET_VAL)
|
||||
|
||||
def test_get_physical_disk_paths(self):
|
||||
ide_path = {mock.sentinel.IDE_PATH: mock.sentinel.IDE_HOST_RESOURCE}
|
||||
scsi_path = {mock.sentinel.SCSI_PATH: mock.sentinel.SCSI_HOST_RESOURCE}
|
||||
ide_ctrl = self.liveutils._vmutils.get_vm_ide_controller.return_value
|
||||
scsi_ctrl = self.liveutils._vmutils.get_vm_scsi_controller.return_value
|
||||
mock_get_controller_paths = (
|
||||
self.liveutils._vmutils.get_controller_volume_paths)
|
||||
|
||||
mock_get_controller_paths.side_effect = [ide_path, scsi_path]
|
||||
|
||||
result = self.liveutils._get_physical_disk_paths(mock.sentinel.VM_NAME)
|
||||
|
||||
expected = dict(ide_path)
|
||||
expected.update(scsi_path)
|
||||
self.assertDictContainsSubset(expected, result)
|
||||
calls = [mock.call(ide_ctrl), mock.call(scsi_ctrl)]
|
||||
mock_get_controller_paths.assert_has_calls(calls)
|
||||
|
||||
def test_get_physical_disk_paths_no_ide(self):
|
||||
scsi_path = {mock.sentinel.SCSI_PATH: mock.sentinel.SCSI_HOST_RESOURCE}
|
||||
scsi_ctrl = self.liveutils._vmutils.get_vm_scsi_controller.return_value
|
||||
mock_get_controller_paths = (
|
||||
self.liveutils._vmutils.get_controller_volume_paths)
|
||||
|
||||
self.liveutils._vmutils.get_vm_ide_controller.return_value = None
|
||||
mock_get_controller_paths.return_value = scsi_path
|
||||
|
||||
result = self.liveutils._get_physical_disk_paths(mock.sentinel.VM_NAME)
|
||||
|
||||
self.assertEqual(scsi_path, result)
|
||||
mock_get_controller_paths.assert_called_once_with(scsi_ctrl)
|
||||
|
||||
@mock.patch.object(livemigrationutils.iscsi_wmi_utils,
|
||||
'ISCSIInitiatorWMIUtils')
|
||||
def test_get_remote_disk_data(self, mock_iscsi_initiator_class):
|
||||
m_remote_iscsi_init = mock_iscsi_initiator_class.return_value
|
||||
m_local_iscsi_init = self.liveutils._iscsi_initiator
|
||||
|
||||
mock_vm_utils = mock.MagicMock()
|
||||
disk_paths = {
|
||||
mock.sentinel.FAKE_RASD_PATH: mock.sentinel.FAKE_DISK_PATH}
|
||||
m_local_iscsi_init.get_target_from_disk_path.return_value = (
|
||||
mock.sentinel.FAKE_IQN, mock.sentinel.FAKE_LUN)
|
||||
m_remote_iscsi_init.get_device_number_for_target.return_value = (
|
||||
mock.sentinel.FAKE_DEV_NUM)
|
||||
mock_vm_utils.get_mounted_disk_by_drive_number.return_value = (
|
||||
mock.sentinel.FAKE_DISK_PATH)
|
||||
|
||||
disk_paths = self.liveutils._get_remote_disk_data(
|
||||
mock_vm_utils, disk_paths, mock.sentinel.FAKE_HOST)
|
||||
|
||||
m_local_iscsi_init.get_target_from_disk_path.assert_called_with(
|
||||
mock.sentinel.FAKE_DISK_PATH)
|
||||
m_remote_iscsi_init.get_device_number_for_target.assert_called_with(
|
||||
mock.sentinel.FAKE_IQN, mock.sentinel.FAKE_LUN)
|
||||
mock_vm_utils.get_mounted_disk_by_drive_number.assert_called_once_with(
|
||||
mock.sentinel.FAKE_DEV_NUM)
|
||||
|
||||
self.assertEqual(
|
||||
{mock.sentinel.FAKE_RASD_PATH: mock.sentinel.FAKE_DISK_PATH},
|
||||
disk_paths)
|
||||
|
||||
def test_get_disk_data(self):
|
||||
mock_vmutils_remote = mock.MagicMock()
|
||||
mock_disk = mock.MagicMock()
|
||||
|
@ -292,69 +229,6 @@ class LiveMigrationUtilsTestCase(test_base.OsWinBaseTestCase):
|
|||
MigrationSettingData=mock_vsmsd.GetText_.return_value,
|
||||
NewResourceSettingData=mock.sentinel.FAKE_RASD_PATH)
|
||||
|
||||
@ddt.data(True, False)
|
||||
@mock.patch.object(livemigrationutils.LiveMigrationUtils,
|
||||
'_get_planned_vm')
|
||||
@mock.patch.object(livemigrationutils, 'vmutils')
|
||||
def test_live_migrate_no_planned_vm(self, migrate_disks, mock_vm_utils,
|
||||
mock_get_planned_vm):
|
||||
mock_vm_utils_remote = mock_vm_utils.VMUtils.return_value
|
||||
mock_vm = self._get_vm()
|
||||
|
||||
mock_migr_svc = self._conn.Msvm_VirtualSystemMigrationService()[0]
|
||||
mock_migr_svc.MigrationServiceListenerIPAddressList = [
|
||||
mock.sentinel.FAKE_REMOTE_IP_ADDR]
|
||||
|
||||
# patches, call and assertions.
|
||||
with mock.patch.multiple(
|
||||
self.liveutils,
|
||||
_get_physical_disk_paths=mock.DEFAULT,
|
||||
_get_remote_disk_data=mock.DEFAULT,
|
||||
_create_planned_vm=mock.DEFAULT,
|
||||
_update_planned_vm_disk_resources=mock.DEFAULT,
|
||||
_get_vhd_setting_data=mock.DEFAULT,
|
||||
_live_migrate_vm=mock.DEFAULT):
|
||||
|
||||
mock_get_planned_vm.return_value = None
|
||||
disk_paths = {
|
||||
mock.sentinel.FAKE_IDE_PATH: mock.sentinel.FAKE_SASD_RESOURCE}
|
||||
self.liveutils._get_physical_disk_paths.return_value = disk_paths
|
||||
mock_disk_paths = [mock.sentinel.FAKE_DISK_PATH]
|
||||
self.liveutils._get_remote_disk_data.return_value = (
|
||||
mock_disk_paths)
|
||||
self.liveutils._create_planned_vm.return_value = mock_vm
|
||||
|
||||
self.liveutils.live_migrate_vm(mock.sentinel.vm_name,
|
||||
mock.sentinel.FAKE_HOST,
|
||||
migrate_disks=migrate_disks)
|
||||
mock_get_planned_vm.assert_called_once_with(
|
||||
mock.sentinel.vm_name, self._conn)
|
||||
self.liveutils._get_remote_disk_data.assert_called_once_with(
|
||||
mock_vm_utils_remote, disk_paths, mock.sentinel.FAKE_HOST)
|
||||
self.liveutils._create_planned_vm.assert_called_once_with(
|
||||
self._conn, self._conn, mock_vm,
|
||||
[mock.sentinel.FAKE_REMOTE_IP_ADDR], mock.sentinel.FAKE_HOST)
|
||||
mocked_method = self.liveutils._update_planned_vm_disk_resources
|
||||
mocked_method.assert_called_once_with(
|
||||
self._conn, mock_vm, mock.sentinel.vm_name,
|
||||
mock_disk_paths)
|
||||
|
||||
if migrate_disks:
|
||||
expected_migr_type = (
|
||||
self.liveutils._MIGRATION_TYPE_VIRTUAL_SYSTEM_AND_STORAGE)
|
||||
exp_new_rsd = self.liveutils._get_vhd_setting_data.return_value
|
||||
else:
|
||||
expected_migr_type = (
|
||||
self.liveutils._MIGRATION_TYPE_VIRTUAL_SYSTEM)
|
||||
exp_new_rsd = None
|
||||
|
||||
self.liveutils._live_migrate_vm.assert_called_once_with(
|
||||
self._conn, mock_vm, mock_vm,
|
||||
[mock.sentinel.FAKE_REMOTE_IP_ADDR],
|
||||
exp_new_rsd,
|
||||
mock.sentinel.FAKE_HOST,
|
||||
expected_migr_type)
|
||||
|
||||
@mock.patch.object(
|
||||
livemigrationutils.LiveMigrationUtils, '_get_planned_vm')
|
||||
def test_live_migrate_single_planned_vm(self, mock_get_planned_vm):
|
||||
|
|
|
@ -22,7 +22,6 @@ from os_win import exceptions
|
|||
from os_win.utils import _wqlutils
|
||||
from os_win.utils.compute import migrationutils
|
||||
from os_win.utils.compute import vmutils
|
||||
from os_win.utils.storage.initiator import iscsi_wmi_utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -37,7 +36,6 @@ class LiveMigrationUtils(migrationutils.MigrationUtils):
|
|||
|
||||
def __init__(self):
|
||||
super(LiveMigrationUtils, self).__init__()
|
||||
self._iscsi_initiator = iscsi_wmi_utils.ISCSIInitiatorWMIUtils()
|
||||
|
||||
def _get_conn_v2(self, host='localhost'):
|
||||
try:
|
||||
|
@ -107,42 +105,6 @@ class LiveMigrationUtils(migrationutils.MigrationUtils):
|
|||
|
||||
return conn_v2_local.Msvm_PlannedComputerSystem(Name=vm.Name)[0]
|
||||
|
||||
def _get_physical_disk_paths(self, vm_name):
|
||||
# TODO(claudiub): Remove this after the livemigrationutils usage has
|
||||
# been updated to create planned VM on the destination host beforehand.
|
||||
ide_ctrl_path = self._vmutils.get_vm_ide_controller(vm_name, 0)
|
||||
if ide_ctrl_path:
|
||||
ide_paths = self._vmutils.get_controller_volume_paths(
|
||||
ide_ctrl_path)
|
||||
else:
|
||||
ide_paths = {}
|
||||
|
||||
scsi_ctrl_path = self._vmutils.get_vm_scsi_controller(vm_name)
|
||||
scsi_paths = self._vmutils.get_controller_volume_paths(scsi_ctrl_path)
|
||||
|
||||
return dict(list(ide_paths.items()) + list(scsi_paths.items()))
|
||||
|
||||
def _get_remote_disk_data(self, vmutils_remote, disk_paths, dest_host):
|
||||
# TODO(claudiub): Remove this after the livemigrationutils usage has
|
||||
# been updated to create planned VM on the destination host beforehand.
|
||||
remote_iscsi_initiator = iscsi_wmi_utils.ISCSIInitiatorWMIUtils(
|
||||
dest_host)
|
||||
|
||||
disk_paths_remote = {}
|
||||
for (rasd_rel_path, disk_path) in disk_paths.items():
|
||||
target = self._iscsi_initiator.get_target_from_disk_path(disk_path)
|
||||
if target:
|
||||
(target_iqn, target_lun) = target
|
||||
dev_num = remote_iscsi_initiator.get_device_number_for_target(
|
||||
target_iqn, target_lun)
|
||||
disk_path_remote = (
|
||||
vmutils_remote.get_mounted_disk_by_drive_number(dev_num))
|
||||
disk_paths_remote[rasd_rel_path] = disk_path_remote
|
||||
else:
|
||||
LOG.debug("Could not retrieve iSCSI target "
|
||||
"from disk path: %s", disk_path)
|
||||
return disk_paths_remote
|
||||
|
||||
def _get_disk_data(self, vm_name, vmutils_remote, disk_path_mapping):
|
||||
disk_paths = {}
|
||||
phys_disk_resources = vmutils_remote.get_vm_disks(vm_name)[1]
|
||||
|
@ -233,23 +195,6 @@ class LiveMigrationUtils(migrationutils.MigrationUtils):
|
|||
dest_host)
|
||||
|
||||
planned_vm = self._get_planned_vm(vm_name, conn_v2_remote)
|
||||
if not planned_vm:
|
||||
# TODO(claudiub): Remove this branch after the livemigrationutils
|
||||
# usage has been updated to create planned VM on the destination
|
||||
# host beforehand.
|
||||
planned_vm = None
|
||||
disk_paths = self._get_physical_disk_paths(vm_name)
|
||||
if disk_paths:
|
||||
vmutils_remote = vmutils.VMUtils(dest_host)
|
||||
disk_paths_remote = self._get_remote_disk_data(vmutils_remote,
|
||||
disk_paths,
|
||||
dest_host)
|
||||
planned_vm = self._create_planned_vm(conn_v2_remote,
|
||||
self._compat_conn,
|
||||
vm, rmt_ip_addr_list,
|
||||
dest_host)
|
||||
self._update_planned_vm_disk_resources(
|
||||
conn_v2_remote, planned_vm, vm_name, disk_paths_remote)
|
||||
|
||||
if migrate_disks:
|
||||
new_resource_setting_data = self._get_vhd_setting_data(vm)
|
||||
|
|
Loading…
Reference in New Issue