placement/gate/gabbits/nested-perfload.yaml
Chris Dent 07d7749cff Implement a more complex nested-perfload topology
This changes gabbits/nested-perfload.yaml to create a tree of
providers based on one of the compute nodes in the NUMANetworkFixture
used in the functional tests. For the time being only one type of
compute node is created (of which there will be 1000 instances).
Room is left for future expansion as requirements expand.

The resulting hierarchy has 7 resource providers.

The allocation candidates query is:

GET /allocation_candidates?
    resources=DISK_GB:10&
    required=COMPUTE_VOLUME_MULTI_ATTACH&
    resources_COMPUTE=VCPU:1,MEMORY_MB:256&
    required_COMPUTE=CUSTOM_FOO&
    resources_FPGA=FPGA:1&
    group_policy=none&
    same_subtree=_COMPUTE,_FPGA

This is a step in the right direction but is not yet a complete
exercising of all the nested functionality. It is, however, more
complex than prior, notably testing 'same_subtree'. We should
continue to iterate to get it doing more.

Change-Id: I67d8091b464cd7b875b37766f52818a5a2faa780
Story: 2005443
Task: 35669
2019-08-06 09:18:39 +01:00

184 lines
5.9 KiB
YAML

# This is a nested topology to exercise a large section of the nested provider
# related code in placement. The structure here is based on some of the
# structures in the NUMANetworkFixture in
# placement.tests.functional.fixtures.gabbits. This version initially leaves
# out many of the resource providers created there, with the intent that we can
# add more as the need presents itself.
#
# For the time being only one compute node is created, with two numa nodes,
# each with two devices attached, either two FPGA or an FPGA and PGPU.
#
# Here's a graphical representation of what is created. Please keep this up to
# date as changes are made:
#
# +-----------------------------+
# | compute node (cn1) |
# | COMPUTE_VOLUME_MULTI_ATTACH |
# | DISK_GB: 20480 |
# +---------------+-------------+
# |
# +--------------------+
# | |
# +---------+--------+ +---------+--------+
# | numa0 | | numa1 |
# | HW_NUMA_ROOT | | HW_NUMA_ROOT |
# | | | CUSTOM_FOO |
# | VCPU: 4 (2 res.) | | VCPU: 4 |
# | MEMORY_MB: 2048 | | MEMORY_MB: 2048 |
# | min_unit: 512 | | min_unit: 256 |
# | step_size: 256 | | max_unit: 1024 |
# +---+----------+---+ +---+----------+---+
# | | | |
# +---+---+ +---+---+ +---+---+ +---+---+
# |fpga0 | |pgpu0 | |fpga1_0| |fpga1_1|
# |FPGA:1 | |VGPU:8 | |FPGA:1 | |FPGA:1 |
# +-------+ +-------+ +-------+ +-------+
defaults:
request_headers:
accept: application/json
content-type: application/json
openstack-api-version: placement latest
x-auth-token: $ENVIRON['TOKEN']
tests:
- name: create FOO trait
PUT: /traits/CUSTOM_FOO
status: 201 || 204
- name: create cn1
POST: /resource_providers
data:
uuid: $ENVIRON['CN1_UUID']
name: $ENVIRON['CN1_UUID']
status: 200
- name: set cn1 inventory
PUT: /resource_providers/$ENVIRON['CN1_UUID']/inventories
data:
resource_provider_generation: 0
inventories:
DISK_GB:
total: 20480
- name: set compute node traits
PUT: /resource_providers/$ENVIRON['CN1_UUID']/traits
data:
resource_provider_generation: 1
traits:
- COMPUTE_VOLUME_MULTI_ATTACH
- name: create numa 0
POST: /resource_providers
data:
uuid: $ENVIRON['N0_UUID']
name: numa 0-$ENVIRON['N0_UUID']
parent_provider_uuid: $ENVIRON['CN1_UUID']
- name: set numa 0 inventory
PUT: /resource_providers/$ENVIRON['N0_UUID']/inventories
data:
resource_provider_generation: 0
inventories:
VCPU:
total: 4
reserved: 2
MEMORY_MB:
total: 2048
min_unit: 512
step_size: 256
- name: set numa 0 traits
PUT: /resource_providers/$ENVIRON['N0_UUID']/traits
data:
resource_provider_generation: 1
traits:
- HW_NUMA_ROOT
- name: create fpga0_0
POST: /resource_providers
data:
uuid: $ENVIRON['FPGA0_0_UUID']
name: fpga0-0-$ENVIRON['FPGA0_0_UUID']
parent_provider_uuid: $ENVIRON['N0_UUID']
- name: set fpga0_0 inventory
PUT: /resource_providers/$ENVIRON['FPGA0_0_UUID']/inventories
data:
resource_provider_generation: 0
inventories:
FPGA:
total: 1
- name: create pgpu0_0
POST: /resource_providers
data:
uuid: $ENVIRON['PGPU0_0_UUID']
name: pgpu0-0-$ENVIRON['PGPU0_0_UUID']
parent_provider_uuid: $ENVIRON['N0_UUID']
- name: set pgpu0_0 inventory
PUT: /resource_providers/$ENVIRON['PGPU0_0_UUID']/inventories
data:
resource_provider_generation: 0
inventories:
VGPU:
total: 8
- name: create numa 1
POST: /resource_providers
data:
uuid: $ENVIRON['N1_UUID']
name: numa 1-$ENVIRON['N1_UUID']
parent_provider_uuid: $ENVIRON['CN1_UUID']
- name: set numa 1 inventory
PUT: /resource_providers/$ENVIRON['N1_UUID']/inventories
data:
resource_provider_generation: 0
inventories:
VCPU:
total: 4
MEMORY_MB:
total: 2048
min_unit: 256
max_unit: 1024
- name: set numa 1 traits
PUT: /resource_providers/$ENVIRON['N1_UUID']/traits
data:
resource_provider_generation: 1
traits:
- HW_NUMA_ROOT
- CUSTOM_FOO
- name: create fpga1_0
POST: /resource_providers
data:
uuid: $ENVIRON['FPGA1_0_UUID']
name: fpga1-0-$ENVIRON['FPGA1_0_UUID']
parent_provider_uuid: $ENVIRON['N1_UUID']
- name: set fpga1_0 inventory
PUT: /resource_providers/$ENVIRON['FPGA1_0_UUID']/inventories
data:
resource_provider_generation: 0
inventories:
FPGA:
total: 1
- name: create fpga1_1
POST: /resource_providers
data:
uuid: $ENVIRON['FPGA1_1_UUID']
name: fpga1-1-$ENVIRON['FPGA1_1_UUID']
parent_provider_uuid: $ENVIRON['N1_UUID']
- name: set fpga1_1 inventory
PUT: /resource_providers/$ENVIRON['FPGA1_1_UUID']/inventories
data:
resource_provider_generation: 0
inventories:
FPGA:
total: 1