简短模板格式

StoryBoard 链接: https://storyboard.openstack.org/#!/story/2004871

本规范建议使用更短的 Vitrage 模板文件格式。 新格式应更简洁、阅读速度更快且编写更容易。

问题描述

Vitrage 模板语言功能强大,但有点冗长,并且在从头开始创建新模板时很容易出现语法错误。 我们希望使生成任何模板更容易。

有关当前格式的更多信息,请参阅 Template_format

提议的变更

以下是一些简化措施,将导致更短的模板文件,同时保留其功能。

  1. 移除 definitions 级别的嵌套,entities 将直接替换它

  2. 移除 relationships,这些将在条件中内联表示,示例用法 condition: host_ssh_alarm [ on ] host

  3. entities 将从列表更改为字典,移除 template_id,并使用实体键代替。

  4. actions 中,移除字段 action_type,并使用操作键代替

  5. 在每个操作中,移除 action_target 嵌套级别

  6. scenarios 中,移除 scenario 嵌套级别

  7. 操作 set_state 将被 set_suboptimalset_errorset_ok 替换。

  8. raise_alarm 操作将有一个新的可选字段 causing_alarm,这将添加新警报与引发警报之间的因果关系,从而无需使用 add_causal_relationship

简短格式模板示例

metadata:
 version: 3
 name: zabbix alarm for network interface and ssh affects host instances
 description: zabbix alarm for network interface and ssh affects host instances
entities:
 host_network_alarm:
  type: zabbix
  rawtext: host network interface is down
 host_ssh_alarm:
  type: zabbix
  rawtext: host ssh is down
 instance:
  type: nova.instance
 host:
  type: nova.host
scenarios:
 - condition: host_ssh_alarm [ on ] host
   actions:
     - set_suboptimal:
        target: host
 - condition: host_network_alarm [ on ] host AND host_ssh_alarm [ on ] host
   actions:
     - add_causal_relationship:
        source: host_network_alarm
        target: host_ssh_alarm
 - condition: host_ssh_alarm [ on ] host AND host [ contains ] instance
   actions:
     - raise_alarm:
        target: instance
        alarm_name: instance is down
        severity: WARNING
        causing_alarm: host_ssh_alarm
     - set_error:
        target: instance

与先前格式等效的模板示例

metadata:
 version: 2
 type: standard
 name: zabbix alarm for network interface and ssh affects host instances
 description: zabbix alarm for network interface and ssh affects host instances
definitions:
 entities:
  - entity:
   category: ALARM
   type: zabbix
   rawtext: host network interface is down
   template_id: host_network_alarm
  - entity:
   category: ALARM
   type: zabbix
   rawtext: host ssh is down
   template_id: host_ssh_alarm
  - entity:
   category: ALARM
   type: vitrage
   name: instance is down
   template_id: instance_alarm
  - entity:
   category: RESOURCE
   type: nova.instance
   template_id: instance
  - entity:
   category: RESOURCE
   type: nova.host
   template_id: host
 relationships:
  - relationship:
   source: host_network_alarm
   relationship_type: on
   target: host
   template_id : network_alarm_on_host
  - relationship:
   source: host_ssh_alarm
   relationship_type: on
   target: host
   template_id : ssh_alarm_on_host
  - relationship:
   source: host
   relationship_type: contains
   target: instance
   template_id : host_contains_instance
  - relationship:
   source: instance_alarm
   relationship_type: on
   target: instance
   template_id : alarm_on_instance
scenarios:
 - scenario:
     condition: ssh_alarm_on_host
     actions:
      - action:
          action_type: set_state
          action_target:
            target: host
          properties:
            state: SUBOPTIMAL
 - scenario:
     condition: network_alarm_on_host AND ssh_alarm_on_host
     actions:
      - action:
          action_type: add_causal_relationship
          action_target:
            source: host_network_alarm
            target: host_ssh_alarm
 - scenario:
     condition: ssh_alarm_on_host AND host_contains_instance
     actions:
      - action:
          action_type: raise_alarm
          action_target:
            target: instance
          properties:
            alarm_name: instance is down
            severity: WARNING
      - action:
          action_type: set_state
          action_target:
            target: instance
          properties:
            state: ERROR
 - scenario:
     condition: ssh_alarm_on_host AND host_contains_instance AND alarm_on_instance
     actions:
      - action:
          action_type: add_causal_relationship
          action_target:
            source: host_ssh_alarm
            target: instance_alarm

备选方案

无。

数据模型影响

无。 模板将存储在相同的数据模型中。

REST API 影响

版本影响

这些更改将包含在 Vitrage 模板版本 3 中。

其他最终用户影响

部署者影响

开发者影响

Horizon 影响

无。

实现

负责人

主要负责人

idan_hefetz

工作项

  • 引入 Vitrage 模板版本 3

  • 支持模板验证和加载

  • 文档和测试

依赖项

测试

单元测试、功能测试和 Tempest 测试

文档影响

将记录新的模板格式

参考资料