Merge "Fix LM rollback w/o multi port bindings extension"

This commit is contained in:
Zuul 2022-04-29 13:17:21 +00:00 committed by Gerrit Code Review
commit a58c32a56c
2 changed files with 11 additions and 13 deletions

View File

@ -146,12 +146,7 @@ class TestLiveMigrationRollbackWithoutMultiplePortBindings(
self.assertFalse(
self.neutron_api.has_port_binding_extension(self.ctxt))
# FIXME(artom) Until bug 1969980 is fixed, this will fail with a
# NotImplementedError.
self._live_migrate(self.server, migration_expected_state='error',
server_expected_state='ERROR')
server = self.api.get_server(self.server['id'])
self.assertIn(
"NotImplementedError: Cannot load 'vifs' in the base class",
server['fault']['details']
)
# NOTE(artom) The live migration will still fail (we fail it in
# _migrate_stub()), but the server should correctly rollback to ACTIVE.
self._live_migrate(self.server, migration_expected_state='failed',
server_expected_state='ACTIVE')

View File

@ -10410,10 +10410,13 @@ class LibvirtDriver(driver.ComputeDriver):
:param instance: the instance being migrated
:param migrate_date: a LibvirtLiveMigrateData object
"""
network_info = network_model.NetworkInfo(
[vif.source_vif for vif in migrate_data.vifs
if "source_vif" in vif and vif.source_vif])
self._reattach_instance_vifs(context, instance, network_info)
# NOTE(artom) migrate_data.vifs might not be set if our Neutron doesn't
# have the multiple port bindings extension.
if 'vifs' in migrate_data and migrate_data.vifs:
network_info = network_model.NetworkInfo(
[vif.source_vif for vif in migrate_data.vifs
if "source_vif" in vif and vif.source_vif])
self._reattach_instance_vifs(context, instance, network_info)
def rollback_live_migration_at_destination(self, context, instance,
network_info,