堆栈生命周期调度器提示蓝图¶
https://blueprints.launchpad.net/heat/+spec/stack-lifecycle-scheduler-hint
Heat 提供者可能需要自定义代码来检查堆栈请求,在执行创建或更新堆栈的操作之前。自定义代码完成后,提供者可能希望向 nova 调度器提供带有堆栈相关标识符的提示,以便 nova 配置的任何自定义调度器插件进行处理。
问题描述¶
Heat 提供者可能需要自定义代码来检查堆栈请求,在执行创建或更新堆栈的操作之前。例如,一个整体调度器可以将堆栈的成员计算资源作为一个组进行调度。这将通过堆栈生命周期插件点调用的自定义插件来完成。自定义代码完成后,在处理创建或更新时,为 nova 配置的任何自定义调度器都需要将 nova 创建请求映射回在调用自定义堆栈生命周期插件期间所做的任何决策。当前的 heat 在 nova 创建请求中不包含任何可用于映射回 heat 堆栈中的 Server 或 Instance 资源的标识符。
本规范的范围不包括这一点,但值得注意的是,cinder 调度器提示现在受 heat 支持,可能需要类似的对待。请参阅 https://review.openstack.org/#/c/126282/ 和 https://review.openstack.org/#/c/126298/
提议的变更¶
当 heat 处理堆栈并且该功能已启用时,堆栈 ID、根堆栈 ID、堆栈资源 ID、堆栈资源名称以及堆栈中的路径(作为元组列表,(stackresourcename, stackname))将由 heat 作为调度器提示传递给 nova 的配置调度器。
行为更改将是可选的,默认禁用,并通过新的 heat 配置变量进行控制。
这五个调度器提示将添加到使用资源类 Server (OS::Nova::Server) 或资源类 Instance (AWS::EC2::Instance) 完成的服务器创建中。heat_root_stack_id 将设置为资源的根堆栈的 ID,heat_stack_id 将设置为资源的父堆栈的 ID,heat_stack_name 将设置为资源的父堆栈的 ID,heat_path_in_stack 将设置为元组列表,(stackresourcename, stackname),其中 list[0] 为 (None, rootstackname),heat_resource_name 将设置为资源的名称
备选方案¶
没有识别出合理的替代方案。如果生命周期插件修改了堆栈(并且更改被持久化),则可以实现类似的功能。这将是不良行为。它将与收敛冲突,并且调度决策将对 heat 用户可见(除非在查询时以某种方式删除)。
实现¶
负责人¶
一个包含蓝图完整实现的补丁 (https://review.openstack.org/#/c/96889/) 已经在旧的预规范流程下被审查。
- 主要负责人
William C. Arnold (barnold-8)
里程碑¶
- 完成目标里程碑
Kilo-3
工作项¶
实现:https://review.openstack.org/#/c/96889/ 文档:在树形文档中添加良好的文档
依赖项¶
无依赖