Convergence Resource replacement¶
包含您的 Launchpad 蓝图的 URL
https://blueprints.launchpad.net/heat/+spec/convergence-resource-replacement
问题描述¶
在堆栈更新期间,某些资源需要被替换(而不是原地更新)。通常,我们无法提前知道哪些资源需要被替换,因此我们需要能够动态创建替换资源。
提议的变更¶
当检测到某个资源需要被替换时(即 Resource.update 抛出 UpdateReplace),在同一个堆栈中创建一个具有相同名称的新资源。分别在新资源和现有资源的 replaces 和 replaced_by 字段中填充数据。不要为新资源创建 SyncPoint。
一旦新资源被存储到数据库中,使用相同的数据重新触发当前的检查,但传递新资源的 key。然后立即返回,不触发任何依赖节点。
请注意,不需要修改存储在堆栈中的图。当我们要触发依赖于被替换资源的节点的 SyncPoint 时,替换资源应该使用旧资源的图 key 来冒充它。但是,下一个资源的输入数据(而不是 key)的内容将包含替换资源的资源 ID,以便依赖资源更新它们的依赖列表。之前的资源将在图的清理阶段再次被访问,此时它将被删除。
备选方案¶
无
实现¶
负责人¶
- 主要负责人
ananta
里程碑¶
- 完成目标里程碑
Kilo-3
工作项¶
创建替换资源并将其链接到其前驱资源
触发对新资源的检查
创建开发者文档