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:
John Garbutt 2016-09-12 13:50:36 +01:00
parent dee72f44fe
commit 2ba8fd4290
2 changed files with 58 additions and 30 deletions

View File

@ -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

View File

@ -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