placement/placement/tests/functional/gabbits/allocation-candidates-mappi...

135 lines
5.4 KiB
YAML

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# Tests for allocation request mappings when using nested providers.
fixtures:
# See the layout diagram in this fixture's docstring in ../fixtures.py
- NUMANetworkFixture
defaults:
request_headers:
x-auth-token: admin
content-type: application/json
accept: application/json
# 1.34 is the microversion at which mappings are expected
openstack-api-version: placement 1.34
tests:
- name: simple mapping non granular
GET: /allocation_candidates
query_parameters:
resources: VCPU:1
response_json_paths:
$.allocation_requests.`len`: 3
$.provider_summaries.`len`: 23
# keys are allocations, mappings
$.allocation_requests[0].`len`: 2
$.allocation_requests[0].mappings[''].`len`: 1
$.allocation_requests[0].mappings[''][0]: /$ENVIRON['CN2_UUID']|$ENVIRON['NUMA0_UUID']|$ENVIRON['NUMA1_UUID']/
- name: no mappings in 1.33
GET: /allocation_candidates
query_parameters:
resources: VCPU:1
request_headers:
openstack-api-version: placement 1.33
response_json_paths:
$.allocation_requests.`len`: 3
$.provider_summaries.`len`: 23
# keys are solely 'allocations'
$.allocation_requests[0].`len`: 1
- name: simple isolated mapping
GET: /allocation_candidates
query_parameters:
resources_LEFT: VCPU:1
resources_RIGHT: VCPU:1
group_policy: isolate
response_json_paths:
$.allocation_requests.`len`: 2
$.provider_summaries.`len`: 12
$.allocation_requests[0].mappings.`len`: 2
$.allocation_requests[0].mappings['_LEFT'][0]: /$ENVIRON['NUMA0_UUID']|$ENVIRON['NUMA1_UUID']/
$.allocation_requests[0].mappings['_RIGHT'][0]: /$ENVIRON['NUMA1_UUID']|$ENVIRON['NUMA0_UUID']/
- name: granular plus not granular
GET: /allocation_candidates
query_parameters:
required_NET1: CUSTOM_PHYSNET1
resources_NET1: NET_BW_EGR_KILOBIT_PER_SEC:10
required_NET2: CUSTOM_PHYSNET2
resources_NET2: NET_BW_EGR_KILOBIT_PER_SEC:20
resources: VCPU:1
group_policy: isolate
response_json_paths:
# two candidates, one for each NUMA node providing VCPU
$.allocation_requests.`len`: 2
$.provider_summaries.`len`: 12
# 3 members of the mappings dict
$.allocation_requests[0].mappings.`len`: 3
# One member of each list in the mappings
$.allocation_requests[0].mappings[''].`len`: 1
$.allocation_requests[0].mappings._NET1.`len`: 1
$.allocation_requests[0].mappings._NET2.`len`: 1
$.allocation_requests[0].mappings[''][0]: /$ENVIRON['NUMA0_UUID']|$ENVIRON['NUMA1_UUID']/
$.allocation_requests[0].mappings._NET1[0]: $ENVIRON['ESN1_UUID']
$.allocation_requests[0].mappings._NET2[0]: $ENVIRON['ESN2_UUID']
- name: non isolated shows both request groups for the request that combines the resources
GET: /allocation_candidates
query_parameters:
# Two chunks of bandwidth on the same network. We pick PHYSNET1 because
# only one provider with bandwidth resource has that trait (ESN1). This,
# with group_policy=none, forces the resources to be consolidated onto
# that one provider. We need to show that the mappings accurately reflect
# both request groups.
resources_BWA: NET_BW_EGR_KILOBIT_PER_SEC:10
required_BWA: CUSTOM_PHYSNET1
resources_BWB: NET_BW_EGR_KILOBIT_PER_SEC:20
required_BWB: CUSTOM_PHYSNET1
group_policy: none
response_json_paths:
$.allocation_requests.`len`: 1
$.provider_summaries.`len`: 12
# Fix for https://storyboard.openstack.org/#!/story/2006068
# We should get a mapping from each request group to ESN1:
$.allocation_requests[0].mappings:
_BWA: ["$ENVIRON['ESN1_UUID']"]
_BWB: ["$ENVIRON['ESN1_UUID']"]
# Confirm that a resource provider which provides two different classes
# of inventory only shows up in a mapping for any suffix once.
- name: granular two resources on one suffix
GET: /allocation_candidates
query_parameters:
required_NET1: CUSTOM_PHYSNET1
resources_NET1: NET_BW_EGR_KILOBIT_PER_SEC:10
required_NET2: CUSTOM_PHYSNET2
resources_NET2: NET_BW_EGR_KILOBIT_PER_SEC:20
resources_COMPUTE: VCPU:1,MEMORY_MB:1024
group_policy: isolate
response_json_paths:
# two candidates, one for each NUMA node providing _COMPUTE
$.allocation_requests.`len`: 2
$.provider_summaries.`len`: 12
# 3 members of the mappings dict
$.allocation_requests[0].mappings.`len`: 3
# One member of each list in the mappings
$.allocation_requests[0].mappings._COMPUTE.`len`: 1
$.allocation_requests[0].mappings._NET1.`len`: 1
$.allocation_requests[0].mappings._NET2.`len`: 1
$.allocation_requests[0].mappings._COMPUTE[0]: /$ENVIRON['NUMA0_UUID']|$ENVIRON['NUMA1_UUID']/
$.allocation_requests[0].mappings._NET1[0]: $ENVIRON['ESN1_UUID']
$.allocation_requests[0].mappings._NET2[0]: $ENVIRON['ESN2_UUID']