OpenStack 加速 API

这是由 Cyborg 项目提供的 OpenStack 加速 v2 API 的参考。从 Ussuri 开始,Cyborg 只支持版本 2 REST API。版本 1 API 在 Train 中已被弃用,并在 Ussuri 中移除。

设备配置

列出、创建、显示详情、更新和删除设备配置。

一个 device_profile 是一个或多个加速器用户需求的命名集合。它可以被视为设备的 flavor。广义上来说,它包括两件事:特定资源类别的期望数量以及资源提供者必须满足的要求。虽然资源类别与 Placement 已知的类别相同,但有些要求对应于 Placement traits,而另一些则对应于 Cyborg 自身了解的属性。

GET
/v2/device_profiles

列出设备配置

列出所有设备配置的 UUID、名称、组等信息。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

device_profiles

body

数组

一个 device profiles 对象列表。

name

body

字符串

设备配置的显示名称。

uuid

body

字符串

device_profile 的 uuid。

description

body

字符串

设备配置的显示描述。

groups

body

一个字典列表

这是一个字典列表,用于描述用户返回的加速器资源,其中用户使用键来描述 resource_classes 或 traits,并使用值来指示其数量或属性。这有意与 nova flavor 中的 extra_specs 类似,并使用相同的关键字来表示资源和 traits。键值对可以是资源/trait 或 Cyborg 属性。Cyborg 属性的形式为“accel:<key>”: “<value>”。有效的键值对可以在 此处 找到。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例响应:列出所有设备配置

{
   "device_profiles":[
      {
         "name":"bym-1",
         "uuid":"3d03fa5b-507c-4810-a344-759e9ef4337a",
         "description": "",
         "groups":[
            {
               "resources:FPGA":"1",
               "trait:CUSTOM_FPGA_C260":"required"
            }
         ],
         "created_at": "2020-03-09 11:26:05+00:00",
         "updated_at": null,
         "links":[
            {
               "href":"http://192.168.32.217/accelerator/v2/device_profiles/3d03fa5b-507c-4810-a344-759e9ef4337a",
               "rel":"self"
            }
         ]
      },
      {
         "name":"fpga-dp1",
         "uuid":"5518a925-1c2c-49a2-a8bf-0927d9456f3e",
         "description": "",
         "groups":[
            {
               "trait:CUSTOM_CHENKE_TRAITS":"required",
               "resources:FPGA":"1",
               "accel:bitstream_id":"d5ca2f11-3108-4426-a11c-a959987565df"
            }
         ],
         "created_at": "2020-03-10 03:52:15+00:00",
         "updated_at": null,
         "links":[
            {
               "href":"http://192.168.32.217/accelerator/v2/device_profiles/5518a925-1c2c-49a2-a8bf-0927d9456f3e",
               "rel":"self"
            }
         ]
      }
   ]
}
GET
/v2/device_profiles/{device_profile_name_or_uuid}

获取一个设备配置

使用指定的名称或 UUID 获取一个 device_profile 的 UUID、名称、组。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

device_profile_uuid

路径

字符串

加速器请求的 device_profile 的 uuid。如果不是有效的 uuid,API 将返回 400。

device_profile_name_or_uuid

路径

字符串

加速器请求的 device_profile 的名称或 uuid。

版本 2.2 中新增

响应

名称

入参

类型

描述

device_profile

body

数组

一个 device profile 对象列表。

name

body

字符串

设备配置的显示名称。

uuid

body

字符串

device_profile 的 uuid。

description

body

字符串

设备配置的显示描述。

groups

body

一个字典列表

这是一个字典列表,用于描述用户返回的加速器资源,其中用户使用键来描述 resource_classes 或 traits,并使用值来指示其数量或属性。这有意与 nova flavor 中的 extra_specs 类似,并使用相同的关键字来表示资源和 traits。键值对可以是资源/trait 或 Cyborg 属性。Cyborg 属性的形式为“accel:<key>”: “<value>”。有效的键值对可以在 此处 找到。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例响应:获取特定设备配置的详细信息(v2.2)

