Fix GPU's improper cpid_type allowed value and attach_handle_type value
``ControlPathID`` table tracks identifiers for a control path interface to devices. When we were discussing the valid values of cpid_type at 2020-02-27 Cyborg weekly meeting[0], an agreement was made that allowed cpid_type values are "PCI". And for GPUs (either pGPU or vGPU), they all report "PCI" as their cpid_type, while ``attach_handle_type`` of them are different. This patch fixes the improper cpid_type allowed value and attach_handle_type value. No unit test is affected. vGPU report will be implemented in future release. [0]http://eavesdrop.openstack.org/meetings/openstack_cyborg/2020/openstack_cyborg.2020-02-27-03.00.log.html Closes task: 38954 Change-Id: Iafb23b47bf022f81776af77d205fc788d1b0d6b6
This commit is contained in:
parent
809fd6003b
commit
0303fde937
@ -119,6 +119,8 @@ def _generate_driver_device(gpu):
|
|||||||
|
|
||||||
def _generate_controlpath_id(gpu):
|
def _generate_controlpath_id(gpu):
|
||||||
driver_cpid = driver_controlpath_id.DriverControlPathID()
|
driver_cpid = driver_controlpath_id.DriverControlPathID()
|
||||||
|
# NOTE: GPUs (either pGPU or vGPU), they all report "PCI" as
|
||||||
|
# their cpid_type, while attach_handle_type of them are different.
|
||||||
driver_cpid.cpid_type = "PCI"
|
driver_cpid.cpid_type = "PCI"
|
||||||
driver_cpid.cpid_info = utils.pci_str_to_json(gpu["devices"])
|
driver_cpid.cpid_info = utils.pci_str_to_json(gpu["devices"])
|
||||||
return driver_cpid
|
return driver_cpid
|
||||||
@ -147,7 +149,10 @@ def _generate_dep_list(gpu):
|
|||||||
|
|
||||||
def _generate_attach_handle(gpu):
|
def _generate_attach_handle(gpu):
|
||||||
driver_ah = driver_attach_handle.DriverAttachHandle()
|
driver_ah = driver_attach_handle.DriverAttachHandle()
|
||||||
driver_ah.attach_type = constants.AH_TYPE_PCI
|
if gpu["rc"] == "PGPU":
|
||||||
|
driver_ah.attach_type = constants.AH_TYPE_PCI
|
||||||
|
else:
|
||||||
|
driver_ah.attach_type = constants.AH_TYPE_MDEV
|
||||||
driver_ah.in_use = False
|
driver_ah.in_use = False
|
||||||
driver_ah.attach_info = utils.pci_str_to_json(gpu["devices"])
|
driver_ah.attach_info = utils.pci_str_to_json(gpu["devices"])
|
||||||
return driver_ah
|
return driver_ah
|
||||||
|
@ -66,6 +66,10 @@ ATTACH_HANDLE_TYPES = (AH_TYPE_PCI, AH_TYPE_MDEV, AH_TYPE_TEST_PCI) = (
|
|||||||
"PCI", "MDEV", "TEST_PCI")
|
"PCI", "MDEV", "TEST_PCI")
|
||||||
|
|
||||||
|
|
||||||
|
# Control Path ID type
|
||||||
|
CPID_TYPE = (CPID_TYPE_PCI) = ("PCI")
|
||||||
|
|
||||||
|
|
||||||
# Resource Class
|
# Resource Class
|
||||||
RESOURCES = {
|
RESOURCES = {
|
||||||
"FPGA": orc.FPGA,
|
"FPGA": orc.FPGA,
|
||||||
|
@ -17,14 +17,13 @@ from oslo_log import log as logging
|
|||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
from oslo_versionedobjects import base as object_base
|
from oslo_versionedobjects import base as object_base
|
||||||
|
|
||||||
|
from cyborg.common import constants
|
||||||
from cyborg.db import api as dbapi
|
from cyborg.db import api as dbapi
|
||||||
from cyborg.objects import base
|
from cyborg.objects import base
|
||||||
from cyborg.objects import fields as object_fields
|
from cyborg.objects import fields as object_fields
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
CPID_TYPE = ["PCI", "MDEV"]
|
|
||||||
|
|
||||||
|
|
||||||
@base.CyborgObjectRegistry.register
|
@base.CyborgObjectRegistry.register
|
||||||
class ControlpathID(base.CyborgObject, object_base.VersionedObjectDictCompat):
|
class ControlpathID(base.CyborgObject, object_base.VersionedObjectDictCompat):
|
||||||
@ -38,8 +37,9 @@ class ControlpathID(base.CyborgObject, object_base.VersionedObjectDictCompat):
|
|||||||
'id': object_fields.IntegerField(nullable=False),
|
'id': object_fields.IntegerField(nullable=False),
|
||||||
'uuid': object_fields.UUIDField(nullable=False),
|
'uuid': object_fields.UUIDField(nullable=False),
|
||||||
'device_id': object_fields.IntegerField(nullable=False),
|
'device_id': object_fields.IntegerField(nullable=False),
|
||||||
'cpid_type': object_fields.EnumField(valid_values=CPID_TYPE,
|
'cpid_type': object_fields.EnumField(
|
||||||
nullable=False),
|
valid_values=constants.CPID_TYPE,
|
||||||
|
nullable=False),
|
||||||
'cpid_info': object_fields.StringField(nullable=False)
|
'cpid_info': object_fields.StringField(nullable=False)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user