Add alerta to prometheus

Change-Id: I0349936dc683475e18155cf5f8ca750d06482cfb
diff --git a/metadata/service/alerta/init.yml b/metadata/service/alerta/init.yml
new file mode 100644
index 0000000..97ab144
--- /dev/null
+++ b/metadata/service/alerta/init.yml
@@ -0,0 +1,9 @@
+applications:
+  - prometheus
+classes:
+ - service.prometheus.support
+parameters:
+  prometheus:
+    alerta:
+      enabled: true
+      config_dir: /srv/volumes/local/alerta
diff --git a/prometheus/alerta.sls b/prometheus/alerta.sls
new file mode 100644
index 0000000..ec6bbe6
--- /dev/null
+++ b/prometheus/alerta.sls
@@ -0,0 +1,21 @@
+{% from "prometheus/map.jinja" import alerta with context %}
+{%- if alerta.enabled %}
+
+alerta_config_dir:
+  file.directory:
+    - name: {{ alerta.config_dir }}
+    - makedirs: True
+    - mode: 755
+
+
+alerta_config_file:
+  file.managed:
+    - name: {{ alerta.config_dir }}/alerta.conf
+    - source: salt://prometheus/files/alerta/alerta.conf
+    - makedirs: True
+    - mode: 755
+    - template: jinja
+    - require:
+      - file: alerta_config_dir
+
+{%- endif %}
diff --git a/prometheus/files/alerta/alerta.conf b/prometheus/files/alerta/alerta.conf
new file mode 100644
index 0000000..12eb2cc
--- /dev/null
+++ b/prometheus/files/alerta/alerta.conf
@@ -0,0 +1,26 @@
+{%- from "prometheus/map.jinja" import alerta with context %}
+'use strict';
+
+angular.module('config', [])
+  .constant('config', {
+    'endpoint'    : "/api",
+    'provider'    : "basic",
+    'colors'      : {
+      'severity': {
+        'critical'     : '{{ alerta.get("colors", {}).get("critical", "#D8122A") }}',
+        'major'        : '{{ alerta.get("colors", {}).get("major", "#EA680F") }}',
+        'minor'        : '{{ alerta.get("colors", {}).get("minor", "#FFBE1E") }}',
+        'warning'      : '{{ alerta.get("colors", {}).get("warning", "#BA2222") }}',
+        'indeterminate': '{{ alerta.get("colors", {}).get("indeterminate", "#A6ACA8") }}',
+        'cleared'      : '{{ alerta.get("colors", {}).get("cleared", "#00AA5A") }}',
+        'normal'       : '{{ alerta.get("colors", {}).get("normal", "#00AA5A") }}',
+        'ok'           : '{{ alerta.get("colors", {}).get("ok", "#00AA5A") }}',
+        'informational': '{{ alerta.get("colors", {}).get("informational", "#00A1BC") }}',
+        'debug'        : '{{ alerta.get("colors", {}).get("debug", "#9D006D") }}',
+        'security'     : '{{ alerta.get("colors", {}).get("security", "#333333") }}',
+        'unknown'      : '{{ alerta.get("colors", {}).get("unknown", "#A6ACA8") }}'
+      },
+      'text': 'white',
+      'highlight': 'lightgray'
+    }
+  });
diff --git a/prometheus/init.sls b/prometheus/init.sls
index 73d51ba..0e6cdad 100644
--- a/prometheus/init.sls
+++ b/prometheus/init.sls
@@ -1,5 +1,6 @@
 {%- if pillar.prometheus.get('server', {}).get('enabled', False) or
        pillar.prometheus.get('relay', {}).get('enabled', False) or
+       pillar.prometheus.get('alerta', {}).get('enabled', False) or
        pillar.prometheus.alertmanager is defined or
        pillar.prometheus.exporters is defined %}
 include:
@@ -9,6 +10,9 @@
   {%- if pillar.prometheus.get('relay', {}).get('enabled', False) %}
   - prometheus.relay
   {%- endif %}
+  {%- if pillar.prometheus.get('alerta', {}).get('enabled', False) %}
+  - prometheus.alerta
+  {%- endif %}
   {%- if pillar.prometheus.alertmanager is defined %}
   - prometheus.alertmanager
   {%- endif %}
diff --git a/prometheus/map.jinja b/prometheus/map.jinja
index 8db8b45..abc2a73 100644
--- a/prometheus/map.jinja
+++ b/prometheus/map.jinja
@@ -45,3 +45,9 @@
   'default': {
   },
 }, merge=salt['pillar.get']('prometheus:remote_storage_adapter')) %}
+
+{% set alerta = salt['grains.filter_by']({
+  'default': {
+    'config_dir': '/srv/volumes/local/alerta',
+  },
+}, merge=salt['pillar.get']('prometheus:alerta')) %}}