{
   "device_profile":{
      "name":"fpga-dp1",
      "uuid":"5518a925-1c2c-49a2-a8bf-0927d9456f3e",
      "description": "",
      "groups":[
         {
            "trait:CUSTOM_FPGA_INSPUR":"required",
            "resources:FPGA":"1",
            "accel:bitstream_id":"d5ca2f11-3108-4426-a11c-a959987565df"
         }
      ],
      "created_at": "2020-03-09 11:26:05+00:00",
      "updated_at": null,
      "links":[
         {
            "href":"http://192.168.32.217/accelerator/v2/device_profiles/5518a925-1c2c-49a2-a8bf-0927d9456f3e",
            "rel":"self"
         }
      ]
   }
}
POST
/v2/device_profiles

创建设备配置

创建设备配置。payload 应该包含以下字段

正常响应代码:201

错误响应代码:请求错误(400)、未授权(401)、禁止(403)、冲突(409)

请求

名称

入参

类型

描述

name

body

字符串

设备配置的显示名称。

groups

body

一个字典列表

这是一个字典列表,用于描述用户请求的加速器资源,其中用户使用键来描述 resource_classes 或 traits,并使用值来指示其数量或属性。这有意与 nova flavor 中的 extra_specs 类似,并使用相同的关键字来表示资源和 traits。键值对可以是资源/trait 或 Cyborg 属性。Cyborg 属性的形式为“accel:<key>”: “<value>”。有效的键值对可以在 此处 找到。

description (可选)

body

字符串

设备配置的自由格式描述。长度限制为 255 个字符。

响应

名称

入参

类型

描述

name

body

字符串

设备配置的显示名称。

uuid

body

字符串

device_profile 的 uuid。

description

body

字符串

设备配置的显示描述。

groups

body

一个字典列表

这是一个字典列表,用于描述用户返回的加速器资源,其中用户使用键来描述 resource_classes 或 traits,并使用值来指示其数量或属性。这有意与 nova flavor 中的 extra_specs 类似,并使用相同的关键字来表示资源和 traits。键值对可以是资源/trait 或 Cyborg 属性。Cyborg 属性的形式为“accel:<key>”: “<value>”。有效的键值对可以在 此处 找到。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例 post curl,包含 resource/trait

curl -g -i -X POST $cyborg_endpoint_url/device_profiles \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "User-Agent:None" \
  -H "X-Auth-Token: yourtoken" \
  -d '[{"name": "afexample_3",
        "description": "device profile description",
        "groups": [{"resources:CUSTOM_ACCELERATOR_FPGA": "1",
                    "trait:CUSTOM_FPGA_1": "required",
                    "trait:CUSTOM_FUNCTION_ID_3AFB": "required"}]}]'

示例 post curl,包含一个 cyborg 属性,当需要 bitstream 时

curl -g -i -X POST $cyborg_endpoint_url/device_profiles \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "User-Agent:None" \
  -H "X-Auth-Token: yourtoken" \
  -d '[{"name": "afexample_3",
        "description": "device profile description",
        "groups": [{"resources:CUSTOM_ACCELERATOR_FPGA": "1",
                    "trait:CUSTOM_FPGA_1": "required",
                    "trait:CUSTOM_FUNCTION_ID_3AFB": "required",
                    "accel:bitstream_id": "a6a12670-7014-4cff-a563-cea949b57fb3"}]}]'

示例响应:创建设备配置

{
   "name":"afexample_3",
   "uuid":"1a939c88-0b01-408b-bab0-4c61d3a02d71",
   "description": "",
   "groups":[
      {
         "trait:CUSTOM_FUNCTION_ID_3AFB":"required",
         "resources:CUSTOM_ACCELERATOR_FPGA":"1",
         "trait:CUSTOM_FPGA_1":"required"
      }
   ],
   "created_at": "2020-03-09 11:26:05+00:00",
   "updated_at": null,
   "links":[
      {
         "href":"http://192.168.23.76/accelerator/v2/device_profiles/1a939c88-0b01-408b-bab0-4c61d3a02d71",
         "rel":"self"
      }
   ]
}
DELETE
/v2/device_profiles/{device_profile_uuid}

按 uuid 删除一个设备配置

