135 lines
5.4 KiB
YAML
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']
|