将事件推送到用户

https://blueprints.launchpad.net/heat/+spec/event-transport

问题描述

目前事件存储在数据库中,用户需要使用 API 来轮询它们并接收堆栈更改的通知。这对于钩子来说尤其麻烦,因为 Heat 正在等待用户输入。

提议的变更

为了让用户自定义他们想要获取事件的方式,我们向环境添加一个键来指定事件应该发送到哪里

event_sinks:
  - type: zaqar-queue
    target: myqueue
    ttl: 30

event_sinks 是一个带有指定类型和可能选项的目标列表(例如这里的 ttl 是 Zaqar 选项)。Zaqar 将是第一个可用的实现,将所有事件发送到指定的队列。

我们将使用 stevedore 的入口点来允许可插拔的实现。

为了不在每个事件的关键路径上添加网络调用,发布将委托给一个线程,因此是异步的。缺点是潜在的错误不会呈现给用户。

事件将继续进入数据库。

备选方案

与其使其成为用户可配置的选项,不如使其成为 Heat 管理员的全局选项。这使得它不太容易被发现,并且可能不是每个用户都需要的功能。我们也会失去可配置性。

实现

负责人

主要负责人

therve

里程碑

完成目标里程碑

mitaka-1

工作项

  • 更改环境以处理新元素。

  • 修改处理客户端的环境。

  • 实现通过 zaqar 发送。

依赖项