为 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>
工作项¶
修改 API 设计文档(链接自 wiki)
在 congress/datasources/datasource_driver.py 中添加 ExecutionDriver 方法
在 congress/harness.py 中添加调用处理程序
在 congress/api/router.py 中添加路由调用
在 congress/api/action_model.py 中添加 API 实现
更新 python-congressclient
依赖项¶
N/A
测试¶
在 congress/tests/test_congress.py 中进行 API 的单元测试
ExecutionDriver 的单元测试
文档影响¶
添加 API 调用
参考资料¶
N/A