Heat 升级测试

https://blueprints.launchpad.net/heat/+spec/upgrade-tests

“手榴弹”项目的新方向是使用类似于 DevStack 的插件来支持升级测试。本规范旨在将升级测试基础设施纳入 Heat 的代码库中。

问题描述

目前,没有测试可以检查正在审核的补丁是否会破坏 Heat 从先前版本升级。

部署者在升级期间或升级后可能遇到的一些问题如下:

  • 部署的数据库无法成功迁移到最新的模式。

  • 在较旧版本中创建的堆栈无法在新版本中更新/删除。更新/删除工作流程的更改可能会导致现有的堆栈变得无用或永远处于 IN_PROGRESS 状态。

  • 当控制平面关闭时,物理资源消失。

  • 配置选项过早删除且未发出通知。

提议的变更

通过使用“手榴弹”的外部插件机制,将升级测试纳入代码库。升级测试应遵循“手榴弹”所说的升级理论 - https://github.com/openstack-dev/grenade#theory-of-upgrade

为了方便开发人员编写升级测试,我们将拥有(升级前/升级中/升级后)tox 环境,这些环境将在“手榴弹”中的(升级前/升级中/升级后)阶段分别运行测试。

例如,升级前阶段将在升级之前创建堆栈。升级中阶段将检查堆栈创建的资源即使在 Heat 服务关闭时是否仍然存在。升级后阶段可以更新/删除这些堆栈,以验证这些旧堆栈是否仍然可用。

一旦基础设施到位,我们应该能够借助 Heat 中现有的版本化对象机制,添加对 heat-engine 滚动升级的支持。这将使用类似于 Nova 中正在执行的“手榴弹”部分升级策略。

备选方案

实现

负责人

主要负责人

sirushtim

里程碑

完成目标里程碑

liberty-2

工作项

  • 代码库中的“手榴弹”测试。

  • 项目配置更改以添加投票“手榴弹”作业。

  • 标记 heat_integrationtests 中的烟雾测试,这些测试必须在“手榴弹”的理智检查(验证)阶段运行。

  • tox 中的升级前/升级中/升级后环境部分,将分别调用在 Heat 升级之前、期间和之后的测试。

  • 让 DevStack 使用系统级别的 Heat 二进制文件,而不是存储库中的二进制文件,以模拟用户在升级 Heat 时面临的情况。

  • 在 heat-specs 中添加升级影响部分。

  • 支持 heat-engine 的滚动升级。

依赖项

“手榴弹”外部插件机制 https://review.openstack.org/#/c/185050