Revert "libvirt: move graphic/serial consoles check to pre_live_migration"
This reverts the key bits of commit
917afd2831
.
Change-Id: I0425b254595371eaa618b10d8c81520b0f6018a5
Related-Bug: #1615613
This commit is contained in:
parent
dee72f44fe
commit
2ba8fd4290
|
@ -6990,26 +6990,6 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
|||
self.assertIn('is_shared_block_storage', ret)
|
||||
self.assertIn('is_shared_instance_path', ret)
|
||||
|
||||
@mock.patch.object(fakelibvirt, 'VIR_DOMAIN_XML_MIGRATABLE', None,
|
||||
create=True)
|
||||
def test_check_can_live_migrate_source_serial_fails(self):
|
||||
self.flags(enabled=True, group="serial_console")
|
||||
instance = objects.Instance(**self.test_instance)
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
self.assertRaises(exception.MigrationError,
|
||||
drvr.check_can_live_migrate_source,
|
||||
self.context, instance, {})
|
||||
|
||||
@mock.patch.object(fakelibvirt, 'VIR_DOMAIN_XML_MIGRATABLE', None,
|
||||
create=True)
|
||||
def test_check_can_live_migrate_source_graphics_fails(self):
|
||||
self.flags(enabled=True, vncserver_listen='1.2.3.4', group='vnc')
|
||||
instance = objects.Instance(**self.test_instance)
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
self.assertRaises(exception.MigrationError,
|
||||
drvr.check_can_live_migrate_source,
|
||||
self.context, instance, {})
|
||||
|
||||
def test_check_can_live_migrate_source_shared_block_storage(self):
|
||||
instance, dest_check_data, drvr = self._mock_can_live_migrate_source(
|
||||
is_shared_block_storage=True)
|
||||
|
@ -7808,6 +7788,24 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
|||
drvr._live_migration_uri('dest'),
|
||||
dxml=target_xml, flags=mock.ANY, bandwidth=bandwidth)
|
||||
|
||||
@mock.patch.object(fakelibvirt, 'VIR_DOMAIN_XML_MIGRATABLE', None,
|
||||
create=True)
|
||||
def test_live_migration_fails_with_serial_console_without_migratable(self):
|
||||
self.compute = importutils.import_object(CONF.compute_manager)
|
||||
instance_ref = self.test_instance
|
||||
|
||||
CONF.set_override("enabled", True, "serial_console")
|
||||
dom = fakelibvirt.virDomain
|
||||
migrate_data = objects.LibvirtLiveMigrateData(
|
||||
serial_listen_addr='', target_connect_addr=None,
|
||||
block_migration=False)
|
||||
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
self.assertRaises(exception.MigrationError,
|
||||
drvr._live_migration_operation,
|
||||
self.context, instance_ref, 'dest',
|
||||
False, migrate_data, dom, [])
|
||||
|
||||
@mock.patch.object(fakelibvirt, 'VIR_DOMAIN_XML_MIGRATABLE', None,
|
||||
create=True)
|
||||
def test_live_migration_uses_migrateToURI_without_migratable_flag(self):
|
||||
|
@ -7950,6 +7948,35 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
|||
drvr._live_migration_uri('dest'),
|
||||
params=params, flags=151)
|
||||
|
||||
@mock.patch.object(fakelibvirt, 'VIR_DOMAIN_XML_MIGRATABLE', None,
|
||||
create=True)
|
||||
def test_live_migration_fails_without_migratable_flag_or_0_addr(self):
|
||||
self.flags(enabled=True, vncserver_listen='1.2.3.4', group='vnc')
|
||||
self.compute = importutils.import_object(CONF.compute_manager)
|
||||
instance_dict = dict(self.test_instance)
|
||||
instance_dict.update({'host': 'fake',
|
||||
'power_state': power_state.RUNNING,
|
||||
'vm_state': vm_states.ACTIVE})
|
||||
instance_ref = objects.Instance(**instance_dict)
|
||||
|
||||
# Preparing mocks
|
||||
vdmock = self.mox.CreateMock(fakelibvirt.virDomain)
|
||||
self.mox.StubOutWithMock(vdmock, "migrateToURI")
|
||||
|
||||
# start test
|
||||
migrate_data = objects.LibvirtLiveMigrateData(
|
||||
graphics_listen_addr_vnc='1.2.3.4',
|
||||
graphics_listen_addr_spice='1.2.3.4',
|
||||
serial_listen_addr='127.0.0.1',
|
||||
target_connect_addr=None,
|
||||
block_migration=False)
|
||||
self.mox.ReplayAll()
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
self.assertRaises(exception.MigrationError,
|
||||
drvr._live_migration_operation,
|
||||
self.context, instance_ref, 'dest',
|
||||
False, migrate_data, vdmock, [])
|
||||
|
||||
def test_live_migration_raises_exception(self):
|
||||
# Confirms recover method is called when exceptions are raised.
|
||||
# Preparing data
|
||||
|
|
|
@ -5409,16 +5409,6 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
md_obj.from_legacy_dict(dest_check_data)
|
||||
dest_check_data = md_obj
|
||||
|
||||
listen_addrs = libvirt_migrate.graphics_listen_addrs(
|
||||
dest_check_data)
|
||||
migratable_flag = self._host.is_migratable_xml_flag()
|
||||
if not migratable_flag or not listen_addrs:
|
||||
# In this context want to ensure we do not have to migrate
|
||||
# graphic or serial consoles since we can't update guest's
|
||||
# domain XML to make it handle destination host.
|
||||
self._check_graphics_addresses_can_live_migrate(listen_addrs)
|
||||
self._verify_serial_console_is_disabled()
|
||||
|
||||
# Checking shared storage connectivity
|
||||
# if block migration, instances_paths should not be on shared storage.
|
||||
source = CONF.host
|
||||
|
@ -5834,6 +5824,17 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
|
||||
listen_addrs = libvirt_migrate.graphics_listen_addrs(
|
||||
migrate_data)
|
||||
|
||||
migratable_flag = self._host.is_migratable_xml_flag()
|
||||
if not migratable_flag or not listen_addrs:
|
||||
# In this context want to ensure we do not have to migrate
|
||||
# graphic or serial consoles since we can't update guest's
|
||||
# domain XML to make it handle destination host.
|
||||
# TODO(alexs-h): These checks could be moved to the
|
||||
# check_can_live_migrate_destination/source phase
|
||||
self._check_graphics_addresses_can_live_migrate(listen_addrs)
|
||||
self._verify_serial_console_is_disabled()
|
||||
|
||||
if ('target_connect_addr' in migrate_data and
|
||||
migrate_data.target_connect_addr is not None):
|
||||
dest = migrate_data.target_connect_addr
|
||||
|
|
Loading…
Reference in New Issue