400 lines
12 KiB
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
|