Change-Id: I96df2ebbd9c91a0364888af95a94fccb8c138ae0
6.5 KiB
Short Template Format
StoryBoard link: https://storyboard.openstack.org/#!/story/2004871
This spec suggests a shorter format for Vitrage template files. The new format should be shorter, read faster and written more easily.
Problem description
Vitrage template language is powerful, yet a bit verbose and it's quite easy to make syntax mistakes when creating a new template from scratch. We would like to make it easier to generate any template.
For more information on the current format, see Template_format.
Proposed change
Several simplifications that will result in a shorter template file while preserving it's capabilities.
- Remove
definitions
level nesting,entities
will directly replace it- Remove
relationships
, these will be represented inline in the condition, example usagecondition: host_ssh_alarm [ on ] host
entities
will be changed from a list to a dictionary,template_id
is removed and the entity key will be used instead.- In
actions
the fieldaction_type
is removed and the action key will be used instead- In each action
action_target
nesting level is removed- In
scenarios
removed thescenario
nesting level- Action
set_state
will be replaced withset_suboptimal
,set_error
andset_ok
.raise_alarm
action will have a new optional fieldcausing_alarm
this will add a causal relationship between the new alarm and the causing alarm, de-necessitating the use ofadd_causal_relationship
Example for a short format template
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
Example for an equivalent template in the previous format
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
Alternatives
None.
Data model impact
None. Templates will be stored in the same data model.
REST API impact
None
Versioning impact
These changes will be part of Vitrage template version 3.
Other end user impact
None
Deployer impact
None
Developer impact
None
Horizon impact
None.
Implementation
Assignee(s)
- Primary assignee:
-
idan_hefetz
Work Items
- Introduce Vitrage template version 3
- Support template validation and loading
- Documentation and tests
Dependencies
None
Testing
Unit tests, functional tests and tempest tests
Documentation Impact
The new template format will be documented
References
None