用于迁移堆栈到收敛模式的运维工具。

https://blueprints.launchpad.net/heat/+spec/convergence-migrate-stack

为了更好地支持服务,运维人员确保所有堆栈都在相同的逻辑下运行将会很有用。

问题描述

堆栈操作是否在收敛模式下运行是具有粘性的,这意味着如果在运行 stack-create 时当前的“convergence_engine”设置为 True,那么该堆栈将始终使用收敛逻辑运行(同样,对于 convergence_engine=False 也是如此)。

提议的变更

本规范提出一个新的运维工具,用于将任何在传统模式下创建的堆栈迁移到收敛模式。

这将仅转换处于合理状态(*_COMPLETE)的堆栈,并警告运维人员是否需要重新运行命令以捕获当前正在进行操作的堆栈。

运维人员需要执行的步骤是

  1. 编辑 /etc/heat/heat.conf 将 convergence_engine 更改为他们想要的值

  2. 重启 heat-engine

  3. 运行 “heat-manage migrate-convergence-1 <stack_id>”

备选方案

  1. 堆栈可以同时在两种模式下运行,并且最终用户会重新创建堆栈,从而将它们迁移到新模式(但这可能需要很长时间)。

  2. 我们可以在下一次 stack-update 时自动转换堆栈。 这将控制权从运维人员手中移开,但具有逐步执行此操作的优势,并且最终用户可以修复任何出现的问题。(asalkeld:我认为这可能是一个有吸引力的选择)。

  3. 鼓起勇气并决定采用收敛模式,并将其制作成一个迁移脚本(即不可逆转)。

实现

按如下方式扩展 heat-manage

heat-manage migrate-convergence-1 <stack_id>

此命令将调用 stack.py 中的代码来获取具有 stack_id 的堆栈及其所有嵌套内容。 我们需要设置 convergence = True,prev_raw_template_id = None 并删除相应的原始模板,生成并添加新的 traversal_id 并为这些堆栈中的所有资源设置 current_template_id。 此外,我们需要用相应的依赖关系填充数据库中的 needed_byrequires 列。

负责人

主要负责人

ochuprykov

里程碑

完成目标里程碑

newton-2

工作项

依赖项