summaryrefslogtreecommitdiff
path: root/nova
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-04-29 13:17:21 +0000
committerGerrit Code Review <review@openstack.org>2022-04-29 13:17:21 +0000
commita58c32a56c10a7faebe0df538f2cb3b743c48e93 (patch)
tree993c9451f284276ad1e5a0f5a4cded9155ba8419 /nova
parent17755cc4380d0a9811cfc0797d41f02cc73d365f (diff)
parentaa1b0a7ccb1fcf3644784125bfff6950993e1697 (diff)
downloadnova-a58c32a56c10a7faebe0df538f2cb3b743c48e93.tar.gz
Merge "Fix LM rollback w/o multi port bindings extension"
Diffstat (limited to 'nova')
-rw-r--r--nova/tests/functional/regressions/test_bug_1888395.py13
-rw-r--r--nova/virt/libvirt/driver.py11
2 files changed, 11 insertions, 13 deletions
diff --git a/nova/tests/functional/regressions/test_bug_1888395.py b/nova/tests/functional/regressions/test_bug_1888395.py
index 8f2e2a0eeb..c50b78e2f6 100644
--- a/nova/tests/functional/regressions/test_bug_1888395.py
+++ b/nova/tests/functional/regressions/test_bug_1888395.py
@@ -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')
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 28e1bf49ac..34526abc38 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -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,