移除 openvswitch 运行时版本检查

Launchpad蓝图

https://blueprints.launchpad.net/neutron/+spec/remove-openvswitch-version-check

当前检查 openvswitch 和内核版本以支持特定功能的方法脆弱、特定于发行版且无法维护。

问题描述

当启用 VXLAN 隧道时,使用 openvswitch 的 agent 会调用 ovs_lib 代码来检查安装的内核和 openvswitch 版本是否大于指定的最低版本。 由于 1) modinfo 返回的字段在发行版之间存在差异以及 2) 由于回溯移植的做法,所需的最低版本也存在差异,这种运行时检查方法会失败。

除了 VXLAN 之外,未来还需要测试其他特定的 openvswitch 功能。 随着功能、版本和发行版的增加,检查版本号变得越来越不可持续,不应在 agent 启动时进行,而应在软件包安装或部署时进行。

提议的变更

试图通过版本号跨多个发行版测试功能是徒劳的。 最好将依赖项管理交给发行版和打包,因为它们是唯一真正了解其环境中存在的版本依赖项的人。 应该完全从 ovs_lib 和 agent 中删除运行时检查。

如果尝试使用特定 openvswitch 功能失败,应记录一条有用的错误消息,建议更新 openvswitch 可能可以解决问题。

为了帮助部署工具,将创建一个脚本,该脚本尝试使用特定的 openvswitch 功能,并在成功时退出 0,在失败时退出 1。 这样,如果启用了该功能但在当前的 openvswitch/内核版本中不可用,则可以中止部署,例如在 devstack 中,而无需跟踪版本号或在 agent 启动时进行繁琐的运行时功能检查。

备选方案

Openvswitch 没有查询其是否支持某些功能的能力,因此可靠地测试运行时功能存在的唯一方法是尝试使用该功能并查看它是否有效。 尝试在 agent 启动时使用所有必需的 OVS 功能并在失败时退出 agent 是可行的,但过于繁琐。 依赖项管理应在打包和/或部署时处理,而不是每次启动 agent 时通过修改系统状态来检查。

数据模型影响

N/A

REST API 影响

N/A

安全影响

N/A

通知影响

N/A

其他最终用户影响

N/A

性能影响

移除检查后,使用 openvswitch 的 agent 几乎没有改进。

其他部署者影响

现有的部署不受影响,因为它们已经具有其部署的适当依赖项。

使用发行版打包的部署不受影响,因为依赖项将由打包处理。

源代码安装,例如 devstack,应运行功能测试脚本以验证系统中是否已安装了适当版本的 openvswitch。

开发人员影响

使用 openvswitch 的 agent 在使用特定版本 openvswitch 功能时不再需要检查 openvswitch 版本。 由于删除了版本检查功能,因此测试得到了简化,不再需要测试版本检查功能。

Devstack 也可以修改为在部署之前运行外部功能测试脚本,并在配置/依赖项不匹配的情况下尽早失败。

实现

负责人

主要负责人

otherwiseguy

工作项

  • 移除运行时版本检查和相关的测试

  • 创建功能测试脚本

这本质上是对

的重构,将其分为两部分:运行时检查 -> 单独的脚本和该补丁中现有的代码删除。

依赖项

N/A

测试

由于此实现主要删除不应存在代码,因此也消除了测试版本检查代码的需要。

文档影响

N/A

参考资料

N/A