From b35b812d468cc306a412bcaa4eaad19855a4a627 Mon Sep 17 00:00:00 2001 From: Matt Riedemann Date: Wed, 22 Aug 2018 10:43:40 -0400 Subject: [PATCH] Wait for network-vif-plugged on resize revert Change Id515137747a4b76e9b7057c95f80c8ae74017519 modified the libvirt driver to not wait for network-vif-plugged events on resize revert, saying that the vifs were never unplugged. That's true for the source host but not the dest host. The ComputeManager.revert_resize method calls driver.destroy and for the libvirt driver, driver.destroy calls cleanup which calls unplug_vifs *on the dest host*. As of change If00736ab36df4a5a3be4f02b0a550e4bcae77b1b, the API will route all events to both the source and dest host while the instance has a migration_context. When revert_resize is done on the dest host, it RPC casts to finish_revert_resize on the source host which calls driver.finish_revert_migration which restarts the guest on the source host and plugs vifs. Therefore, we can wait for the network-vif-plugged event before changing the instance status back to ACTIVE. Change-Id: I9e0cffb889c94713c7f28812918103a5d97cefeb Related-Bug: #1788403 (cherry picked from commit 4817165fc5938a553fafa1a69c6086f9ebe311af) --- nova/tests/unit/virt/libvirt/test_driver.py | 2 +- nova/virt/libvirt/driver.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index d86c1490e1c..b188eb988d3 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -18757,7 +18757,7 @@ def fake_create_domain(context, xml, instance, network_info, vifs_already_plugged=None): self.fake_create_domain_called = True self.assertEqual(powered_on, power_on) - self.assertTrue(vifs_already_plugged) + self.assertFalse(vifs_already_plugged) return mock.MagicMock() def fake_enable_hairpin(): diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 8183704a959..aac6fc810ca 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -8487,8 +8487,7 @@ def finish_revert_migration(self, context, instance, network_info, block_device_info=block_device_info) self._create_domain_and_network(context, xml, instance, network_info, block_device_info=block_device_info, - power_on=power_on, - vifs_already_plugged=True) + power_on=power_on) if power_on: timer = loopingcall.FixedIntervalLoopingCall(