添加禁用/启用设备 API¶
https://blueprints.launchpad.net/openstack-cyborg/+spec/disable-enable-device
目前,Cyborg 通过每个驱动程序在计算节点上发现设备。所有匹配驱动程序规范的设备都会被发现并报告给 Placement 服务作为加速器资源。本规范提出了一组新的 API,允许管理员禁用/启用设备。
问题描述¶
Cyborg 维护配置文件以配置启用的驱动程序。一旦驱动程序被启用,该驱动程序将发现所有 vendor ID、device ID 与驱动程序要求匹配的设备。如果管理员不希望所有设备被虚拟机使用,目前没有办法禁用设备。
用例¶
Alice 是一个管理员用户,她希望某些 FPGA 仅供自己使用,并且不允许它们被分配给虚拟机。例如,她想编程 FPGA 设备并将其用作主机上运行的 OVS 代理。
提议的变更¶
由于修改了 API 层,应该引入一个新的微版本。
还需要在 Device 对象和数据模型中添加一个新的字段来指示设备的状态。如果某个设备被禁用,状态应设置为“维护中”,如果设备被启用,状态应设置为“启用”。默认值应为“启用”。
Cyborg 需要调用 Placement API 来更新设备的“reserved”字段。
备选方案¶
无
数据模型影响¶
应在 Device 的数据模型中添加一个新的列 status。
REST API 影响¶
由于 Device API 已更改,需要引入一个微版本。
列出设备 API¶
返回设备列表 URL:
/devicesMETHOD:GET返回: 200
{
"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",
"device_status": "Enabled"
"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"
}
]
}
]
}
获取设备 API¶
通过 uuid 获取设备并返回详细信息 URL:
/devices/{uuid}METHOD:GET返回: 200
{
"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",
"status": "Enabled"
"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"
}
]
}
禁用设备 API¶
禁用设备 URL:
/devices/{device_uuid}/disableMETHOD:POST返回: 200 错误代码: 404(未找到设备),403(角色不是管理员)
启用设备 API¶
启用设备 URL:
/devices/{device_uuid}/enableMETHOD:POST返回: 200 错误代码: 404(未找到设备),403(角色不是管理员)
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
部署者需要将 Cyborg 更新到支持禁用/启用 API 的微版本。否则,禁用/启用 API 将被拒绝。
开发者影响¶
无
实现¶
负责人¶
- 主要负责人
anguoming(agm_daydayup@foxmail.com)
工作项¶
为设备表添加新的列 status。
在 DeviceController 中添加禁用/启用 API。
根据操作更新 RP reserved 字段。对于 disable 操作,reserved 字段需要设置为与 total 字段相同的值,对于 enable 操作,reserved 字段将设置为零。
在返回的值中添加 status 字段,更新 GET/LIST 设备 API。
在 cyborgclient 中添加禁用/启用操作。
添加单元测试。
依赖项¶
无
测试¶
需要添加单元测试,如果需要,添加 tempest 测试。
文档影响¶
需要添加相关文档。
参考资料¶
无
历史记录¶
可选部分,旨在每次更新规范时使用,以描述新的设计、API 或任何数据库模式更新。有助于让读者了解随着时间的推移发生了什么。
发布名称 |
描述 |
|---|---|
Xena |
引入 |
Bobcat |
重新提出 |