删除一个设备配置。不需要查询参数。

DELETE
/v2/device_profiles?value={device_profile_name1},{device_profile_name2}

按名称删除多个设备配置

在 URL 中,要删除的设备配置应为逗号分隔的设备配置名称列表。

注意

今天,我们不允许删除被虚拟机使用的设备配置,因为 ARQ 在设备配置表上有一个外键。但是,我们将设备配置组复制到 ARQ 中,因此不需要此外键。因此,我们可以在 Ussuri 中改进。

响应

正常响应代码:204

成功的 DELETE 查询的响应中没有 body 内容

加速器请求

列出、创建、显示详情、更新和删除加速器请求。

一个加速器请求 (ARQ) 代表将单个加速器分配给实例的请求。ARQ 是根据 device_profile 中定义的 resource_groups 由操作员创建的。用户请求中的加速器请求可能包含 N 个请求组,每个组请求 M 个加速器;然后将为该加速器请求创建 N * M 个 ARQ。

GET
/v2/accelerator_requests

列出加速器请求

列出 host_name、device_rp_uuid、instance_uuid 和 device_profile_group_id,用于所有 accelerator_requests。

示例响应:列出所有加速器请求

{
   "arqs":[
      {
         "instance_uuid":"d1e3ff56-feef-4495-8e4f-1cf6ea59ffbc",
         "hostname":"ubuntu-80",
         "uuid":"7e88a0a5-6dd9-497e-a7e0-fa2d75728a3b",
         "links":[
            {
               "href":"http://192.168.23.138/accelerator/v2/accelerator_requests/7e88a0a5-6dd9-497e-a7e0-fa2d75728a3b",
               "rel":"self"
            }
         ],
         "created_at":"2019-10-25T07:58:23+00:00",
         "device_profile_group_id":0,
         "attach_handle_type":"TEST_PCI",
         "updated_at":"2019-10-25T08:27:46+00:00",
         "state":"Bound",
         "device_rp_uuid":"03631f82-20a9-3f67-a29d-dc1abe4041bf",
         "device_profile_name":"temp-dp1",
         "attach_handle_info":{
            "device":"00",
            "bus":"0c",
            "domain":"0000",
            "function":"0"
         }
      },
      {
         "instance_uuid":null,
         "hostname":null,
         "uuid":"234c1acf-beca-47b2-9532-6bea61630936",
         "links":[
            {
               "href":"http://192.168.23.138/accelerator/v2/accelerator_requests/234c1acf-beca-47b2-9532-6bea61630936",
               "rel":"self"
            }
         ],
         "created_at":"2019-10-25T07:58:49+00:00",
         "device_profile_group_id":0,
         "attach_handle_type":"",
         "updated_at":null,
         "state":"Initial",
         "device_rp_uuid":null,
         "device_profile_name":"temp-dp1",
         "attach_handle_info":{

         }
      }
   ]
}
GET
/v2/accelerator_requests/{accelerator_request_uuid}

获取一个加速器请求

使用指定的 UUID 获取一个 accelerator request 的 host_name、device’s_RP_UUID、instance UUID 和 device_profile_group_ID。

请求

名称

入参

类型

描述

accelerator_request_uuid

路径

字符串

一个加速器请求的 UUID。

示例响应:获取特定加速器请求的详细信息

{
   "instance_uuid":null,
   "hostname":null,
   "uuid":"234c1acf-beca-47b2-9532-6bea61630936",
   "links":[
      {
         "href":"http://192.168.23.138/accelerator/v2/accelerator_requests/234c1acf-beca-47b2-9532-6bea61630936",
         "rel":"self"
      }
   ],
   "created_at":"2019-10-25T07:58:49+00:00",
   "device_profile_group_id":0,
   "attach_handle_type":"",
   "updated_at":null,
   "state":"Initial",
   "device_rp_uuid":null,
   "device_profile_name":"tmp-dp1",
   "attach_handle_info":{
   }
}
POST
/v2/accelerator_requests

创建加速器请求

创建加速器请求。payload 应该包含以下字段

请求

名称

入参

类型

描述

device_profile_name

