Convergence Resource replacement

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/heat/+spec/convergence-resource-replacement

问题描述

在堆栈更新期间,某些资源需要被替换(而不是原地更新)。通常,我们无法提前知道哪些资源需要被替换,因此我们需要能够动态创建替换资源。

提议的变更

当检测到某个资源需要被替换时(即 Resource.update 抛出 UpdateReplace),在同一个堆栈中创建一个具有相同名称的新资源。分别在新资源和现有资源的 replacesreplaced_by 字段中填充数据。不要为新资源创建 SyncPoint。

一旦新资源被存储到数据库中,使用相同的数据重新触发当前的检查,但传递新资源的 key。然后立即返回,不触发任何依赖节点。

请注意,不需要修改存储在堆栈中的图。当我们要触发依赖于被替换资源的节点的 SyncPoint 时,替换资源应该使用旧资源的图 key 来冒充它。但是,下一个资源的输入数据(而不是 key)的内容将包含替换资源的资源 ID,以便依赖资源更新它们的依赖列表。之前的资源将在图的清理阶段再次被访问,此时它将被删除。

备选方案

实现

负责人

主要负责人

ananta

里程碑

完成目标里程碑

Kilo-3

工作项

  • 创建替换资源并将其链接到其前驱资源

  • 触发对新资源的检查

  • 创建开发者文档

依赖项