nova/doc/notification_samples
Kevin_Zheng 115cf068a6 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.

Co-Authored-By: huangtianhua@huawei.com
Change-Id: Ib323b74d4ea1e874b476ab5addfc6bc79cb7c751
closes-bug: #1645175
2017-07-03 15:40:12 +08:00
..
aggregate-create-end.json handle uninited fields in notification payload 2017-03-03 15:34:41 +01:00
aggregate-create-start.json handle uninited fields in notification payload 2017-03-03 15:34:41 +01:00
aggregate-delete-end.json handle uninited fields in notification payload 2017-03-03 15:34:41 +01:00
aggregate-delete-start.json handle uninited fields in notification payload 2017-03-03 15:34:41 +01:00
compute-exception.json Aggregate create and destroy work against API db 2016-08-01 08:22:08 -07:00
flavor-create.json handle uninited fields in notification payload 2017-03-03 15:34:41 +01:00
flavor-delete.json Don't lazy-load flavor.projects during destroy() 2017-05-02 13:45:03 -04:00
flavor-update.json handle uninited fields in notification payload 2017-03-03 15:34:41 +01:00
instance-create-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-create-error.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-create-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-delete-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-delete-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-live_migration_rollback-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-live_migration_rollback-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-pause-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-pause-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-power_off-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-power_off-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-power_on-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-power_on-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-reboot-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-reboot-error.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-reboot-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-rebuild-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-rebuild-error.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-rebuild-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-resize_finish-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-resize_finish-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-resize-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-resize-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-restore-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-restore-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-resume-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-resume-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-shelve_offload-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-shelve_offload-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-shelve-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-shelve-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-shutdown-end.json Don't delete neutron port when attach failed 2017-07-03 15:40:12 +08:00
instance-shutdown-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-snapshot-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-snapshot-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-soft_delete-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-soft_delete-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-suspend-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-suspend-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-unpause-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-unpause-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-unshelve-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-unshelve-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-update-tags-action.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-update.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-volume_attach-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-volume_attach-error.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-volume_attach-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-volume_detach-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-volume_detach-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-volume_swap-end.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-volume_swap-error.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
instance-volume_swap-start.json Add key_name field to InstancePayload 2017-06-28 11:32:21 +02:00
keypair-create-end.json Transform keypair.create notification 2017-06-14 07:28:47 +02:00
keypair-create-start.json Transform keypair.create notification 2017-06-14 07:28:47 +02:00
service-update.json Plumbing for tagged nic attachment 2017-06-23 20:06:42 +03:00