使用 os-brick 库进行 libvirt 卷驱动¶
https://blueprints.launchpad.net/nova/+spec/use-os-brick-library
将 os-brick 库的使用引入 Nova。该库将在支持的所有协议的 libvirt 卷驱动中用于卷发现和移除。os-brick 还会用于收集发起程序信息,即连接器对象,在卷附加期间传递给 Cinder。
问题描述¶
在过去的几个 OpenStack 版本中,Cinder 和 Nova 在卷发现和移除方面存在重复代码。自 Havana 版本发布以来,Cinder 已经孵化了一个名为 ‘brick’ 的嵌入式库。brick 库的目的是收集发起程序信息,发现附加到主机的卷,以及移除已附加的卷。这本质上就是 Nova 的 libvirt 卷驱动的目的。
Cinder 在 Liberty 版本开始时正式移除了嵌入式 brick 库,并切换到使用 pypi os-brick 库。
本规范概述了 Nova 的 libvirt 卷驱动中重复代码的移除,这些代码存在于 os-brick 库中。
用例¶
使用 os-brick 库的主要用例是 Nova 需要附加或分离卷时。主要工作流程如下:Nova 将发起程序信息收集到连接器对象中,该对象传递给 Cinder 以导出卷。Cinder 将目标信息传回,Nova 使用该目标信息来发现显示的卷。Nova 将使用 os-brick 库来执行这项工作,而不是使用 Nova 内部的代码来收集发起程序信息并发现显示的目标卷。os-brick 库还将用于卷移除,当 Nova 需要分离卷时。
项目优先级¶
无
提议的变更¶
首先,os-brick 需要成为 Nova 的新依赖项。然后,重构 libvirt 卷驱动,移除它们内部的卷发现和移除代码,并用对 os-brick 连接器对象的调用替换代码。最后,替换 Nova virt/utils 代码,该代码收集在卷附加时传递给 Cinder 的发起程序信息。
备选方案¶
Nova 可以继续拥有与 os-brick 执行相同工作的重复代码。这不太理想,因为修复错误和添加新功能需要在 Nova 和 os-brick 中完成。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
os-brick 将成为 Nova 所需的 pypi 库。
开发人员影响¶
使用此外部库的一个积极好处是,Nova 团队不必维护 os-brick 代码的内部细节,用于卷发现和移除。os-brick 由 Cinder 团队拥有,任何错误修复和新功能添加都将使 Nova 受益。
实现¶
负责人¶
谁在编写代码?或者这是一个蓝图,您正在将其抛出以查看谁会接受它?
如果有多个人正在进行实现,请指定主要作者和联系人。
- 主要负责人
walter-boring
工作项¶
将 Nova 的代码转换为使用 os-brick 来收集发起程序信息到连接器对象中。
将每个受支持的 libvirt 卷驱动转换为使用 os-brick 连接器对象。
重构 libvirt 卷驱动的单元测试。
依赖项¶
将 os-brick 库作为 Nova 的依赖项导入。
测试¶
为了正确地测试,我们必须更改 Nova 中查看 iSCSI、FC 等卷发现内部细节的单元测试,以测试 os-brick 库 API。确保为每个受支持的传输正确加载每个 os-brick 连接器对象。
我们将依赖于 os-brick 单元测试和发布,以确保卷发现和移除正常工作,因此无需测试 iSCSI 卷附加工作方式的所有内部细节。
文档影响¶
我们只是将 Nova 嵌入式 libvirt 卷驱动中现有的卷发现和移除功能移动到使用 os-brick。因此,没有文档影响。
参考资料¶
历史¶
在 Havana 时代,我们讨论了为 Nova 和 Cinder 创建一个共享库的想法,用于执行卷发现和移除以及本地卷管理。os-brick 库是朝着该方向迈出的第一步,它解决了卷发现和移除共享代码的问题。
发布名称 |
描述 |
|---|---|
Liberty |
引入 |