We first call the virt driver to detach the interface (which is async) and then update the port telling neutron that the device_id is '', which is what tempest is waiting for.
So if we add a poll / retry in the libvirt guest module for the detach, we can delay the port update which tempest is waiting for and we should be good.
Nevermind, it's the compute manager in nova that's telling neutron that the port is no longer bound:
https:/ /github. com/openstack/ nova/blob/ fdf3328107e53f1 c5578c2e4dfbad7 8d832b01c6/ nova/compute/ manager. py#L4990
We first call the virt driver to detach the interface (which is async) and then update the port telling neutron that the device_id is '', which is what tempest is waiting for.
So if we add a poll / retry in the libvirt guest module for the detach, we can delay the port update which tempest is waiting for and we should be good.