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 itRemove
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 insteadIn each action
action_target
nesting level is removedIn
scenarios
removed thescenario
nesting levelAction
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