Ambari's various dispatchers (such as Email and SNMP) can benefit from having a mechanism where a template can be defined for the construction of notification data. This decouples the content that Ambari is sending from the logic to compute the aggregate alerts.
Apache Velocity is a good choice for this requirement as it includes a maturing template language, VTL.
A single XML file that ships with Ambari will contain the default templates for known alert target types. There will be an option to override the use of this file with a user-specified location via ambari.properties. In the event that a user-specific XML file cannot be parsed, appropriate exceptions will be thrown, but the AlertNoticeDispatchService will attempt to gracefully fallback on other content rendering options (such as the internal XML file).
The following data should be exposed to VTL:
- a list of all alert changes
- alert name, state, date, label
- a list for each state change
- lists for all alerts, broke down by service and state
- a list of all services with an alert
- a list of all hosts with an alert
- total counts of changes separated
- one count for each alert state