[openstack-dev] [nova] vif unplugging when deleting instance while resizing

Chris Friesen chris.friesen at windriver.com
Fri Oct 30 21:11:09 UTC 2015


Hi,

I do have a situation where an instance was deleted while resizing, and there 
are vswitch ports remaining in use when they shouldn't be.

I suspect that it's related to bug 1392527. 
(https://bugs.launchpad.net/nova/+bug/1392527)  That bug was involved a scenario 
where we trigger a resize or cold migration, and while it's in progress we 
delete the instance.

In the fix an audit was added to clean up the instance files, but I'm wondering 
if we forgot to clean up the networking.

 From what I can tell, in stable/kilo with neutron when doing a resize we will 
only unplug the vifs on the source side when confirming the resize.  The code 
path looks like:

compute.manager.ComputeManager.confirm_resize()
     compute.manager.ComputeManager._confirm_resize()
         virt.libvirt.driver.LibvirtDriver.confirm_migration()
             virt.libvirt.driver.LibvirtDriver._cleanup_resize()
                 virt.libvirt.driver.LibvirtDriver.unplug_vifs()

I'm concerned that if we delete the instance before the vm_state hits RESIZED, 
then we will not ever confirm the resize on the host.  (I think this could 
happen since the instance host is set to the destination in 
compute.manager.ComputeManager.resize_instance(), but the vm_state isn't set to 
RESIZED until compute.manager.ComputeManager._finish_resize().

Then the audit from bug 1392527 runs and cleans up the instance files left on 
the host, but we're left with the vswitch port still in use because nobody 
unplugged it.

Can anyone poke holes in the description above?

The above is all supposition, I haven't reproduced it or gone through it in 
enough detail to be certain that this is what's happening.  That's the next step.

Chris



More information about the OpenStack-dev mailing list