添加 os-win 依赖¶
https://blueprints.launchpad.net/nova/+spec/add-os-win-library
Hyper-V 涉及 OpenStack 的许多组件(nova、neutron、cinder、ceilometer 等),并且未来也将涉及其他组件。
为了减少所有这些组件之间的代码重复(实用程序类,通过 WMI 直接与 Hyper-V 交互),创建了一个通用库,名为 os-win,使其更容易维护、审查和提出对当前和未来组件的新更改。
问题描述¶
在多个项目中存在许多重复的 Hyper-V 实用程序模块,这些模块可以重构到 os-win 中,从而减少代码重复并使其更易于维护。此外,审查过程将得到简化,因为审查者不必审查不熟悉 Hyper-V 相关代码。
用例¶
此蓝图影响开发者和审查者。
开发者可以直接向 os-win 提交 Hyper-V 相关的提交。
审查者不必审查低级别的 Hyper-V 相关代码。因此,需要审查的代码量将减少大约 50%。
提议的变更¶
为了实现此蓝图,只需要进行最少的更改,因为行为将保持不变。
nova 需要进行的主要更改如下
在 requirements.txt 中添加 os-win
将
nova.virt.hyperv.vmutils.HyperVException引用替换为os_win.HyperVException将 HyperVDriver 使用的所有
nova.virt.hyperv.utilsfactory导入替换为os_win.utilsfactory删除
nova.virt.hyperv中的所有实用程序模块及其单元测试,因为它们将不再使用。其他琐碎的更改,将在实现中体现。
其他项目需要进行的更改
在 global-requirements.txt 中添加 os-win [1]
备选方案¶
最初,os-win 计划作为 Oslo 的一部分,但建议 os-win 应该是一个独立的工程,否则 Oslo 团队也需要维护它,而且很少有/没有人专门从事 Windows / Hyper-V 相关代码。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
为了使用 HyperVDriver,必须安装 os-win 依赖项。
开发人员影响¶
在典型的场景中,Hyper-V 驱动程序的蓝图实现需要 2 个部分
os-win 提交,添加实现蓝图所需的 Hyper-V 相关实用程序。
nova 提交,实现蓝图并使用 os-win 中的更改。
如果 nova 提交需要较新版本的 os-win,则提交消息中应引用 global-requirements 的补丁,并使用 Depends-On。
对于错误修复,可能需要 2 个补丁:一个用于 nova,一个用于 os-win。回溯的错误修复必须是 2 个补丁的压缩版本,并在提交消息中引用两个提交 ID
(cherry picked from commit <nova-commit-id>)
(cherry picked from commit <os-win-commit-id)
如果错误修复只需要一个补丁来修复某个项目,则回溯将像以前一样进行。
实现¶
负责人¶
- 主要负责人
Claudiu Belu <cbelu@cloudbasesolutions.com>
- 其他贡献者
Lucian Petrut <lpetrut@cloudbasesolutions.com>
工作项¶
如“Proposed change(提议的更改)”部分所述。
依赖项¶
添加 os-win 库作为依赖项。
测试¶
单元测试
Hyper-V CI
文档影响¶
Hyper-V 文档页面 [3] 需要更新,以包含 os-win 作为依赖项。
参考资料¶
- [1] os-win 添加到 global-requirements.txt
- [2] os-win 仓库
- [3] Hyper-V 虚拟化平台文档页面
https://docs.openstack.org/liberty/config-reference/content/hyper-v-virtualization-platform.html
历史¶
Mitaka: 引入