libvirt: add migration flag VIR_MIGRATE_PERSIST_DEST
This commit adds in the default migration flags VIR_MIGRATE_PERSIST_DEST which ensures that the domain XML migrated is going to be set in libvird on destination node. Change-Id: I7878e3cd227ed2cf6eb7c001e57c5fc830c0ec18
This commit is contained in:
parent
0dc1bc3eb9
commit
a6053dd608
@ -1042,18 +1042,22 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
def test_parse_live_migration_flags_default(self):
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE))
|
||||
|
||||
def test_parse_live_migration_flags(self):
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE))
|
||||
|
||||
def test_parse_block_migration_flags_default(self):
|
||||
self._do_test_parse_migration_flags(
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC))
|
||||
@ -1061,6 +1065,7 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
def test_parse_block_migration_flags(self):
|
||||
self._do_test_parse_migration_flags(
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC))
|
||||
@ -1069,8 +1074,10 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
self.flags(virt_type='xen', group='libvirt')
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC))
|
||||
|
||||
@ -1080,10 +1087,12 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_TUNNELLED),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_TUNNELLED))
|
||||
|
||||
@ -1093,10 +1102,12 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_TUNNELLED),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_TUNNELLED))
|
||||
|
||||
@ -1105,10 +1116,12 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
self.flags(live_migration_permit_post_copy=True, group='libvirt')
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_POSTCOPY),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC |
|
||||
@ -1119,10 +1132,12 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
self.flags(live_migration_permit_auto_converge=True, group='libvirt')
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_AUTO_CONVERGE),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC |
|
||||
@ -1135,10 +1150,12 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
self.flags(live_migration_permit_post_copy=True, group='libvirt')
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_POSTCOPY),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC |
|
||||
@ -1159,10 +1176,12 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_AUTO_CONVERGE),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC |
|
||||
@ -1174,9 +1193,11 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC))
|
||||
@ -1186,9 +1207,11 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
self.flags(live_migration_permit_auto_converge=True, group='libvirt')
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC))
|
||||
@ -1196,9 +1219,11 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
def test_live_migration_permit_postcopy_false(self):
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC))
|
||||
@ -1206,9 +1231,11 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
def test_live_migration_permit_autoconverge_false(self):
|
||||
self._do_test_parse_migration_flags(
|
||||
lm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE),
|
||||
bm_expected=(libvirt_driver.libvirt.VIR_MIGRATE_UNDEFINE_SOURCE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PERSIST_DEST |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_PEER2PEER |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_LIVE |
|
||||
libvirt_driver.libvirt.VIR_MIGRATE_NON_SHARED_INC))
|
||||
@ -8034,7 +8061,7 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
||||
True, migrate_data, guest, disk_paths)
|
||||
mock_migrateToURI3.assert_called_once_with(
|
||||
drvr._live_migration_uri('dest'),
|
||||
params=params, flags=151)
|
||||
params=params, flags=159)
|
||||
|
||||
def test_live_migration_raises_exception(self):
|
||||
# Confirms recover method is called when exceptions are raised.
|
||||
|
@ -550,6 +550,10 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
# instance will remain defined on the source host
|
||||
migration_flags |= libvirt.VIR_MIGRATE_UNDEFINE_SOURCE
|
||||
|
||||
# Adding VIR_MIGRATE_PERSIST_DEST to persist the VM on the
|
||||
# destination host
|
||||
migration_flags |= libvirt.VIR_MIGRATE_PERSIST_DEST
|
||||
|
||||
live_migration_flags = block_migration_flags = migration_flags
|
||||
|
||||
# Adding VIR_MIGRATE_NON_SHARED_INC, otherwise all block-migrations
|
||||
@ -6746,6 +6750,14 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
"""
|
||||
guest = self._host.get_guest(instance)
|
||||
|
||||
# TODO(sahid): In Ocata we have added the migration flag
|
||||
# VIR_MIGRATE_PERSIST_DEST to libvirt, which means that the
|
||||
# guest XML is going to be set in libvirtd on destination node
|
||||
# automatically. However we do not remove that part until P*
|
||||
# because during an upgrade, to ensure migrating instances
|
||||
# from node running Newton is still going to set the guest XML
|
||||
# in libvirtd on destination node.
|
||||
|
||||
# Make sure we define the migrated instance in libvirt
|
||||
xml = guest.get_xml_desc()
|
||||
self._host.write_instance_config(xml)
|
||||
|
Loading…
x
Reference in New Issue
Block a user