nova/nova
Balazs Gibizer 6f1a1f5e8e Consumer gen support for delete instance allocations
The placement API version 1.28 introduced consumer generation as a way
to make updating allocation safe even if it is done from multiple
places.

This patch changes delete_allocation_for_instance to use PUT
/allocations instead of DELETE /allocations to benefit from the consumer
generation handling.

In this patch the report client will GET the current allocation of the
instance including the consumer generation and then try to PUT an empty
allocation with that generation. If this fails due to a consumer
generation conflict, meaning something modified the allocation of the
instance in between GET and PUT then the report client will raise
AllocationDeleteFailed exception. This will cause that the instance
goes to ERROR state.

This patch only detects a small portion of possible cases when
allocation is modified outside of the delete code path. The rest can
only be detected if nova would cache at least the consumer generation
of the instance.

To be able to put the instance state to ERROR the instance.destroy()
call is moved to the end to of the deletion call path. To keep the
instance.delete.end notification behavior consistent with this move
(e.g. deleted_at field is filled) the notification sending needed to
be moved too.

Blueprint: use-nested-allocation-candidates
Change-Id: I77f34788dd7ab8fdf60d668a4f76452e03cf9888
2018-09-25 11:16:37 +02:00
..
api Consumer gen support for delete instance allocations 2018-09-25 11:16:37 +02:00
cells Add instance action record for snapshot instances 2017-12-11 17:46:38 +08:00
cmd nova-status - don't count deleted compute_nodes 2018-09-22 00:59:10 +00:00
common
compute Consumer gen support for delete instance allocations 2018-09-25 11:16:37 +02:00
conductor Optimize AZ lookup during schedule_and_build_instances 2018-08-03 17:26:00 -04:00
conf Merge "Remove deprecated hide_server_address_states option" 2018-09-21 13:58:57 +00:00
console Use nova.db.api directly 2018-07-10 14:56:27 +00:00
consoleauth
db Merge "Delete instance_id_mappings record in instance_destroy" 2018-09-21 12:59:54 +00:00
hacking Use nova.db.api directly 2018-07-10 14:56:27 +00:00
image Implement certificate_utils 2018-06-12 14:44:32 -04:00
ipv6
keymgr
locale Imported Translations from Zanata 2018-09-23 06:53:32 +00:00
network Merge "Explicitly fail if trying to attach SR-IOV port" 2018-09-18 20:13:52 +00:00
notifications Transform libvirt.error notification 2018-09-18 07:06:09 +00:00
objects Merge "Transform libvirt.error notification" 2018-09-24 13:56:53 +00:00
pci network: update pci request spec to handle trusted tags 2018-05-31 13:55:40 -04:00
policies Merge "Allow ability for non admin users to use all filters on server list." 2018-09-23 05:17:23 +00:00
privsep privsep: Handle ENOENT when checking for direct IO support 2018-08-27 17:03:46 +01:00
scheduler Consumer gen support for delete instance allocations 2018-09-25 11:16:37 +02:00
servicegroup Fix service list for disabled compute using MC driver 2018-08-14 14:11:22 +08:00
tests Consumer gen support for delete instance allocations 2018-09-25 11:16:37 +02:00
virt Merge "Transform libvirt.error notification" 2018-09-24 13:56:53 +00:00
vnc
volume Remove unnecessary parameters from create volume API 2018-06-12 12:06:41 +05:30
__init__.py
availability_zones.py
baserpc.py
block_device.py Add uuid column to BlockDeviceMapping 2017-12-17 14:28:35 +00:00
cache_utils.py
config.py Configure placement DB context manager for nova-manage/status 2018-09-05 10:29:48 -04:00
context.py Stash the cell uuid on the context when targeting 2018-08-22 13:29:29 -07:00
crypto.py Convert certificate generation to processutils. 2018-05-02 19:18:41 +10:00
debugger.py
exception.py Consumer gen support for delete instance allocations 2018-09-25 11:16:37 +02:00
exception_wrapper.py Add full traceback to ExceptionPayload in versioned notifications 2018-06-19 16:46:46 +08:00
filters.py
hooks.py
i18n.py correct referenced url in comments 2018-01-18 09:16:37 +08:00
loadables.py
manager.py conf: Remove 'db_driver' config opt 2018-03-16 17:23:16 +00:00
policy.py
profiler.py
quota.py Merge "Avoid joins in _server_group_count_members_by_user" 2018-08-07 23:16:06 +00:00
rc_fields.py Nix unused raise_if_custom_resource_class_pre_v1_1 2018-06-18 19:52:45 +00:00
rpc.py Use oslo.messaging per-call monitoring 2018-06-11 14:44:10 -07:00
safe_utils.py
service.py Move conductor wait_until_ready() delay before manager init 2018-08-31 12:50:10 -07:00
service_auth.py Fix NoneType error when [service_user] is misconfigured 2017-11-28 12:22:30 -06:00
test.py Use uuidsentinel from oslo.utils 2018-09-05 09:08:54 -05:00
utils.py Merge "Use check_string_length from oslo_utils" 2018-09-12 21:01:14 +00:00
version.py
weights.py
wsgi.py Refactor WSGI apps and utils to limit imports 2018-03-06 22:05:12 +00:00