不可变参数¶
https://blueprints.launchpad.net/heat/+spec/immutable-parameters
模板作者应该能够将模板参数标记为可更新或不可更新,以限制更新对应用程序产生破坏性影响的参数。
问题描述¶
有时,模板参数仅打算在创建堆栈时传递。例如,更新传递给 OS::Nova::Server 的 keypair 属性的 SSH 公钥名称参数,将导致服务器被替换并面临停机风险。
在某些情况下,应用程序的架构可能无法容忍某些服务器被重建。模板作者有权将导致这些服务器被重建的参数标记为不可变。
此功能面向 Heat 服务提供商以及向最终用户提供精选模板的其他服务的运营商。这些用户可能不具备应用程序架构方面的专业知识。精通的用户可以选择编辑模板以删除更新限制。
提议的变更¶
在 HOT 模板的参数部分添加一个新的“updatable”(可更新)布尔字段。值为 False 将导致引擎拒绝包含对该参数的更改的堆栈更新。如果未在模板中指定“updatable”,则其默认值为 True,以确保与旧模板的向后兼容性。
备选方案¶
放宽“每个参数只能在一个参数组中”的限制,并使用参数组将参数标记为不可变。添加一个新的 updatable 字段是一个更用户友好的选项。
实现¶
这将包括对 heat/engine/hot/parameters.py 的更改,在该文件中将添加一个新的 updatable 字段,以及对 heat/engine/parameters.py 的更改,我们将在其中限制对参数的更新。每当用户尝试更新受限制的参数时,他们将在实际堆栈更新开始之前从 API 收到 ImmutableParameterModified 异常。
负责人¶
- 主要负责人
jasondunsmore
里程碑¶
- 完成目标里程碑
mitaka-2
工作项¶
在模板中添加 updatable 字段 (heat/engine/hot/parameters.py)
限制对参数的更新 (heat/engine/parameters.py)
添加 ParameterUpdateNotAllowed 异常 (heat/common/exception.py)
添加单元测试
依赖项¶
无