Fix libvirt exporter configuration to be generic

Change-Id: I9847b6dd53fe0476e5b237acd19ec7c9c5bb0430
Depends-On: If5cf3662f96311a5f37055c0f62934ba5407a978
diff --git a/nova/meta/prometheus.yml b/nova/meta/prometheus.yml
index 0f2ce23..9d9bfae 100644
--- a/nova/meta/prometheus.yml
+++ b/nova/meta/prometheus.yml
@@ -5,6 +5,29 @@
 {%- set is_compute = compute.get('enabled', False) %}
 
 {%- if is_controller or is_compute %}
+{%- if is_compute and
+       exporters is defined %}
+{%- set packages = exporters.get('libvirt', {}).get('packages', ('libvirt-exporter', )) %}
+  {%- load_yaml as new_exporters_cfg %}
+exporters:
+  libvirt:
+    enabled: true
+{%- if packages is defined %}
+    packages:
+    {% for pkg in packages %}
+    - {{ pkg }}
+    {% endfor %}
+{%- endif %}
+    services:
+      qemu:
+        enabled: true
+        bind:
+          address: 0.0.0.0
+          port: 9177
+  {%- endload %}
+{{ new_exporters_cfg|yaml(False) }}
+{%- endif %}
+
 server:
   alert:
 {%- if is_controller %}
@@ -198,35 +221,8 @@
         description: >-
             libvirt check on '{{ $labels.host }}' is down for 2 minutes
 {%- endraw %}
-{%- from "prometheus/map.jinja" import exporters with context %}
-{%- if exporters %}
-  target:
-    static:
-  {%- for exporter, parameters in exporters.iteritems() %}
-    {%- if parameters.get('enabled', False) %}
-      {%- set host = grains.get('host', "") %}
-      {%- if parameters.bind is defined %}
-        {%- if parameters.bind.get('address', '0.0.0.0') == '0.0.0.0' %}
-          {%- set address = grains['fqdn_ip4'][0] %}
-        {%- else %}
-          {%- set address = parameters.bind.address %}
-        {%- endif %}
-      {%- endif %}
-      {%- if address is defined and parameters.bind.port is defined %}
-      {{ exporter }}_exporter:
-        endpoint:
-          - address: {{ address }}
-            port: {{ parameters.bind.port }}
-        {%- if host is defined and host|length > 0 %}
-        metric_relabel:
-          - regex: {{ address }}:{{ parameters.bind.port }}
-            replacement: {{ host }}
-            source_labels: "instance"
-            target_label: "host"
-        {%- endif %}
-      {%- endif %}
-    {%- endif %}
-  {%- endfor %}
+{%- if exporters is defined %}
+{%- include "prometheus/_exporters_config.sls" %}
 {%- endif %}
 {%- endif %}
-{%- endif %}
\ No newline at end of file
+{%- endif %}