body

字符串

设备配置的显示名称。

示例 post curl

curl -g -i -X POST http://192.168.23.138/accelerator/v2/accelerator_requests \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "User-Agent: None" \
  -H "X-Auth-Token: yourtoken" \
  -d '{"device_profile_name": "tmp-dp1"}'

示例响应:创建加速器请求

{
   "arqs":[
      {
         "instance_uuid":null,
         "hostname":null,
         "uuid":"89ec9c4d-73b2-4aaf-9225-485945aa7162",
         "links":[
            {
               "href":"http://192.168.23.138/accelerator/v2/accelerator_requests/89ec9c4d-73b2-4aaf-9225-485945aa7162",
               "rel":"self"
            }
         ],
         "created_at":"2019-10-25T12:01:05.896464+00:00",
         "device_profile_group_id":0,
         "attach_handle_type":"",
         "updated_at":null,
         "state":"Initial",
         "device_rp_uuid":null,
         "device_profile_name":"tmp-dp1",
         "attach_handle_info":{

         }
      }
   ]
}
PATCH
/v2/accelerator_requests/{accelerator_request_uuid}

更新加速器请求

Nova compute manager 调用 Cyborg API PATCH /v2/accelerator_requests 以绑定和解绑 ARQ 与主机名、device’s RP UUID 和实例 UUID。这是一个异步调用,可以在后台准备或重新配置设备。

更新:一个加速器请求。payload 应该包含以下字段

请求

名称

入参

类型

描述

accelerator_request_uuid

路径

字符串

一个加速器请求的 UUID。

hostname

body

字符串

绑定或解绑一个加速器请求的目标主机的名称。

device_rp_uuid

body

字符串

绑定或解绑一个加速器请求的目标加速器 (资源提供者) 的 UUID。

instance_uuid

body

字符串

绑定或解绑一个加速器请求的目标实例的 UUID。

instance_project_id (可选)

body

字符串

绑定或解绑一个加速器请求的目标实例的项目 id。

新增于版本 2.1

示例 patch curl

curl -g -i -X PATCH http://192.168.23.138/accelerator/v2/accelerator_requests \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "User-Agent: None" \
  -H "X-Auth-Token: yourtoken" \
  -d '
{"89ec9c4d-73b2-4aaf-9225-485945aa7162":
    [{"op": "add", "path": "/instance_uuid",
        "value": "506220bc-18f2-4294-9b29-80267a021dc0"},
     {"op": "add", "path": "/hostname", "value": "centos-80"},
     {"op": "add", "path": "/device_rp_uuid",
        "value": "03631f82-20a9-3f67-a29d-dc1abe4042bf"},
     {"op": "add", "path": "/project_id",
        "value": "8934fbea7b3f4685bd8ee7cf166a4c09"}]}'

示例响应:更新加速器请求

{
   "instance_uuid":"506220bc-18f2-4294-9b29-80267a021dc0",
   "hostname":"centos-80",
   "uuid":"89ec9c4d-73b2-4aaf-9225-485945aa7162",
   "links":[
      {
         "href":"http://192.168.23.138/accelerator/v2/accelerator_requests/89ec9c4d-73b2-4aaf-9225-485945aa7162",
         "rel":"self"
      }
   ],
   "created_at":"2019-10-25T12:01:05+00:00",
   "device_profile_group_id":0,
   "attach_handle_type":"TEST_PCI",
   "updated_at":"2019-10-25T12:49:49+00:00",
   "state":"Bound",
   "device_rp_uuid":"03631f82-20a9-3f67-a29d-dc1abe4042bf",
   "device_profile_name":"device-profile-name1",
   "attach_handle_info":{
      "device":"00",
      "bus":"0c",
      "domain":"0000",
      "function":"0"
   }
}
DELETE
/v2/accelerator_requests?arqs={accelerator_request_uuid}

按 ARQ uuid 删除加速器请求

DELETE
/v2/accelerator_requests?instance={instance_uuid}

按实例 uuid 删除加速器请求

删除加速器请求。不需要查询参数。

响应

正常响应代码:204

成功的 DELETE 查询的响应中没有 body 内容

