6f1a1f5e8e
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 |
||
---|---|---|
.. | ||
api_samples | ||
ext | ||
notification_samples | ||
source | ||
test | ||
README.rst | ||
requirements.txt |
OpenStack Nova Documentation README
Both contributor developer documentation and REST API documentation are sourced here.
Contributor developer docs are built to: https://docs.openstack.org/nova/latest/
API guide docs are built to: https://developer.openstack.org/api-guide/compute/
For more details, see the "Building the Documentation" section of doc/source/contributor/development-environment.rst.