diff options
author | Zuul <zuul@review.opendev.org> | 2022-04-29 13:17:21 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-04-29 13:17:21 +0000 |
commit | a58c32a56c10a7faebe0df538f2cb3b743c48e93 (patch) | |
tree | 993c9451f284276ad1e5a0f5a4cded9155ba8419 /nova | |
parent | 17755cc4380d0a9811cfc0797d41f02cc73d365f (diff) | |
parent | aa1b0a7ccb1fcf3644784125bfff6950993e1697 (diff) | |
download | nova-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.py | 13 | ||||
-rw-r--r-- | nova/virt/libvirt/driver.py | 11 |
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, |