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',
|
||||
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,
|
||||
create=True)
|
||||
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(',')
|
||||
else:
|
||||
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)
|
||||
|
||||
pre_live_migrate_data = (migrate_data or {}).get(
|
||||
|
|
Loading…
Reference in New Issue