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
This commit is contained in:
Matt Riedemann 2018-08-22 10:43:40 -04:00
parent 17b69575bc
commit 4817165fc5
2 changed files with 2 additions and 3 deletions

View File

@ -18670,7 +18670,7 @@ class LibvirtDriverTestCase(test.NoDBTestCase, TraitsComparisonMixin):
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():

View File

@ -8482,8 +8482,7 @@ class LibvirtDriver(driver.ComputeDriver):
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(