Comment 3 for bug 1522824

Revision history for this message
Oleg Bondarev (obondarev) wrote :

The race is:
 - while shelving vm, libvirt driver deletes vm vifs on original compute;
 - ovs agent needs time to detect devices removal and to report update_device_down to neutron server;
 - meanwhile the test respawns vm on new compute and asks neutron to update vm port's host;
 - by the time neutron server receives update_device_down from ovs agent, vm port is already bound to another host;
 - so neutron server skips port status update in this case - port stays in ACTIVE state;
 - nova only waits for neutron events for non-ACTIVE ports;

I think the fix should be on nova side: wait for network-vif-unplugged when unplugging vifs. Neutron already sends such events when port status is changed form ACTIVE to DOWN.