cyborg/cyborg/common/constants.py

111 lines
2.9 KiB
Python

# Copyright 2017 Huawei Technologies Co.,LTD.
# All Rights Reserved.
#
# 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.
import os_resource_classes as orc
CONDUCTOR_TOPIC = 'cyborg-conductor'
AGENT_TOPIC = 'cyborg-agent'
DEVICE_GPU = 'GPU'
DEVICE_FPGA = 'FPGA'
DEVICE_AICHIP = 'AICHIP'
DEVICE_QAT = 'QAT'
DEVICE_NIC = 'NIC'
DEVICE_SSD = 'SSD'
ARQ_STATES = (ARQ_INITIAL, ARQ_BIND_STARTED, ARQ_BOUND, ARQ_UNBOUND,
ARQ_BIND_FAILED, ARQ_DELETING) = (
'Initial', 'BindStarted', 'Bound', 'Unbound', 'BindFailed', 'Deleting')
ARQ_BIND_STAGE = (ARQ_PRE_BIND, ARQ_FINISH_BIND,
ARQ_OUFOF_BIND_FLOW) = (
[ARQ_INITIAL, ARQ_BIND_STARTED], [ARQ_BOUND, ARQ_BIND_FAILED],
[ARQ_UNBOUND, ARQ_DELETING])
ARQ_BIND_STATUS = (ARQ_BIND_STATUS_FINISH, ARQ_BIND_STATUS_FAILED) = (
"completed", "failed")
ARQ_BIND_STATES_STATUS_MAP = {
ARQ_BOUND: ARQ_BIND_STATUS_FINISH,
ARQ_BIND_FAILED: ARQ_BIND_STATUS_FAILED,
ARQ_DELETING: ARQ_BIND_STATUS_FAILED
}
# TODO(Shaohe): maybe we can use oslo automaton lib
# ref: https://docs.openstack.org/automaton/latest/user/examples.html
# The states in value list can transfrom to the key state
ARQ_STATES_TRANSFORM_MATRIX = {
ARQ_INITIAL: [],
ARQ_BIND_STARTED: [ARQ_INITIAL, ARQ_UNBOUND],
ARQ_BOUND: [ARQ_BIND_STARTED],
ARQ_UNBOUND: [ARQ_INITIAL, ARQ_BIND_STARTED, ARQ_BOUND, ARQ_BIND_FAILED],
ARQ_BIND_FAILED: [ARQ_BIND_STARTED, ARQ_BOUND],
ARQ_DELETING: [ARQ_INITIAL, ARQ_BIND_STARTED, ARQ_BOUND,
ARQ_UNBOUND, ARQ_BIND_FAILED]
}
# Device type
DEVICE_TYPE = (DEVICE_GPU, DEVICE_FPGA, DEVICE_AICHIP, DEVICE_QAT, DEVICE_NIC,
DEVICE_SSD)
# Attach handle type
# 'TEST_PCI': used by fake driver, ignored by Nova virt driver.
ATTACH_HANDLE_TYPES = (AH_TYPE_PCI, AH_TYPE_MDEV, AH_TYPE_TEST_PCI) = (
"PCI", "MDEV", "TEST_PCI")
# Control Path ID type
CPID_TYPE = (CPID_TYPE_PCI) = ("PCI")
# Resource Class
RESOURCES = {
"FPGA": orc.FPGA,
"PGPU": orc.PGPU,
"VGPU": orc.VGPU,
"QAT": "CUSTOM_QAT",
"NIC": "CUSTOM_NIC",
"SSD": 'CUSTOM_SSD',
}
ACCEL_SPECS = (
ACCEL_BITSTREAM_ID,
ACCEL_FUNCTION_ID
) = (
"accel:bitstream_id",
"accel:function_id"
)
SUPPORT_RESOURCES = (
FPGA, GPU, VGPU, PGPU, QAT, NIC, SSD) = (
"FPGA", "GPU", "VGPU", "PGPU", "CUSTOM_QAT", "CUSTOM_NIC", "CUSTOM_SSD"
)
FPGA_TRAITS = (
FPGA_FUNCTION_ID,
) = (
"CUSTOM_FPGA_FUNCTION_ID",
)
RESOURCES_PREFIX = "resources:"