触发软件配置组件中的操作

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 提供的信号。