将通用功能提取到驱动程序超类中,包括数据转换

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/congress/+spec/refactor-drivers

目前,每个数据源驱动程序都包含将 API 调用响应中的数据转换为 Congress 数据表的代码。此更改将使开发人员更容易添加每个增量数据源驱动程序。

问题描述

如今,编写数据源驱动程序需要比必要的更多的代码。

代码编写也比必要地更困难。其中一些 API 响应(例如 neutron list networks)包含嵌套数据,例如在网络列表中,每个网络可以包含子网的子列表。驱动程序为子网填充一个单独的表,并创建一个键来链接网络表和子网表。

提议的变更

为了通用化驱动程序,此更改将允许驱动程序类指定如何从 API 响应中提取数据,以及将响应数据放入哪个表/字段。

为了处理子列表转换,驱动程序类将指定一个字段是否为子列表,然后也指定一个键,以便主表可以链接到子表。这种子列表关系将是递归的,以便子列表也可以包含另一个子列表。

备选方案

策略

策略操作

数据源

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

此更改在合并后将立即生效,但 Congress 的行为应与更改前完全相同。

开发者影响

新的重构将改变程序员编写数据源驱动程序的方式。新方法应该更容易、需要更少的代码并且更不容易出错。为了利用新的重构,我们需要重写现有的驱动程序,但这不必与编写新的数据源驱动程序超类同时进行。

实现

负责人

ayip

工作项

  1. 编写新的超类。

  2. 重写 Nova 驱动程序。

  3. 重写 Neutron 驱动程序。

  4. 重写 Keystone 驱动程序。

依赖项

测试

超类的单元测试,并修改现有驱动程序的测试用例。

文档影响

此更改将包含有关如何使用新的数据源驱动程序超类的新的文档。

参考资料