Changes required for Cold Migration

"block_device_info" required to delete instance that migrated form
one host to another
Skip check for RMC state during migration

Change-Id: I8ad1fc2852e0a281c8a48b207ea4fd2f2beac467
This commit is contained in:
rajat-0 2019-08-23 04:22:03 -04:00 committed by rajas113
parent 6ea1819963
commit 5f4e8dcd7e
3 changed files with 11 additions and 4 deletions

View File

@ -2068,13 +2068,16 @@ class TestPowerVMDriver(test.NoDBTestCase):
mock_power_off.assert_called_once_with(
self.drv.adapter, self.inst, force_immediate=False, timeout=500)
@mock.patch('nova_powervm.virt.powervm.driver.'
'PowerVMDriver._get_block_device_info')
@mock.patch('nova_powervm.virt.powervm.driver.PowerVMDriver._destroy')
def test_confirm_migration_diff_host(self, mock_destroy):
def test_confirm_migration_diff_host(self, mock_destroy,
mock_block_device_info):
mock_mig = mock.Mock(source_compute='host1', dest_compute='host2')
self.drv.confirm_migration('context', mock_mig, self.lpm_inst,
'network_info')
mock_destroy.assert_called_once_with(
'context', self.lpm_inst, block_device_info=None,
'context', self.lpm_inst, mock_block_device_info.return_value,
destroy_disks=False, shutdown=False)
@mock.patch('nova_powervm.virt.powervm.vm.rename', autospec=True)

View File

@ -1412,7 +1412,8 @@ class PowerVMDriver(driver.ComputeDriver):
# Destroy the old VM.
destroy_disks = not self.disk_dvr.capabilities['shared_storage']
self._destroy(context, instance, block_device_info=None,
block_device_info = self._get_block_device_info(context, instance)
self._destroy(context, instance, block_device_info,
destroy_disks=destroy_disks, shutdown=False)
def finish_revert_migration(self, context, instance, network_info,

View File

@ -18,6 +18,7 @@
import abc
import six
from nova.compute import power_state
from nova import exception
from nova.objects import migrate_data as mig_obj
from oslo_log import log as logging
@ -291,7 +292,9 @@ class LiveMigrationSrc(LiveMigration):
raise exception.MigrationPreCheckError(reason=msg)
# Check if VM is ready for migration
self._check_migration_ready(lpar_w, self.drvr.host_wrapper)
# Skip incase of cold migration
if self.instance.power_state == power_state.RUNNING:
self._check_migration_ready(lpar_w, self.drvr.host_wrapper)
if lpar_w.migration_state != 'Not_Migrating':
msg = (_("Live migration of instance '%(name)s' failed because "