设备

列出、显示设备的详细信息。启用或禁用设备。

一个 device 代表一个物理卡,例如 FPGA 卡或 GPU 卡。

GET
/v2/devices

列出设备

列出所有设备的 UUID、名称、类型等信息。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

type (可选)

查询

字符串

设备的类型。

vendor (可选)

查询

字符串

设备的 vendor ID。

hostname (可选)

查询

字符串

设备所在的计算节点的 hostname。

filters (可选)

查询

数组

一个 FilterType 列表(json 字符串格式),用于按筛选器获取设备列表。

响应

名称

入参

类型

描述

devices

body

数组

一个 devices 对象列表。

uuid

body

字符串

设备的 UUID。

type

body

字符串

设备类型。

供应商

body

字符串

设备的 vendor。

model

body

字符串

设备的型号。

std_board_info

body

字符串

设备的标准板信息。

vendor_board_info

body

字符串

设备的 vendor 板信息。

hostname

body

字符串

设备的 host name。

status

body

字符串

设备的状态。维护中或启用。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例响应:列出所有设备

{
    "devices":
    [
        {
            "uuid": "359c0990-0258-44fd-8b05-fc510ac3d022",
            "type": "FPGA",
            "vendor": "0xABCD",
            "model": "miss model info",
            "std_board_info": "{'device_id': '0xabcd', 'class': 'Fake class'}",
            "vendor_board_info": "fake_vendor_info",
            "hostname": "computenode",
            "created_at": "2020-03-13T02:26:31+00:00",
            "updated_at": null,
            "links":
            [
                {
                    "href": "https:///accelerator/v2/devices/359c0990-0258-44fd-8b05-fc510ac3d022",
                    "rel": "self"
                }
            ]
        }
    ]
}
GET
/v2/devices/{device_uuid}

获取一个设备

使用指定的 UUID 获取一个设备的 UUID、名称、类型等信息。

正常响应代码:200

错误响应代码:请求错误(400)、未授权(401)、禁止(403)、未找到(404)

请求

名称

入参

类型

描述

device_uuid

路径

字符串

设备的 UUID。如果不是有效的 UUID,API 将返回 400。

响应

名称

入参

类型

描述

uuid

body

字符串

设备的 UUID。

type

body

字符串

设备类型。

供应商

body

字符串

设备的 vendor。

model

body

字符串

设备的型号。

std_board_info

body

字符串

设备的标准板信息。

vendor_board_info

body

字符串

设备的 vendor 板信息。

hostname

body

字符串

设备的 host name。

status

body

字符串

设备的状态。维护中或启用。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例响应:显示特定设备的详细信息

{
    "uuid": "359c0990-0258-44fd-8b05-fc510ac3d022",
    "type": "FPGA",
    "vendor": "0xABCD",
    "model": "miss model info",
    "std_board_info": "{'device_id': '0xabcd', 'class': 'Fake class'}",
    "vendor_board_info": "fake_vendor_info",
    "hostname": "computenode",
    "created_at": "2020-03-13T02:26:31+00:00",
    "updated_at": null,
    "links":
    [
        {
            "href": "https:///accelerator/v2/devices/359c0990-0258-44fd-8b05-fc510ac3d022",
            "rel": "self"
        }
    ]
}
POST
/v2/devices/{device_uuid}/enable

启用设备

将设备设置为启用状态。

正常响应代码:200

错误响应代码:404(未找到设备),403(角色不是管理员)

请求

名称

入参

类型

描述

device_uuid

路径

字符串

设备的 UUID。如果不是有效的 UUID,API 将返回 400。

响应

成功的请求的响应中没有 body 内容。

POST
/v2/devices/{device_uuid}/disable

禁用设备

将设备设置为维护状态。

正常响应代码:200

错误响应代码:404(未找到设备),403(角色不是管理员)

请求

名称

入参

类型

描述

device_uuid

路径

字符串

设备的 UUID。如果不是有效的 UUID,API 将返回 400。

响应

成功的请求的响应中没有 body 内容。

可部署项

列出、显示可部署项的详细信息。

