libvirt: better error for bad live migration flag
Slightly improve the error message we give if the operator configures the live_migration_flag or block_migration_flag config options with an invalid migration flag from: Live Migration failure: 'module' object has no attribute 'VIR_MIGRATE_FOO_BAR' to: Live Migration failure: Unknown libvirt live migration flag 'VIR_MIGRATE_FOO_BAR' Change-Id: I2965b369d529e57e00f8bba615303d1a02c216c2 Signed-off-by: Mark McLoughlin <markmc@redhat.com>
This commit is contained in:
parent
e17198af75
commit
63a132ec41
|
@ -6508,6 +6508,21 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||||
self.context, instance_ref, 'dest',
|
self.context, instance_ref, 'dest',
|
||||||
False, None, dom)
|
False, None, dom)
|
||||||
|
|
||||||
|
def test_live_migration_fails_with_invalid_live_migration_flag(self):
|
||||||
|
self.flags(live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE, "
|
||||||
|
"VIR_MIGRATE_PEER2PEER, "
|
||||||
|
"VIR_MIGRATE_LIVE, "
|
||||||
|
"VIR_MIGRATE_TUNNELLED, "
|
||||||
|
"VIR_MIGRATE_FOO_BAR",
|
||||||
|
group='libvirt')
|
||||||
|
instance_ref = self.test_instance
|
||||||
|
dom = fakelibvirt.virDomain
|
||||||
|
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||||
|
self.assertRaises(exception.Invalid,
|
||||||
|
drvr._live_migration_operation,
|
||||||
|
self.context, instance_ref, 'dest',
|
||||||
|
False, None, dom)
|
||||||
|
|
||||||
@mock.patch.object(fakelibvirt, 'VIR_DOMAIN_XML_MIGRATABLE', None,
|
@mock.patch.object(fakelibvirt, 'VIR_DOMAIN_XML_MIGRATABLE', None,
|
||||||
create=True)
|
create=True)
|
||||||
def test_live_migration_uses_migrateToURI_without_migratable_flag(self):
|
def test_live_migration_uses_migrateToURI_without_migratable_flag(self):
|
||||||
|
|
|
@ -5621,7 +5621,15 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||||
flaglist = CONF.libvirt.block_migration_flag.split(',')
|
flaglist = CONF.libvirt.block_migration_flag.split(',')
|
||||||
else:
|
else:
|
||||||
flaglist = CONF.libvirt.live_migration_flag.split(',')
|
flaglist = CONF.libvirt.live_migration_flag.split(',')
|
||||||
flagvals = [getattr(libvirt, x.strip()) for x in flaglist]
|
|
||||||
|
def getflag(s):
|
||||||
|
try:
|
||||||
|
return getattr(libvirt, s)
|
||||||
|
except AttributeError:
|
||||||
|
msg = _("Unknown libvirt live migration flag '%s'") % s
|
||||||
|
raise exception.Invalid(msg)
|
||||||
|
|
||||||
|
flagvals = [getflag(x.strip()) for x in flaglist]
|
||||||
logical_sum = six.moves.reduce(lambda x, y: x | y, flagvals)
|
logical_sum = six.moves.reduce(lambda x, y: x | y, flagvals)
|
||||||
|
|
||||||
pre_live_migrate_data = (migrate_data or {}).get(
|
pre_live_migrate_data = (migrate_data or {}).get(
|
||||||
|
|
Loading…
Reference in New Issue