将通用功能提取到驱动程序超类中,包括数据转换¶
包含您的 Launchpad 蓝图的 URL
https://blueprints.launchpad.net/congress/+spec/refactor-drivers
目前,每个数据源驱动程序都包含将 API 调用响应中的数据转换为 Congress 数据表的代码。此更改将使开发人员更容易添加每个增量数据源驱动程序。
问题描述¶
如今,编写数据源驱动程序需要比必要的更多的代码。
代码编写也比必要地更困难。其中一些 API 响应(例如 neutron list networks)包含嵌套数据,例如在网络列表中,每个网络可以包含子网的子列表。驱动程序为子网填充一个单独的表,并创建一个键来链接网络表和子网表。
提议的变更¶
为了通用化驱动程序,此更改将允许驱动程序类指定如何从 API 响应中提取数据,以及将响应数据放入哪个表/字段。
为了处理子列表转换,驱动程序类将指定一个字段是否为子列表,然后也指定一个键,以便主表可以链接到子表。这种子列表关系将是递归的,以便子列表也可以包含另一个子列表。
备选方案¶
无
策略¶
无
策略操作¶
无
数据源¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
此更改在合并后将立即生效,但 Congress 的行为应与更改前完全相同。
开发者影响¶
新的重构将改变程序员编写数据源驱动程序的方式。新方法应该更容易、需要更少的代码并且更不容易出错。为了利用新的重构,我们需要重写现有的驱动程序,但这不必与编写新的数据源驱动程序超类同时进行。
依赖项¶
无
测试¶
超类的单元测试,并修改现有驱动程序的测试用例。
文档影响¶
此更改将包含有关如何使用新的数据源驱动程序超类的新的文档。
参考资料¶
无