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

引入