支持属性 API

此规范添加了一组新的 API 来管理加速器的属性生命周期。

问题描述

属性旨在描述加速器的自定义信息。目前它们由驱动程序生成,用户无法添加/删除/更新它们,这不适用于我们现在的场景。

用例

管理员或操作员需要一组 API 来管理其加速器的属性。以下是一些有用的场景

  • 对于网卡加速器,我们需要添加一个 phys_net 属性,它应该由部署者或其他组件创建。

  • 对于某些功能易失性加速器,我们可以将功能名称创建为属性。

  • 此外,对于某些信息,例如 Function_UUID 是机器可读的。

提议的变更

备选方案

数据模型影响

  • 将属性对象添加到可部署对象。

REST API 影响

URL: /v2/deployable/{uuid}/attribute

METHOD: GET

列出指定可部署对象的所有属性。

正常响应代码 (200) 和主体

{
    "attributes":[{
        "key":"key1",
        "value":"value1",
        "uuid":"uuid1"
        }
    ]
}

错误响应代码和主体

  • 401 (Unauthorized): 未授权

  • 403 (Forbidden): RBAC 检查失败

  • 无响应主体

URL: /v2/deployable/{uuid}/attribute/{uuid_or_key}

METHOD: GET

GET 指定可部署对象的指定属性。

查询参数: 无

正常响应代码 (200) 和主体

{
    "attribute":
    {
        "key":"key1",
        "value":"value1",
        "uuid":"uuid1",
        "created_at":"2020-05-28T03:03:20",
        "updated_at":"2020-05-28T03:03:20"
    }
}

错误响应代码和主体

  • 401 (Unauthorized): 未授权

  • 403 (Forbidden): RBAC 检查失败

  • 404 (NotFound): 不存在该 UUID 的可部署对象,或不存在该 UUID 的属性

  • 无响应主体

URL: /v2/deployable/{uuid}/attribute

METHOD: POST

创建一个或多个可部署属性。

请求主体

[
  {
    "key": "key1",
    "value": "value1"
 },
  {
    "key": "key2",
    "value": "value2"
  },
 ...
]

正常响应代码和主体

  • 204 (No content): 无内容

  • 无响应主体

错误响应代码

  • 401 (Unauthorized): 未授权

  • 403 (Forbidden): RBAC 检查失败

  • 409 (Conflict): 输入错误或键不唯一

错误响应主体

{"error": "error-string"}

URL: /v2/deployable/{uuid}/attribute/{uuid_or_key}

METHOD: DELETE

删除现有的可部署属性。

查询参数: 无

正常响应代码和主体

  • 204 (No content): 无内容

  • 无响应主体

错误响应代码

  • 401 (Unauthorized): 未授权

  • 403 (Forbidden): RBAC 检查失败

  • 404 (NotFound): 不存在该 UUID 的可部署对象,或不存在该 UUID 的属性

错误响应主体

{"error": "error-string"}

URL: /v2/deployable/{uuid}/attribute

METHOD: DELETE

删除可部署对象的所有属性。

查询参数: 无

正常响应代码和主体

  • 204 (No content): 无内容

  • 无响应主体

错误响应代码

  • 401 (Unauthorized): 未授权

  • 403 (Forbidden): RBAC 检查失败

错误响应主体

{"error": "error-string"}

URL: /v2/deployable/{uuid}/attribute/{uuid_or_key}

METHOD: PUT

更新现有的可部署属性。

查询参数: 无

请求主体 (可部署属性的值)

{"value": "value1"}

正常响应代码和主体

  • 204 (No content): 无内容

  • 无响应主体

错误响应代码和主体

  • 401 (Unauthorized): 未授权

  • 403 (Forbidden): RBAC 检查失败

  • 404 (NotFound): 不存在该 UUID 的可部署对象,或不存在该 UUID 的属性

错误响应主体

{"error": "error-string"}

安全影响

通知影响

其他最终用户影响

  • 更改 Cyborg 属性表。

性能影响

其他部署者影响

开发者影响

  • 如果用户想使用这些功能,他们应该将他们的 Cyborg

  • 项目升级到最新版本以支持这些更改。

实现

负责人

主要负责人

hejunli

工作项

  • 更改 Cyborg REST API。

  • 更改 Cyborg 属性表。

  • 更改 Cyborg 可部署对象。

  • 更改 cyborgclient 以支持属性管理操作。

  • 添加相关的测试。

依赖项

测试

应添加适当的单元和功能测试。

文档影响

  • 需要文档来记录微版本历史记录。

  • 需要一份文档来解释 API 的使用方法。

参考资料

历史记录

修订版

发布名称

描述

Antelope

引入