placement/placement/tests/functional/gabbits/traits.yaml

487 lines
14 KiB
YAML

fixtures:
- APIFixture
defaults:
request_headers:
x-auth-token: admin
# traits introduced in 1.6
openstack-api-version: placement 1.6
tests:
- name: create a trait without custom namespace
PUT: /traits/TRAIT_X
status: 400
response_strings:
- 'The trait is invalid. A valid trait must be no longer than 255 characters, start with the prefix \"CUSTOM_\" and use following characters: \"A\"-\"Z\", \"0\"-\"9\" and \"_\"'
- name: create a trait with invalid characters
PUT: /traits/CUSTOM_ABC:1
status: 400
response_strings:
- 'The trait is invalid. A valid trait must be no longer than 255 characters, start with the prefix \"CUSTOM_\" and use following characters: \"A\"-\"Z\", \"0\"-\"9\" and \"_\"'
- name: create a trait with name exceed max characters
PUT: /traits/CUSTOM_ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO
status: 400
response_strings:
- 'The trait is invalid. A valid trait must be no longer than 255 characters, start with the prefix \"CUSTOM_\" and use following characters: \"A\"-\"Z\", \"0\"-\"9\" and \"_\"'
- name: create a trait earlier version
PUT: /traits/CUSTOM_TRAIT_1
request_headers:
openstack-api-version: placement 1.5
status: 404
- name: create a trait
PUT: /traits/CUSTOM_TRAIT_1
status: 201
response_headers:
location: //traits/CUSTOM_TRAIT_1/
response_forbidden_headers:
- content-type
# PUT in 1.6 version should not have cache headers
- cache-control
- last-modified
- name: create a trait which existed
PUT: /traits/CUSTOM_TRAIT_1
status: 204
response_headers:
location: //traits/CUSTOM_TRAIT_1/
response_forbidden_headers:
- content-type
- name: get a trait earlier version
GET: /traits/CUSTOM_TRAIT_1
request_headers:
openstack-api-version: placement 1.5
status: 404
- name: get a trait
GET: /traits/CUSTOM_TRAIT_1
status: 204
response_forbidden_headers:
- content-type
# In early versions cache headers should not be present
- cache-control
- last-modified
- name: get a non-existed trait
GET: /traits/NON_EXISTED
status: 404
- name: delete a trait earlier version
DELETE: /traits/CUSTOM_TRAIT_1
request_headers:
openstack-api-version: placement 1.5
status: 404
- name: delete a trait
DELETE: /traits/CUSTOM_TRAIT_1
status: 204
response_forbidden_headers:
- content-type
# DELETE in any version should not have cache headers
- cache-control
- last-modified
- name: delete a non-existed trait
DELETE: /traits/CUSTOM_NON_EXSITED
status: 404
- name: try to delete standard trait
DELETE: /traits/HW_CPU_X86_SSE
status: 400
response_strings:
- Cannot delete standard trait
- name: create CUSTOM_TRAIT_1
PUT: /traits/CUSTOM_TRAIT_1
status: 201
response_headers:
location: //traits/CUSTOM_TRAIT_1/
response_forbidden_headers:
- content-type
- name: create CUSTOM_TRAIT_2
PUT: /traits/CUSTOM_TRAIT_2
status: 201
response_headers:
location: //traits/CUSTOM_TRAIT_2/
response_forbidden_headers:
- content-type
# NOTE(cdent): This simply tests that traits we know should be
# present are in the results. We can't check length here because
# the standard traits, which will grow over time, are present.
- name: list traits
GET: /traits
status: 200
response_strings:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
- MISC_SHARES_VIA_AGGREGATE
- HW_CPU_X86_SHA
- name: list traits earlier version
GET: /traits
request_headers:
openstack-api-version: placement 1.5
status: 404
- name: list traits with invalid format of name parameter
GET: /traits?name=in_abc
status: 400
response_strings:
- 'Badly formatted name parameter. Expected name query string parameter in form: ?name=[in|startswith]:[name1,name2|prefix]. Got: \"in_abc\"'
- name: list traits with name=in filter
GET: /traits?name=in:CUSTOM_TRAIT_1,CUSTOM_TRAIT_2
status: 200
response_json_paths:
$.traits.`len`: 2
response_strings:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
- name: create CUSTOM_ANOTHER_TRAIT
PUT: /traits/CUSTOM_ANOTHER_TRAIT
status: 201
response_headers:
location: //traits/CUSTOM_ANOTHER_TRAIT/
response_forbidden_headers:
- content-type
- name: list traits with prefix
GET: /traits?name=startswith:CUSTOM_TRAIT
status: 200
response_json_paths:
$.traits.`len`: 2
response_strings:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
- name: list traits with invalid parameters
GET: /traits?invalid=abc
status: 400
response_strings:
- "Invalid query string parameters: Additional properties are not allowed"
- name: list traits 1.14 no cache headers
GET: /traits
request_headers:
openstack-api-version: placement 1.14
response_forbidden_headers:
- cache-control
- last-modified
- name: list traits 1.15 has cache headers
GET: /traits
request_headers:
openstack-api-version: placement 1.15
response_headers:
cache-control: no-cache
# Does last-modified look like a legit timestamp?
last-modified: /^\w+, \d+ \w+ \d{4} [\d:]+ GMT$/
- name: get trait 1.14 no cache headers
GET: /traits/CUSTOM_TRAIT_1
request_headers:
openstack-api-version: placement 1.14
status: 204
response_forbidden_headers:
- cache-control
- last-modified
- name: get trait 1.15 has cache headers
GET: /traits/CUSTOM_TRAIT_1
request_headers:
openstack-api-version: placement 1.15
status: 204
response_headers:
cache-control: no-cache
# Does last-modified look like a legit timestamp?
last-modified: /^\w+, \d+ \w+ \d{4} [\d:]+ GMT$/
- name: put trait 1.14 no cache headers
PUT: /traits/CUSTOM_TRAIT_1
request_headers:
openstack-api-version: placement 1.14
status: 204
response_forbidden_headers:
- cache-control
- last-modified
- name: put trait 1.15 has cache headers
PUT: /traits/CUSTOM_TRAIT_1
request_headers:
openstack-api-version: placement 1.15
status: 204
response_headers:
cache-control: no-cache
# Does last-modified look like a legit timestamp?
last-modified: /^\w+, \d+ \w+ \d{4} [\d:]+ GMT$/
- 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-]+/
response_forbidden_headers:
- content-type
- name: list traits for resource provider earlier version
GET: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
openstack-api-version: placement 1.5
status: 404
- name: list traits for resource provider without traits
GET: /resource_providers/$ENVIRON['RP_UUID']/traits
status: 200
response_json_paths:
$.resource_provider_generation: 0
$.traits.`len`: 0
response_forbidden_headers:
# In 1.6 no cache headers
- cache-control
- last-modified
- name: set traits for resource provider earlier version
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
content-type: application/json
openstack-api-version: placement 1.5
status: 404
- name: set traits for resource provider
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
content-type: application/json
status: 200
data:
traits:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
resource_provider_generation: 0
response_json_paths:
$.resource_provider_generation: 1
$.traits.`len`: 2
response_strings:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
response_forbidden_headers:
# In 1.6 no cache headers
- cache-control
- last-modified
- name: get associated traits
GET: /traits?associated=true
status: 200
response_json_paths:
$.traits.`len`: 2
response_strings:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
- name: get associated traits with invalid value
GET: /traits?associated=xyz
status: 400
response_strings:
- 'The query parameter \"associated\" only accepts \"true\" or \"false\"'
- name: set traits for resource provider without resource provider generation
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
content-type: application/json
status: 400
data:
traits:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
response_strings:
- "'resource_provider_generation' is a required property"
- name: set traits for resource provider with invalid resource provider generation
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
content-type: application/json
status: 400
data:
traits:
- CUSTOM_TRAIT_1
resource_provider_generation: invalid_generation
response_strings:
- "'invalid_generation' is not of type 'integer'"
- name: set traits for resource provider with conflict generation
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
content-type: application/json
openstack-api-version: placement 1.23
status: 409
data:
traits:
- CUSTOM_TRAIT_1
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
request_headers:
content-type: application/json
status: 400
data:
traits:
- NON_EXISTED_TRAIT1
- NON_EXISTED_TRAIT2
- CUSTOM_TRAIT_1
resource_provider_generation: 1
response_strings:
- No such trait
- NON_EXISTED_TRAIT1
- NON_EXISTED_TRAIT2
- name: set traits for resource provider with invalid type of traits
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
content-type: application/json
status: 400
data:
traits: invalid_type
resource_provider_generation: 1
response_strings:
- "'invalid_type' is not of type 'array'"
- name: set traits for resource provider with additional properties
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
content-type: application/json
status: 400
data:
traits:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
resource_provider_generation: 1
additional: additional
response_strings:
- 'Additional properties are not allowed'
- name: set traits for non_existed resource provider
PUT: /resource_providers/non_existed/traits
request_headers:
content-type: application/json
data:
traits:
- CUSTOM_TRAIT_1
resource_provider_generation: 1
status: 404
response_strings:
- No resource provider with uuid non_existed found
- name: list traits for resource provider
GET: /resource_providers/$ENVIRON['RP_UUID']/traits
status: 200
response_json_paths:
$.resource_provider_generation: 1
$.traits.`len`: 2
response_strings:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
- name: delete an in-use trait
DELETE: /traits/CUSTOM_TRAIT_1
status: 409
response_strings:
- The trait CUSTOM_TRAIT_1 is in use by a resource provider.
- name: list traits for non_existed resource provider
GET: /resource_providers/non_existed/traits
request_headers:
content-type: application/json
status: 404
response_strings:
- No resource provider with uuid non_existed found
- name: delete traits for resource provider earlier version
DELETE: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
openstack-api-version: placement 1.5
status: 404
- name: delete traits for resource provider
DELETE: /resource_providers/$ENVIRON['RP_UUID']/traits
status: 204
response_forbidden_headers:
- content-type
- name: delete traits for non_existed resource provider
DELETE: /resource_providers/non_existed/traits
status: 404
response_strings:
- No resource provider with uuid non_existed found
- name: empty traits for resource provider 1.15 has cache headers
GET: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
openstack-api-version: placement 1.15
response_headers:
cache-control: no-cache
# Does last-modified look like a legit timestamp?
last-modified: /^\w+, \d+ \w+ \d{4} [\d:]+ GMT$/
- name: update rp trait 1.14 no cache headers
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
data:
traits:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
resource_provider_generation: 2
request_headers:
openstack-api-version: placement 1.14
content-type: application/json
response_forbidden_headers:
- cache-control
- last-modified
- name: update rp trait 1.15 has cache headers
PUT: /resource_providers/$ENVIRON['RP_UUID']/traits
data:
traits:
- CUSTOM_TRAIT_1
- CUSTOM_TRAIT_2
resource_provider_generation: 3
request_headers:
openstack-api-version: placement 1.15
content-type: application/json
response_headers:
cache-control: no-cache
# Does last-modified look like a legit timestamp?
last-modified: /^\w+, \d+ \w+ \d{4} [\d:]+ GMT$/
- name: list traits for resource provider 1.14 no cache headers
GET: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
openstack-api-version: placement 1.14
response_forbidden_headers:
- cache-control
- last-modified
- name: list traits for resource provider 1.15 has cache headers
GET: /resource_providers/$ENVIRON['RP_UUID']/traits
request_headers:
openstack-api-version: placement 1.15
response_headers:
cache-control: no-cache
# Does last-modified look like a legit timestamp?
last-modified: /^\w+, \d+ \w+ \d{4} [\d:]+ GMT$/