commit 1e66b034eb2c7176d9e163d7944b04d1928e148f
Author: Matt Riedemann <email address hidden>
Date: Thu Feb 9 15:54:41 2017 -0500
libvirt: wait for interface detach from the guest
The test_reassign_port_between_servers test in Tempest creates
a port in neutron and two servers. It attaches the port to the
first server and then quickly detaches it and waits for the
port.device_id to be unbound from the server. Then it repeats
that for the second server.
The interface detach from the guest is asynchronous and happens
before nova unbinds the port, so there is a race where the port's
device_id is unset but the interface is still on the first guest
when we try to attach to the second guest, which fails.
This is a latent bug, but apparently has been tickled by the
move to our neutron CI jobs to use ubuntu xenial nodes.
The fix is to add a detach and retry loop on the interface detach
on the guest so that we can wait until the interface is gone
from the guest before nova unbinds the port in neutron, which is
what the Tempest test is waiting for. Then the device should be
available for attaching to the second guest.
This is similar to what we do with detaching volumes.
Reviewed: https:/ /review. openstack. org/470349 /git.openstack. org/cgit/ openstack/ nova/commit/ ?id=1e66b034eb2 c7176d9e163d794 4b04d1928e148f
Committed: https:/
Submitter: Jenkins
Branch: stable/newton
commit 1e66b034eb2c717 6d9e163d7944b04 d1928e148f
Author: Matt Riedemann <email address hidden>
Date: Thu Feb 9 15:54:41 2017 -0500
libvirt: wait for interface detach from the guest
The test_reassign_ port_between_ servers test in Tempest creates
a port in neutron and two servers. It attaches the port to the
first server and then quickly detaches it and waits for the
port.device_id to be unbound from the server. Then it repeats
that for the second server.
The interface detach from the guest is asynchronous and happens
before nova unbinds the port, so there is a race where the port's
device_id is unset but the interface is still on the first guest
when we try to attach to the second guest, which fails.
This is a latent bug, but apparently has been tickled by the
move to our neutron CI jobs to use ubuntu xenial nodes.
The fix is to add a detach and retry loop on the interface detach
on the guest so that we can wait until the interface is gone
from the guest before nova unbinds the port in neutron, which is
what the Tempest test is waiting for. Then the device should be
available for attaching to the second guest.
This is similar to what we do with detaching volumes.
Closes-Bug: #1607714
Conflicts:
nova/ tests/unit/ virt/libvirt/ test_driver. py
NOTE(mriedem): The conflict is due to change c51994d12ce9c67 74d5f956232f950 not being in Newton.
I5c461a8242
Change-Id: Ic04aad8923ea2e df1d16e32c208cd 41fdf898834 dc2604be509f0f4 d523a35ed5) 7f91f92d746916b bf17d1143c)
(cherry picked from commit a3b3e8d8314b0ce
(cherry picked from commit ca0a46e36615f22