Comment 10 for bug 1645175

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

Reviewed: https://review.openstack.org/607614
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=cbf3b7c70331fc2a7e7fcf3fa2551d806000b967
Submitter: Zuul
Branch: stable/ocata

commit cbf3b7c70331fc2a7e7fcf3fa2551d806000b967
Author: Kevin_Zheng <email address hidden>
Date: Mon Nov 28 16:12:51 2016 +0800

    Don't delete neutron port when attach failed

    Currently, when attaching neutron pre-existing
    port to an instance, if the attach failed, it
    will also be deleted in Neutron side due to
    bad judgement of the who created the port by
    reading not up-to-date info_cache.

    The workflow starts at:
    https://github.com/openstack/nova/blob/9ed0d6114/nova/network/neutronv2/api.py#L881
    ordered_ports and preexisting_port_ids are
    the same when attaching a preexisting port
    to an instance and it calls
    https://github.com/openstack/nova/blob/9ed0d6114/nova/network/base_api.py#L246
    which calls back into the neutronv2 api code
    https://github.com/openstack/nova/blob/9ed0d6114/nova/network/neutronv2/api.py#L1274
    and at this point, compute_utils.refresh_info_cache_for_instance(context,
    instance) won't have the newly attached port in it(see
    debug log: http://paste.openstack.org/show/613232/)
    because _build_network_info_model() is going to
    process it. The instance obj in memoryt with old
    info_cache will be used at rollback process and
    causing the miss-judging.

    This patch fixed it by updating instance.info_cache
    to the new ic after it is created.

     Conflicts:
     doc/notification_samples/instance-shutdown-end.json

    Co-Authored-By: <email address hidden>
    Change-Id: Ib323b74d4ea1e874b476ab5addfc6bc79cb7c751
    closes-bug: #1645175
    (cherry picked from commit 115cf068a6d48cdf8b0d20a3c5a779bb8120aa9b)