触发软件配置组件中的操作¶
https://blueprints.launchpad.net/heat/+spec/software-config-trigger
OS::Heat::SoftwareComponent 现在允许指定非生命周期配置。此功能将能够触发这些配置并监控其进度和结果。
问题描述¶
OS::Heat::SoftwareComponent 可以指定在堆栈生命周期操作(CREATE、DELETE 等)期间执行的配置,但它也可以指定任何非生命周期操作(例如 BACKUP、FOO、BAR)。然而,目前没有明显的方法来触发这些非生命周期操作。一旦此功能完成,应该可以使用 heat CLI 工具执行以下操作
触发已在 OS::Heat::SoftwareComponent 资源中定义的单个配置
监控已触发配置的进度
查看已触发配置的结果输出
取消已触发配置的进行中状态
提议的变更¶
理论上,已经可以通过直接与 REST API 交互来触发 SoftwareComponent 中的单个操作配置,但是无法接收此触发的结果。
考虑一个定义了在 BACKUP 操作上运行的配置的 SoftwareComponent。一旦堆栈创建完成,将会发生以下情况
创建包含组件配置的配置,包括 BACKUP 操作配置
创建派生配置,它将添加部署资源提供的部署额外输入等
创建部署,将派生配置与 nova 服务器关联
现在,要触发给定堆栈中的服务器上的 BACKUP(可以选择设置一些额外的输入值),可以对以下内容进行 REST API 调用
获取原始配置,修改输入值(如果需要),然后创建派生配置。这不会触及堆栈管理的派生配置资源。
创建 swift TempURL 来存储来自服务器的信号。
创建触发部署,指定派生配置、服务器和操作 BACKUP。触发部署的名称源自原始部署,加上操作名称(BACKUP)
以上所有操作都可以通过单个 heat deployment-create 命令执行,用户可以在该命令中指定创建部署所需的所有值,包括配置、服务器、名称、操作、覆盖的输入值等。
需要进行更改,将一些 OS::Heat::SoftwareDeployment 移动到部署创建调用本身中。
此蓝图还将依赖于蓝图 software-config-swift-signal,因为需要一个不与任何堆栈或资源耦合的信号存储。
python-heatclient 需要进行修改,以便所有软件配置和部署操作都可以从命令行完成。还将添加新的便捷命令来触发和监控组件中的单个操作。
这也可以是一个合适的伞状蓝图,以切换到使用 RPC 代替完整的 REST 调用,用于配置和部署资源调用配置和部署 API 时。
备选方案¶
无
实现¶
负责人¶
- 主要负责人
<steve-stevebaker>
里程碑¶
- 完成目标里程碑
Kilo-3
工作项¶
目前 python-heatclient 缺乏任何用于管理软件配置和部署的 cli 命令。此更改的先决条件是对现有配置和部署 REST API 进行交互的 cli 支持,包括
创建一个软件配置
显示一个软件配置
删除一个软件配置
创建一个软件部署
显示一个软件部署
删除一个软件部署
列出给定服务器的软件部署
一旦这些实现完成,还将添加新的便捷命令来触发和监控组件中的单个操作。
在 heat 中,需要进行以下更改
将一些 OS::Heat::SoftwareDeployment 移动到部署创建调用本身中。具体来说,可以在 EngineService.create_software_deployment 中组合创建派生配置和部署。
修改 EngineService.resource_signal,以便某些信号调用被重定向到新的方法 EngineService.signal_software_deployment
功能测试以确认以上内容可以使用。
依赖项¶
不是硬性依赖,但如果实现了蓝图 software-config-progress,将使能够向用户提供配置触发已启动的反馈。
如果认为修改 EngineService.resource_signal 不合适,则需要一些替代的基于外部轮询的信号,如蓝图 software-config-swift-signal 或蓝图 software-config-zaqar 提供的信号。