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