Merge "libvirt: better error for bad live migration flag"

This commit is contained in:
Jenkins 2016-01-09 15:33:21 +00:00 committed by Gerrit Code Review
commit f1da349a4f
2 changed files with 24 additions and 1 deletions

View File

@ -6643,6 +6643,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):

View File

@ -5666,7 +5666,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(