Comment 24 for bug 1607714

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to nova (stable/ocata)

Reviewed: https://review.openstack.org/448189
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=02ad4f862a7c5b51100288b6b22f15087788d8d7
Submitter: Jenkins
Branch: stable/ocata

commit 02ad4f862a7c5b51100288b6b22f15087788d8d7
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

    Change-Id: Ic04aad8923ea2edf1d16e32c208cd41fdf898834
    (cherry picked from commit a3b3e8d8314b0cedc2604be509f0f4d523a35ed5)