一个 deployables 代表加速卡的一个逻辑单元,例如 FPGA 卡的可重新配置区域。

GET
/v2/deployables

列出可部署项

列出所有可部署项的 UUID、名称、属性列表等信息。

正常响应代码:200

错误响应代码:请求错误(400)、未授权(401)、禁止(403)、内部服务器错误(500)

请求

名称

入参

类型

描述

filters (可选)

查询

字符串

一个 FilterType 列表(json 字符串格式)。

响应

名称

入参

类型

描述

deployables

body

数组

这是一个字典列表,每个字典代表一个可部署对象。

uuid

body

字符串

可部署项的 UUID。

parent_id

body

字符串

parent_id 指的是可部署项的父节点的 id。

root_id

body

字符串

root_id 指的是可部署项的根 id,用于嵌套树。

name

body

字符串

可部署项的名称。

num_accelerators (可选)

body

整数

此可部署项生成的加速器数量。

device_id

body

整数

与可部署项关联的设备的 ID。

attributes_list

body

字符串

一个字典列表(json 字符串格式),表示可部署项的属性。

rp_uuid

body

字符串

与此可部署项对应的资源提供者的 UUID。

driver_name

body

字符串

报告的驱动程序名称。

bitstream_id

body

字符串

与可部署项对应的 bitstream 的 UUID。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例响应:列出所有可部署项

{
   "deployables":
   [
      {
         "uuid": "29e23349-12ee-4978-963c-11484a4ae601",
         "parent_id": null,
         "root_id": null,
         "name": "computenode_FakeDevice",
         "num_accelerators": 16,
         "device_id": 1,
         "attributes_list": "[{'traits1': 'CUSTOM_FAKE_DEVICE'}, {'rc': 'FPGA'}]",
         "rp_uuid": "853f07a6-19de-3dd6-b9f6-6c782daa3f7b",
         "driver_name": "fake",
         "bitstream_id": null,
         "created_at": "2020-03-13T02:27:35+00:00",
         "updated_at": "2020-03-13T02:27:36+00:00",
         "links":
         [
            {
               "href": "https:///accelerator/v2/deployables/29e23349-12ee-4978-963c-11484a4ae601",
               "rel": "self"
            },
            {
               "href": "https:///accelerator/deployables/29e23349-12ee-4978-963c-11484a4ae601",
               "rel": "bookmark"
            }
         ]
      }
   ]
}
GET
/v2/deployables/{deployable_uuid}

获取一个可部署项

使用指定的 UUID 获取一个可部署项的 UUID、名称、属性列表等信息。

正常响应代码:200

错误响应代码:请求错误(400)、未授权(401)、禁止(403)、未找到(404)

请求

名称

入参

类型

描述

deployable_uuid

路径

字符串

可部署项的 UUID。如果不是有效的 UUID,API 将返回 400。

响应

名称

入参

类型

描述

uuid

body

字符串

可部署项的 UUID。

parent_id

body

字符串

parent_id 指的是可部署项的父节点的 id。

root_id

body

字符串

root_id 指的是可部署项的根 id,用于嵌套树。

name

body

字符串

可部署项的名称。

num_accelerators (可选)

body

整数

此可部署项生成的加速器数量。

device_id

body

整数

与可部署项关联的设备的 ID。

attributes_list

body

字符串

一个字典列表(json 字符串格式),表示可部署项的属性。

rp_uuid

body

字符串

与此可部署项对应的资源提供者的 UUID。

driver_name

body

字符串

报告的驱动程序名称。

bitstream_id

body

字符串

与可部署项对应的 bitstream 的 UUID。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例响应:显示特定可部署项的详细信息

{
   "uuid": "29e23349-12ee-4978-963c-11484a4ae601",
   "parent_id": null,
   "root_id": null,
   "name": "computenode_FakeDevice",
   "num_accelerators": 16,
   "device_id": 1,
   "attributes_list": "[{'traits1': 'CUSTOM_FAKE_DEVICE'}, {'rc': 'FPGA'}]",
   "rp_uuid": "853f07a6-19de-3dd6-b9f6-6c782daa3f7b",
   "driver_name": "fake",
   "bitstream_id": null,
   "created_at": "2020-03-13T02:27:35+00:00",
   "updated_at": "2020-03-13T02:27:36+00:00",
   "links":
   [
      {
         "href": "https:///accelerator/v2/deployables/29e23349-12ee-4978-963c-11484a4ae601",
         "rel": "self"
      },
      {
         "href": "https:///accelerator/deployables/29e23349-12ee-4978-963c-11484a4ae601",
         "rel": "bookmark"
      }
   ]
}

