Cyborg 内部 API 规范

本文档大致规定了 Cyborg 各组件之间的 API 调用。驱动程序、Agent、Conductor 和 API 端点。

这些 API 是内部的,因此可能会在版本之间发生变化,恕不另行通知或保持向后兼容性。本文档作为开发者参考,在进行任何内部破坏性更改之前进行编辑。

问题描述

编写 Cyborg 组件的开发者需要知道如何与 Cyborg 的另一个组件通信,希望不必深入研究该组件的代码。

用例

更快乐的 Cyborg 开发者

提议的变更

内部 API 的版本控制

备选方案

一团糟

数据模型影响

固定的内部 API 有助于保持数据模型的一致性。

REST API 影响

API 更改将向以下添加资源端点

驱动程序

  • POST 从 Agent 开始加速器发现

  • GET 从 Agent 获取已发现的加速器及其属性的列表

Agent

  • POST 从 Driver 注册驱动程序

  • POST 从 Conductor 开始跨所有驱动程序的加速器发现

  • GET 从 Conductor 获取跨所有驱动程序的所有加速器列表

Conductor: * POST 从 Agent 注册 Agent

将创建以下新的 REST API 调用

Driver ‘POST /discovery’

触发特定驱动程序的发现和设置过程

Content-Type: application/json

{
   "status":"IN-PROGRESS"
}

Driver ‘GET /hardware’

获取硬件列表,而不是加速器。加速器是可通过公共 API 使用的已准备好的条目。硬件是节点上的物理设备,可能尚未准备好使用,甚至完全支持。

200 OK
Content-Type: application/json

{
   "hardware":[
    {
      "uuid":"8e45a2ea-5364-4b0d-a252-bf8becaa606e",
      "acc_specs":
      {
         "remote":0,
         "num":1,
         "device_type":"CRYPTO"
         "acc_capability":
         {
            "num":2
            "ipsec":
            {
               "aes":
               {
                  "3des":50,
                  "num":1,
               }
            }
         }
       }
       "acc_status":
       {
         "setup_required":true,
         "reboot_equired":false
       }
     }]
}

Driver ‘POST /hello’

注册驱动程序已安装在机器上并已准备好使用。以及它的端点和硬件支持。

Content-Type: application/json

{
   "status":"READY",
   "endpoint":"localhost:1337",
   "type":"CRYPTO"
}

Agent ‘POST /discovery’

触发所有已注册驱动程序的发现和设置过程

请参阅驱动程序示例

Agent ‘GET /hardware’

获取节点上所有驱动程序的硬件列表

请参阅驱动程序示例

Conductor ‘POST /hello’

注册 Agent 已安装在机器上并已准备好使用。

Content-Type: application/json

{
   "status":"READY",
   "endpoint":"compute-whatever:1337",
}

安全影响

必须小心保护内部端点免受恶意调用

通知影响

N/A

其他最终用户影响

此更改可能会对 python-cyborgclient 产生影响

性能影响

在这种模型中,Agent 负责处理计算中的多个驱动程序,而 Conductor 负责处理所有 Agent,以便快速轻松地向 API 呈现连贯的答案。我尚未包含 API <-> Conductor 调用,因为我假设 API 将主要从数据库工作,而 Conductor 尝试使该数据库保持最新,并偶尔进行设置调用。

其他部署者影响

在这种模型中,我们实际上无法知道我们是否缺少 Agent。如果它之前报告过,然后消失了,我们可以为此发出警报。但是,如果 Agent 从未报告过,我们只能假设该名称下不存在实例。这意味着确保 Cyborg 驱动程序/Agent 已安装并正在运行是部署工具的责任。

开发者影响

Cyborg 中更多的内部通信

实现

负责人

主要负责人

jkilpatr

其他贡献者

zhuli

工作项

N/A

依赖项

N/A

测试

N/A

文档影响

N/A

参考资料

N/A

历史记录

修订版

发布名称

描述

Queens

引入