更新驱动到新的基础类结构

https://blueprints.launchpad.net/cinder/+spec/abc-driver-update

新的 abc 结构由 bp/abc-volume-drivers [1] 引入。所有驱动程序都需要更新才能受益于新的结构。

问题描述

与在运行时引发 NotImplementedErrors 不同,此功能允许在启动时发现驱动程序的特性集,并使其可被 CI/代码检查系统发现。

用例

支持矩阵(参见 [2] 获取草案实现)可以提取出来,以查看新功能迁移到所有驱动程序实现的通用函数的过程。

提议的变更

所有 cinder 卷驱动程序都需要使用以下方法进行更新

class FooDriver(driver.RetypeVD, driver.TransferVD, driver.ExtendVD,
                driver.CloneableVD, driver.CloneableImageVD,
                driver.SnapshotVD, driver.BaseVD)

驱动程序必须继承自 BaseVD 并实现基本函数。为了标记驱动程序是否实现进一步的特性集,它必须继承自相应的类。

如果所有驱动程序都实现某个特性集,则这些函数将在最后移动到 BasicVD 中。

备选方案

无需移植,否则 [1] 将毫无意义。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

参见 [1]

其他部署者影响

无。

开发人员影响

此更改将略微更改所有已实现的驱动程序。功能本身不应更改,但所有驱动程序都需要采用新的类模型。

实现

负责人

主要负责人

Marc Koderer (m-koderer)

其他贡献者

所有驱动程序维护者

工作项

必要时使用 Etherpad。

依赖项

无。

测试

需要调整单个驱动程序的单元测试。

文档影响

无。

参考资料

[1]: https://review.openstack.org/#/c/114168/ [2]: https://review.openstack.org/#/c/160346/