为 api 添加动作列表

正如 API 允许我们查询数据源提供的可用表一样,应该能够查询数据源可以执行的可用动作。

问题描述

目前,数据源具有执行动作的能力,但没有 API 调用来询问可用的动作是什么。

提议的变更

添加一个返回可用动作列表的 API 调用。

这需要在 congress/datasources/datasource_driver.py:ExecutionDriver 类中添加一个方法,该方法返回数据源将执行的动作列表。

如果 ExecutionDriver 也能强制只执行该列表中的动作,那就更好了。

可以考虑尝试基于所用 python-client 中的可用方法自动生成动作列表(对于使用 python-client 的数据源)。

备选方案

另一种方法是不提供 API,而是要求人们查阅文档以查找可用动作的列表。

这听起来比实际更有吸引力,因为它使我们能够执行底层数据源的 python-client 暴露的任何动作。如果有人为 python-client 添加了一个新方法,那么策略编写者可以立即访问该方法,而无需在 Congress 中进行任何更改。

这种方法的缺点是,最终用户需要了解每个数据源驱动程序中使用的 python client,然后查找该 python client 的文档。因此,在可用性方面,它非常糟糕。

策略

N/A

策略动作

N/A

数据源

N/A

数据模型影响

不应有数据模型影响,因为添加的信息是作为数据源驱动程序的一部分实现的,而不是存储在数据库中。

REST API 影响

GET /v1/data-sources/<datasource-id>/actions

如果数据源未实现正确的方法,则应报错。

结果应为字典数组,其中每个字典描述一个动作
[{‘name’: <action-name>,

‘args’: <list-of-parameter-names>}]

分配者可以自由地扩展动作的字段,以包含其他元信息,例如动作的描述,或者每个参数的描述。

安全影响

N/A

通知影响

N/A

其他最终用户影响

需要在 python-congressclient 中添加类似的功能。

性能影响

N/A

其他部署者影响

N/A

开发者影响

N/A

实现

负责人

主要负责人

<launchpad-id 或 None>

其他贡献者

<launchpad-id 或 None>

工作项

  1. 修改 API 设计文档(链接自 wiki)

  2. 在 congress/datasources/datasource_driver.py 中添加 ExecutionDriver 方法

  3. 在 congress/harness.py 中添加调用处理程序

  4. 在 congress/api/router.py 中添加路由调用

  5. 在 congress/api/action_model.py 中添加 API 实现

  6. 更新 python-congressclient

依赖项

N/A

测试

  • 在 congress/tests/test_congress.py 中进行 API 的单元测试

  • ExecutionDriver 的单元测试

文档影响

添加 API 调用

参考资料

N/A