回滚机制

https://blueprints.launchpad.net/watcher/+spec/rollback-mechanism

问题描述

每次审计后,都会有一个行动计划 (actionplan) 需要执行。行动计划是一组动作,例如

  • migrations

  • 更改 nova 服务状态

  • 更改节点电源状态

有时,用户希望在行动计划成功执行后回滚该行动计划。

对于测试人员来说,他们通常会使环境失衡,以便在审计期间进行实例迁移。之后,他们需要将实例迁移回源主机以进行下一次测试。

此外,对于主机维护,它会将所有实例从维护主机迁移到其他主机。主机维护完成后并重新激活,没有机制可以自动将实例迁移回维护主机。

用例

作为 Watcher 的 QA,我希望能够回滚行动计划,以便我可以轻松地恢复环境以进行下一次测试。

作为 OpenStack 操作员,我希望在节点执行“主机维护”策略后,将实例迁移回源节点。

提议的变更

在 watcher-api 中,我们可以向 ActionPlan API 添加“rollback”动作。当 api 接收到回滚请求时,将其分发到 watcher-decision-engine 模块。

在 watcher-decision-engine 中,它检索行动计划并记录属于该行动计划的所有动作的回滚记录,然后将回滚结果返回给 watcher-api。

由于计算数据模型会随时间变化,行动计划可能无法回滚。为了尽可能地使回滚机制正常工作,仅允许回滚最近的行动计划(默认情况下,最近一小时内的)。

备选方案

数据模型影响

REST API 影响

回滚行动计划

  • /v1/action_plans/{actionplan_ident}/rollback

    • 方法类型:POST

    • actionplan_ident:行动计划的 UUID

    • 正常的 http 响应代码(200)

    • 预期的错误 http 响应代码 (400,404)

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

<sue>

工作项

  • 行动计划回滚动作 API

  • 一个行动计划的回滚机制

依赖项

测试

单元测试

文档影响

  • 添加关于如何使用新功能的文档

参考资料

历史

修订版

发布名称

描述

Ussuri

引入