添加 os-xenapi 库¶
https://blueprints.launchpad.net/nova/+spec/add-os-xenapi-library
XenAPI 目前涉及多个 OpenStack 项目(例如 Nova、Neutron、Ceilometer[1]),并且未来可能涉及其他项目。通过创建一个新的公共项目来持有通用的 XenAPI 代码,这将有助于减少这些项目之间的重复;同时,也使得维护、审查和提出对当前和未来项目的更改更加容易。
问题描述¶
目前在不同的项目中存在几个几乎相同的 XenAPI 类。
我们可以将这些类重构到公共项目 os-xenapi 中。这将减少代码重复并使其更易于维护。
特别是,会话管理和 XAPI 插件之间存在重复。
此外,这些 XAPI 插件无法符合新的 Python 标准,因为它们运行在 XenServer 的 dom0 中,那里只有 Python2.4(XenServer 6.5 及更早版本)。这使得修改插件变得棘手,并且给以与 Nova 其余部分兼容的方式为这些插件添加单元测试带来麻烦。
用例¶
此蓝图影响开发者和审查者。
开发者可以直接向 os-xenapi 提交 xenapi 相关的提交。
Nova 审查者无需审查低级别的 xenapi 相关代码。
提议的变更¶
Nova 需要进行的主要更改如下
将类从 nova/virt/xenapi/client/ 复制到 os-xenapi。
将插件从
plugins/xenserver/xenapi/etc/xapi.d/plugins复制到 os-xenapi。在 requirements.txt 中添加 os-xenapi
将 XenAPI 驱动程序使用的所有
nova.virt.xenapi.client导入替换为“os_xenapi.client”。改进 Nova 和 os-xenapi 之间的接口,以便通过 python 调用 os-xenapi 来调用 dom0 插件,从而使用 os-xenapi 提供版本一致性,而不是对 dom0 中的插件进行显式的 API 检查。
备选方案¶
继续在 OpenStack 项目之间复制会话处理和 XenServer 插件。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
为了使用 XenAPI 驱动程序,必须安装 os-xenapi 依赖项。
开发人员影响¶
在典型的场景中,Nova XenAPI 驱动程序的蓝图实现可能需要两个部分
os-xenapi 发布,添加实现蓝图所需的 xenapi 相关工具。
nova 提交,实现蓝图并使用 os-xenapi 中的更改。
如果 Nova 提交需要对 os-xenapi 进行更改,我们必须发布新版本的 os-xenapi。Nova 更改需要更新 Nova 的 requirements 文件,以便引入所需的更改,并且它必须依赖于全局 requirements 更改,该更改会提高 os-xenapi 的全局最小版本。
如果我们需要将 Nova 的修复程序回溯到 pre-os-xenapi 世界,并且此修复程序依赖于 os-xenapi 中合并的更改,则 Nova 回溯提交也应涵盖所需的更改,这些更改等效于 os-xenapi 中的更改。
实现¶
负责人¶
- 主要负责人
Huan Xie <huan.xie@citrix.com>
- 其他贡献者
Jianghua Wang <jianghua.wang@citrix.com> Bob Ball <bob.ball@citrix.com>
工作项¶
如“Proposed change”(提议的更改)部分所述。
依赖项¶
必须实现 os-xenapi 库。
测试¶
os-xenapi 将包含所有移动功能的单元测试
Citrix 的 Xenserver CI 将继续测试 XenAPI 更改,当使用 os-xenapi 时。
文档影响¶
无
参考资料¶
[1] Ceilometer 中的 XenAPI 支持:https://specs.openstack.org/openstack/ceilometer-specs/specs/juno/xenapi-support.html
历史¶
发布名称 |
描述 |
|---|---|
Ocata |
引入 |