701 lines
18 KiB
YAML
701 lines
18 KiB
YAML
fixtures:
|
|
- APIFixture
|
|
|
|
defaults:
|
|
request_headers:
|
|
x-auth-token: admin
|
|
accept: application/json
|
|
|
|
tests:
|
|
- name: inventories for missing provider
|
|
GET: /resource_providers/7260669a-e3d4-4867-aaa7-683e2ab6958c/inventories
|
|
status: 404
|
|
response_strings:
|
|
- No resource provider with uuid 7260669a-e3d4-4867-aaa7-683e2ab6958c found
|
|
response_json_paths:
|
|
$.errors[0].title: Not Found
|
|
|
|
- name: delete all inventory for missing resource provider
|
|
DELETE: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
openstack-api-version: placement 1.5
|
|
status: 404
|
|
|
|
- name: post new resource provider
|
|
POST: /resource_providers
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
name: $ENVIRON['RP_NAME']
|
|
uuid: $ENVIRON['RP_UUID']
|
|
status: 201
|
|
response_headers:
|
|
location: //resource_providers/[a-f0-9-]+/
|
|
|
|
- name: get empty inventories
|
|
GET: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
response_json_paths:
|
|
$.resource_provider_generation: 0
|
|
$.inventories: {}
|
|
|
|
- name: post a conflicting capacity inventory
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 256
|
|
reserved: 512
|
|
status: 400
|
|
response_strings:
|
|
- Unable to create inventory for resource provider
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post an inventory with no total specified
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
status: 400
|
|
response_strings:
|
|
- JSON does not validate
|
|
- "'total' is a required property"
|
|
|
|
- name: post a negative inventory
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: -1
|
|
status: 400
|
|
response_strings:
|
|
- JSON does not validate
|
|
- -1 is less than the minimum of 1
|
|
|
|
- name: post an inventory with invalid total
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 0
|
|
reserved: 512
|
|
min_unit: 1
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "JSON does not validate: 0 is less than the minimum of 1"
|
|
- "Failed validating 'minimum' in schema['properties']['total']"
|
|
|
|
- name: post an inventory invalid min_unit
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 2048
|
|
reserved: 512
|
|
min_unit: 0
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "JSON does not validate: 0 is less than the minimum of 1"
|
|
- "Failed validating 'minimum' in schema['properties']['min_unit']"
|
|
|
|
- name: post an inventory invalid max_unit
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 2048
|
|
reserved: 512
|
|
min_unit: 10
|
|
max_unit: 0
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "JSON does not validate: 0 is less than the minimum of 1"
|
|
- "Failed validating 'minimum' in schema['properties']['max_unit']"
|
|
|
|
- name: post an inventory invalid step_size
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 2048
|
|
reserved: 512
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 0
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "JSON does not validate: 0 is less than the minimum of 1"
|
|
- "Failed validating 'minimum' in schema['properties']['step_size']"
|
|
|
|
- name: post an inventory
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 2048
|
|
reserved: 512
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 201
|
|
response_headers:
|
|
location: $SCHEME://$NETLOC/resource_providers/$ENVIRON['RP_UUID']/inventories/DISK_GB
|
|
response_json_paths:
|
|
$.resource_provider_generation: 1
|
|
$.total: 2048
|
|
$.reserved: 512
|
|
|
|
- name: get that inventory
|
|
GET: $LOCATION
|
|
status: 200
|
|
response_json_paths:
|
|
$.resource_provider_generation: 1
|
|
$.total: 2048
|
|
$.reserved: 512
|
|
$.min_unit: 10
|
|
$.max_unit: 1024
|
|
$.step_size: 10
|
|
$.allocation_ratio: 1.0
|
|
|
|
- name: modify the inventory
|
|
PUT: $LAST_URL
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 1
|
|
total: 2048
|
|
reserved: 1024
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 200
|
|
response_headers:
|
|
content-type: /application/json/
|
|
response_json_paths:
|
|
$.reserved: 1024
|
|
|
|
- name: confirm inventory change
|
|
GET: $LAST_URL
|
|
response_json_paths:
|
|
$.resource_provider_generation: 2
|
|
$.total: 2048
|
|
$.reserved: 1024
|
|
|
|
- name: modify inventory invalid generation
|
|
PUT: $LAST_URL
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 5
|
|
total: 2048
|
|
status: 409
|
|
response_strings:
|
|
- resource provider generation conflict
|
|
response_json_paths:
|
|
$.errors[0].title: Conflict
|
|
|
|
- name: modify inventory no such resource class in inventory
|
|
PUT: /resource_providers/$ENVIRON['RP_UUID']/inventories/MEMORY_MB
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 2
|
|
total: 2048
|
|
status: 400
|
|
response_strings:
|
|
- No inventory record with resource class
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: modify inventory invalid data
|
|
desc: This should 400 because reserved is greater than total
|
|
PUT: $LAST_URL
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 2
|
|
total: 2048
|
|
reserved: 4096
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- Unable to update inventory for resource provider $ENVIRON['RP_UUID']
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: put inventory bad form
|
|
desc: This should 400 because reserved is greater than total
|
|
PUT: $LAST_URL
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
house: red
|
|
car: blue
|
|
status: 400
|
|
response_strings:
|
|
- JSON does not validate
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post inventory malformed json
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data: '{"foo": }'
|
|
status: 400
|
|
response_strings:
|
|
- Malformed JSON
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post inventory bad syntax schema
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: bad_class
|
|
total: 2048
|
|
status: 400
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post inventory bad resource class
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: NO_CLASS_14
|
|
total: 2048
|
|
status: 400
|
|
response_strings:
|
|
- No such resource class NO_CLASS_14
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post inventory duplicated resource class
|
|
desc: DISK_GB was already created above
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 2048
|
|
status: 409
|
|
response_strings:
|
|
- Update conflict
|
|
response_json_paths:
|
|
$.errors[0].title: Conflict
|
|
|
|
- name: get list of inventories
|
|
GET: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
response_json_paths:
|
|
$.resource_provider_generation: 2
|
|
$.inventories.DISK_GB.total: 2048
|
|
$.inventories.DISK_GB.reserved: 1024
|
|
|
|
- name: delete the inventory
|
|
DELETE: /resource_providers/$ENVIRON['RP_UUID']/inventories/DISK_GB
|
|
status: 204
|
|
|
|
- name: get now empty inventories
|
|
GET: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
response_json_paths:
|
|
$.resource_provider_generation: 3
|
|
$.inventories: {}
|
|
|
|
- name: post new disk inventory
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 1024
|
|
status: 201
|
|
|
|
- name: post new ipv4 address inventory
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: IPV4_ADDRESS
|
|
total: 255
|
|
reserved: 2
|
|
status: 201
|
|
|
|
- name: list both those inventories
|
|
GET: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
response_json_paths:
|
|
$.resource_provider_generation: 5
|
|
$.inventories.DISK_GB.total: 1024
|
|
$.inventories.IPV4_ADDRESS.total: 255
|
|
|
|
- name: post ipv4 address inventory again
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: IPV4_ADDRESS
|
|
total: 255
|
|
reserved: 2
|
|
status: 409
|
|
response_json_paths:
|
|
$.errors[0].title: Conflict
|
|
|
|
- name: delete inventory
|
|
DELETE: /resource_providers/$ENVIRON['RP_UUID']/inventories/IPV4_ADDRESS
|
|
status: 204
|
|
response_forbidden_headers:
|
|
- content-type
|
|
|
|
- name: delete inventory again
|
|
DELETE: /resource_providers/$ENVIRON['RP_UUID']/inventories/IPV4_ADDRESS
|
|
status: 404
|
|
response_strings:
|
|
- No inventory of class IPV4_ADDRESS found for delete
|
|
response_json_paths:
|
|
$.errors[0].title: Not Found
|
|
|
|
- name: get missing inventory class
|
|
GET: /resource_providers/$ENVIRON['RP_UUID']/inventories/IPV4_ADDRESS
|
|
status: 404
|
|
response_strings:
|
|
- No inventory of class IPV4_ADDRESS for $ENVIRON['RP_UUID']
|
|
response_json_paths:
|
|
$.errors[0].title: Not Found
|
|
|
|
- name: get invalid inventory class
|
|
GET: /resource_providers/$ENVIRON['RP_UUID']/inventories/HOUSE
|
|
status: 404
|
|
response_strings:
|
|
- No inventory of class HOUSE for $ENVIRON['RP_UUID']
|
|
response_json_paths:
|
|
$.errors[0].title: Not Found
|
|
|
|
- name: create another resource provider
|
|
POST: /resource_providers
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
name: disk-network
|
|
status: 201
|
|
|
|
- name: put all inventory
|
|
PUT: $LOCATION/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 0
|
|
inventories:
|
|
IPV4_ADDRESS:
|
|
total: 253
|
|
DISK_GB:
|
|
total: 1024
|
|
status: 200
|
|
response_json_paths:
|
|
$.resource_provider_generation: 1
|
|
$.inventories.IPV4_ADDRESS.total: 253
|
|
$.inventories.IPV4_ADDRESS.reserved: 0
|
|
$.inventories.DISK_GB.total: 1024
|
|
$.inventories.DISK_GB.allocation_ratio: 1.0
|
|
|
|
- name: check both inventory classes
|
|
GET: $LAST_URL
|
|
response_json_paths:
|
|
$.resource_provider_generation: 1
|
|
$.inventories.DISK_GB.total: 1024
|
|
$.inventories.IPV4_ADDRESS.total: 253
|
|
|
|
- name: check one inventory class
|
|
GET: $LAST_URL/DISK_GB
|
|
response_json_paths:
|
|
$.total: 1024
|
|
|
|
- name: put all inventory bad generation
|
|
PUT: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 99
|
|
inventories:
|
|
IPV4_ADDRESS:
|
|
total: 253
|
|
status: 409
|
|
response_strings:
|
|
- resource provider generation conflict
|
|
response_json_paths:
|
|
$.errors[0].title: Conflict
|
|
|
|
- name: put all inventory unknown resource class
|
|
PUT: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 6
|
|
inventories:
|
|
HOUSE:
|
|
total: 253
|
|
status: 400
|
|
response_strings:
|
|
- Unknown resource class in inventory
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post an inventory with total exceed max limit
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 2147483648
|
|
reserved: 512
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "Failed validating 'maximum'"
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post an inventory with reserved exceed max limit
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 1024
|
|
reserved: 2147483648
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "Failed validating 'maximum'"
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post an inventory with min_unit exceed max limit
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 1024
|
|
reserved: 512
|
|
min_unit: 2147483648
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "Failed validating 'maximum'"
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post an inventory with max_unit exceed max limit
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 1024
|
|
reserved: 512
|
|
min_unit: 10
|
|
max_unit: 2147483648
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "Failed validating 'maximum'"
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post an inventory with step_size exceed max limit
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 1024
|
|
reserved: 512
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 2147483648
|
|
allocation_ratio: 1.0
|
|
status: 400
|
|
response_strings:
|
|
- "Failed validating 'maximum'"
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: post an inventory with allocation_ratio exceed max limit
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 1024
|
|
reserved: 512
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 3.40282e+39
|
|
status: 400
|
|
response_strings:
|
|
- "Failed validating 'maximum'"
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: modify the inventory with total exceed max limit
|
|
PUT: $LAST_URL
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 1
|
|
inventories:
|
|
DISK_GB:
|
|
total: 2147483648
|
|
reserved: 512
|
|
status: 400
|
|
response_strings:
|
|
- "Failed validating 'maximum'"
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: modify the inventory with allocation_ratio exceed max limit
|
|
PUT: $LAST_URL
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 1
|
|
inventories:
|
|
DISK_GB:
|
|
total: 1024
|
|
reserved: 512
|
|
allocation_ratio: 3.40282e+39
|
|
status: 400
|
|
response_strings:
|
|
- "Failed validating 'maximum'"
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
# NOTE(cdent): The generation is 6 now, based on the activity at
|
|
# the start of this file.
|
|
- name: put all inventory bad capacity
|
|
PUT: $LAST_URL
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 6
|
|
inventories:
|
|
IPV4_ADDRESS:
|
|
total: 253
|
|
reserved: 512
|
|
status: 400
|
|
response_strings:
|
|
- Unable to update inventory
|
|
response_json_paths:
|
|
$.errors[0].title: Bad Request
|
|
|
|
- name: delete all inventory bad generation
|
|
PUT: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_provider_generation: 99
|
|
inventories:
|
|
IPV4_ADDRESS:
|
|
total: 253
|
|
status: 409
|
|
response_strings:
|
|
- resource provider generation conflict
|
|
|
|
- name: delete all inventory
|
|
DELETE: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
openstack-api-version: placement 1.5
|
|
status: 204
|
|
|
|
- name: delete empty inventories
|
|
DELETE: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
openstack-api-version: placement 1.5
|
|
status: 204
|
|
|
|
- name: get inventories after deletions
|
|
GET: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
response_json_paths:
|
|
$.resource_provider_generation: 8
|
|
$.inventories: {}
|
|
|
|
- name: post an inventory again
|
|
POST: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
data:
|
|
resource_class: DISK_GB
|
|
total: 2048
|
|
reserved: 512
|
|
min_unit: 10
|
|
max_unit: 1024
|
|
step_size: 10
|
|
allocation_ratio: 1.0
|
|
status: 201
|
|
response_headers:
|
|
location: $SCHEME://$NETLOC/resource_providers/$ENVIRON['RP_UUID']/inventories/DISK_GB
|
|
response_json_paths:
|
|
$.resource_provider_generation: 9
|
|
$.total: 2048
|
|
$.reserved: 512
|
|
|
|
- name: delete all inventory with put
|
|
PUT: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
content-type: application/json
|
|
openstack-api-version: placement 1.4
|
|
data:
|
|
resource_provider_generation: 9
|
|
inventories: {}
|
|
response_json_paths:
|
|
$.resource_provider_generation: 10
|
|
$.inventories: {}
|
|
status: 200
|
|
|
|
- name: get generation after deletion
|
|
GET: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
response_json_paths:
|
|
$.resource_provider_generation: 10
|
|
$.inventories: {}
|
|
|
|
- name: delete inventories earlier version
|
|
DELETE: /resource_providers/$ENVIRON['RP_UUID']/inventories
|
|
request_headers:
|
|
openstack-api-version: placement 1.4
|
|
status: 405
|