属性

列出、显示、创建和删除属性。

一个 attribute 代表 FPGA 或 GPU 等物理卡的 trait。

GET
/v2/attributes

列出属性

列出 UUID、deployable_id、key、value 和所有设备的更多信息。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

attribute_request_depid

查询

整数

与属性关联的 deployable 的 ID。

响应

名称

入参

类型

描述

属性

body

数组

一个 attributes 对象列表。

uuid

body

字符串

属性的 UUID。

id

body

整数

属性的 ID。

deployable_id

body

整数

与属性关联的 deployable 的 ID。

key

body

字符串

属性的 key。

value

body

字符串

属性的 value。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例响应:列出所有属性

{
    "attributes":
    [
        {
            "uuid": "359c0990-0258-44fd-8b05-fc510ac3d024",
            "id": 0,
            "deployable_id": 1,
            "key": "rc",
            "value": "FPGA",
            "created_at": "2023-03-13T02:26:31+00:00",
            "updated_at": null,
            "links":
            [
                {
                    "href": "https:///accelerator/v2/attributes/359c0990-0258-44fd-8b05-fc510ac3d024",
                    "rel": "self"
                }
            ]
        }
    ]
}
GET
/v2/attributes/{attribute_uuid}

获取单个属性

获取具有指定 UUID 的属性的 UUID、id、deployable_id、key、value 等信息。

正常响应代码:200

错误响应代码:请求错误(400)、未授权(401)、禁止(403)、未找到(404)

请求

名称

入参

类型

描述

attribute_uuid

路径

字符串

属性的 UUID。

响应

名称

入参

类型

描述

uuid

body

字符串

属性的 UUID。

id

body

整数

属性的 ID。

deployable_id

body

整数

与属性关联的 deployable 的 ID。

key

body

字符串

属性的 key。

value

body

字符串

属性的 value。

created_at

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated_at

body

字符串

资源被更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

links

body

数组

指向相关资源的链接。

示例响应:显示特定属性的详细信息

{
    "uuid": "359c0990-0258-44fd-8b05-fc510ac3d024",
    "id": 0,
    "deployable_id": 1,
    "key": "rc",
    "value": "FPGA",
    "created_at": "2023-03-13T02:26:31+00:00",
    "updated_at": null,
    "links":
    [
        {
            "href": "https:///accelerator/v2/attributes/359c0990-0258-44fd-8b05-fc510ac3d024",
            "rel": "self"
        }
    ]
}
POST
/v2/attributes

创建属性

创建属性。有效载荷应包含以下字段

请求

名称

入参

类型

描述

deployable_id

body

整数

与属性关联的 deployable 的 ID。

key

body

字符串

属性的 key。

value

body

字符串

属性的 value。

示例 post curl

curl -g -i -X POST $cyborg_endpoint_url/attributes \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "User-Agent:None" \
  -H "X-Auth-Token: yourtoken" \
  -d '{"deployable_id": "1",
       "key": "rc",
       "value": "FPGA"'

示例响应:创建属性

{
   "attributes":[
      {
          "uuid": "359c0990-0258-44fd-8b05-fc510ac3d024",
          "id": 0,
          "deployable_id": 1,
          "key": "rc",
          "value": "FPGA",
          "created_at": "2023-03-13T02:26:31+00:00",
          "updated_at": null,
          "links":
          [
              {
                  "href": "https:///accelerator/v2/attributes/359c0990-0258-44fd-8b05-fc510ac3d024",
                  "rel": "self"
              }
          ]
      }
   ]
}
DELETE
/v2/attributes/{attribute_uuid}

通过 UUID 删除单个属性

删除属性。无需查询参数。