添加 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

https://review.openstack.org/#/c/230394/

[2] os-win 仓库

https://github.com/openstack/os-win

[3] Hyper-V 虚拟化平台文档页面

https://docs.openstack.org/liberty/config-reference/content/hyper-v-virtualization-platform.html

历史

Mitaka: 引入