placement/placement/tests/functional/gabbits/allocations-post.yaml

400 lines
12 KiB
YAML

# Test that it possible to POST multiple allocations to /allocations to
# simultaneously make changes, including removing resources for a consumer if
# the allocations are empty.
fixtures:
- APIFixture
defaults:
request_headers:
x-auth-token: admin
accept: application/json
content-type: application/json
openstack-api-version: placement 1.13
tests:
- name: create compute one
POST: /resource_providers
data:
name: compute01
status: 201
- name: rp compute01
desc: provide a reference for later reuse
GET: $LOCATION
- name: create compute two
POST: /resource_providers
data:
name: compute02
status: 201
- name: rp compute02
desc: provide a reference for later reuse
GET: $LOCATION
- name: create shared disk
POST: /resource_providers
data:
name: storage01
status: 201
- name: rp storage01
desc: provide a reference for later reuse
GET: $LOCATION
- name: inventory compute01
PUT: $HISTORY['rp compute01'].$RESPONSE['links[?rel = "inventories"].href']
data:
resource_provider_generation: 0
inventories:
VCPU:
total: 16
MEMORY_MB:
total: 2048
- name: inventory compute02
PUT: $HISTORY['rp compute02'].$RESPONSE['links[?rel = "inventories"].href']
data:
resource_provider_generation: 0
inventories:
VCPU:
total: 16
MEMORY_MB:
total: 2048
- name: inventory storage01
PUT: $HISTORY['rp storage01'].$RESPONSE['links[?rel = "inventories"].href']
data:
resource_provider_generation: 0
inventories:
DISK_GB:
total: 4096
- name: confirm only POST
GET: /allocations
status: 405
response_headers:
allow: POST
- name: 404 on older 1.12 microversion post
POST: /allocations
request_headers:
openstack-api-version: placement 1.12
status: 404
- name: post allocations two consumers
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 5
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
$ENVIRON['MIGRATION_UUID']:
allocations:
$HISTORY['rp compute01'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
status: 204
- name: get allocations for instance consumer
GET: /allocations/$ENVIRON['INSTANCE_UUID']
request_headers:
# We want to inspect the consumer generations...
openstack-api-version: placement 1.28
response_json_paths:
$.allocations["$HISTORY['rp compute02'].$RESPONSE['uuid']"].resources[MEMORY_MB]: 1024
$.allocations["$HISTORY['rp compute02'].$RESPONSE['uuid']"].resources[VCPU]: 2
$.allocations["$HISTORY['rp storage01'].$RESPONSE['uuid']"].resources[DISK_GB]: 5
$.consumer_generation: 1
$.project_id: $ENVIRON['PROJECT_ID']
$.user_id: $ENVIRON['USER_ID']
- name: get allocations for migration consumer
GET: /allocations/$ENVIRON['MIGRATION_UUID']
request_headers:
# We want to inspect the consumer generations...
openstack-api-version: placement 1.28
response_json_paths:
$.allocations["$HISTORY['rp compute01'].$RESPONSE['uuid']"].resources[MEMORY_MB]: 1024
$.allocations["$HISTORY['rp compute01'].$RESPONSE['uuid']"].resources[VCPU]: 2
$.consumer_generation: 1
$.project_id: $ENVIRON['PROJECT_ID']
$.user_id: $ENVIRON['USER_ID']
- name: confirm usages
GET: /usages?project_id=$ENVIRON['PROJECT_ID']
response_json_paths:
$.usages.DISK_GB: 5
$.usages.VCPU: 4
$.usages.MEMORY_MB: 2048
- name: clear and set allocations
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 5
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
$ENVIRON['MIGRATION_UUID']:
allocations: {}
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
status: 204
- name: confirm usages after clear
GET: /usages?project_id=$ENVIRON['PROJECT_ID']
response_json_paths:
$.usages.DISK_GB: 5
$.usages.VCPU: 2
$.usages.MEMORY_MB: 1024
- name: post allocations two users
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 5
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
# We must use a fresh consumer id with the alternate project id info.
# A previously seen consumer id will be assumed to always have the same
# project and user.
$ENVIRON['CONSUMER_UUID']:
allocations:
$HISTORY['rp compute01'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
project_id: $ENVIRON['PROJECT_ID_ALT']
user_id: $ENVIRON['USER_ID_ALT']
status: 204
- name: confirm usages user a
GET: /usages?project_id=$ENVIRON['PROJECT_ID']
response_json_paths:
$.usages.`len`: 3
$.usages.DISK_GB: 5
$.usages.VCPU: 2
$.usages.MEMORY_MB: 1024
- name: confirm usages user b
GET: /usages?project_id=$ENVIRON['PROJECT_ID_ALT']
response_json_paths:
$.usages.`len`: 2
$.usages.VCPU: 2
$.usages.MEMORY_MB: 1024
- name: fail allocations over capacity
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 5
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
$ENVIRON['CONSUMER_UUID']:
allocations:
$HISTORY['rp compute01'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 2049
VCPU: 2
project_id: $ENVIRON['PROJECT_ID_ALT']
user_id: $ENVIRON['USER_ID_ALT']
status: 409
response_strings:
- The requested amount would exceed the capacity
- name: fail allocations deep schema violate
desc: no schema yet
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
cow: moo
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
status: 400
- name: fail allocations shallow schema violate
desc: no schema yet
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
cow: moo
status: 400
- name: fail resource provider not exist
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
# this rp does not exist
'c42def7b-498b-4442-9502-c7970b14bea4':
resources:
MEMORY_MB: 1024
VCPU: 2
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 5
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
status: 400
response_strings:
- that does not exist
- name: fail resource class not in inventory
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
PCI_DEVICE: 1
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 5
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
status: 409
response_strings:
- "Inventory for 'PCI_DEVICE' on"
- name: fail resource class not exist
POST: /allocations
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
CUSTOM_PONY: 1
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 5
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
status: 400
response_strings:
- No such resource class CUSTOM_PONY
- name: fail missing consumer generation >= 1.28
POST: /allocations
request_headers:
openstack-api-version: placement 1.28
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 2
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 5
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
$ENVIRON['CONSUMER_UUID']:
allocations:
$HISTORY['rp compute01'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 2049
VCPU: 2
project_id: $ENVIRON['PROJECT_ID_ALT']
user_id: $ENVIRON['USER_ID_ALT']
status: 400
response_strings:
- JSON does not validate
- name: fail incorrect consumer generation >= 1.28
POST: /allocations
request_headers:
openstack-api-version: placement 1.28
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 1
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 4
consumer_generation: 1
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
$ENVIRON['CONSUMER_UUID']:
allocations:
$HISTORY['rp compute01'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 1
consumer_generation: 1
project_id: $ENVIRON['PROJECT_ID_ALT']
user_id: $ENVIRON['USER_ID_ALT']
status: 409
response_strings:
- consumer generation conflict - expected 3 but got 1
- name: change allocations for existing providers >= 1.28
POST: /allocations
request_headers:
openstack-api-version: placement 1.28
data:
$ENVIRON['INSTANCE_UUID']:
allocations:
$HISTORY['rp compute02'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 1
$HISTORY['rp storage01'].$RESPONSE['uuid']:
resources:
DISK_GB: 4
consumer_generation: 3
project_id: $ENVIRON['PROJECT_ID']
user_id: $ENVIRON['USER_ID']
$ENVIRON['CONSUMER_UUID']:
allocations:
$HISTORY['rp compute01'].$RESPONSE['uuid']:
resources:
MEMORY_MB: 1024
VCPU: 1
consumer_generation: 1
project_id: $ENVIRON['PROJECT_ID_ALT']
user_id: $ENVIRON['USER_ID_ALT']
status: 204