Merge "Add placement.concurrent_udpate to generation pre-checks"

This commit is contained in:
Zuul 2018-08-01 12:19:49 +00:00 committed by Gerrit Code Review
commit b0570d8ddd
8 changed files with 25 additions and 6 deletions
nova
api/openstack/placement
tests/functional/api/openstack/placement/gabbits

@ -122,7 +122,8 @@ def set_aggregates(req):
if resource_provider.generation != rp_gen:
raise webob.exc.HTTPConflict(
_("Resource provider's generation already changed. Please "
"update the generation and try again."))
"update the generation and try again."),
comment=errors.CONCURRENT_UPDATE)
aggregate_uuids = data['aggregates']
else:
aggregate_uuids = data

@ -331,7 +331,8 @@ def set_inventories(req):
data = _extract_inventories(req.body, schema.PUT_INVENTORY_SCHEMA)
if data['resource_provider_generation'] != resource_provider.generation:
raise webob.exc.HTTPConflict(
_('resource provider generation conflict'))
_('resource provider generation conflict'),
comment=errors.CONCURRENT_UPDATE)
inv_list = []
for res_class, inventory_data in data['inventories'].items():
@ -436,7 +437,8 @@ def update_inventory(req):
data = _extract_inventory(req.body, schema.BASE_INVENTORY_SCHEMA)
if data['resource_provider_generation'] != resource_provider.generation:
raise webob.exc.HTTPConflict(
_('resource provider generation conflict'))
_('resource provider generation conflict'),
comment=errors.CONCURRENT_UPDATE)
inventory = _make_inventory_object(resource_provider,
resource_class,

@ -226,7 +226,8 @@ def update_traits_for_resource_provider(req):
raise webob.exc.HTTPConflict(
_("Resource provider's generation already changed. Please update "
"the generation and try again."),
json_formatter=util.json_error_formatter)
json_formatter=util.json_error_formatter,
comment=errors.CONCURRENT_UPDATE)
trait_objs = rp_obj.TraitList.get_all(
context, filters={'name_in': traits})

@ -639,7 +639,8 @@ def ensure_consumer(ctx, consumer_uuid, project_id, user_id,
{
'expected_gen': consumer.generation,
'got_gen': consumer_generation,
})
},
comment=errors.CONCURRENT_UPDATE)
# NOTE(jaypipes): The user may have specified a different project and
# user external ID than the one that we had for the consumer. If this
# is the case, go ahead and modify the consumer record with the
@ -681,7 +682,8 @@ def ensure_consumer(ctx, consumer_uuid, project_id, user_id,
if consumer_generation is not None:
raise webob.exc.HTTPConflict(
_('consumer generation conflict - '
'expected null but got %s') % consumer_generation)
'expected null but got %s') % consumer_generation,
comment=errors.CONCURRENT_UPDATE)
# No such consumer. This is common for new allocations. Create the
# consumer record
try:

@ -116,6 +116,8 @@ tests:
resource_provider_generation: 0
aggregates: []
status: 409
response_json_paths:
$.errors[0].code: placement.concurrent_update
- name: clear those aggregates
PUT: $LAST_URL

@ -64,6 +64,8 @@ tests:
response_strings:
- consumer generation conflict
- expected null but got 5
response_json_paths:
$.errors[0].code: placement.concurrent_update
- name: new version gen is None no existing
PUT: /allocations/22222222-2222-2222-2222-222222222222
@ -147,6 +149,8 @@ tests:
status: 409
response_strings:
- consumer generation conflict
response_json_paths:
$.errors[0].code: placement.concurrent_update
- name: old version no gen existing
PUT: /allocations/44444444-4444-4444-4444-444444444444

@ -220,6 +220,7 @@ tests:
PUT: $LAST_URL
request_headers:
content-type: application/json
openstack-api-version: placement 1.23
data:
resource_provider_generation: 5
total: 2048
@ -228,6 +229,7 @@ tests:
- resource provider generation conflict
response_json_paths:
$.errors[0].title: Conflict
$.errors[0].code: placement.concurrent_update
- name: modify inventory no such resource class in inventory
PUT: /resource_providers/$ENVIRON['RP_UUID']/inventories/MEMORY_MB
@ -471,6 +473,7 @@ tests:
PUT: /resource_providers/$ENVIRON['RP_UUID']/inventories
request_headers:
content-type: application/json
openstack-api-version: placement 1.23
data:
resource_provider_generation: 99
inventories:
@ -481,6 +484,7 @@ tests:
- resource provider generation conflict
response_json_paths:
$.errors[0].title: Conflict
$.errors[0].code: placement.concurrent_update
- name: put all inventory unknown resource class
PUT: /resource_providers/$ENVIRON['RP_UUID']/inventories

@ -325,6 +325,7 @@ tests:
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
content-type: application/json
openstack-api-version: placement 1.23
status: 409
data:
traits:
@ -332,6 +333,8 @@ tests:
resource_provider_generation: 5
response_strings:
- Resource provider's generation already changed. Please update the generation and try again.
response_json_paths:
$.errors[0].code: placement.concurrent_update
- name: set non existed traits for resource provider
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits