Collect dns targets from grains
Change-Id: If0ca7f7cb917537c0fbba9c6a4da479adada111d
diff --git a/prometheus/files/server/prometheus.yml b/prometheus/files/server/prometheus.yml
index 3bb85f7..17a243c 100644
--- a/prometheus/files/server/prometheus.yml
+++ b/prometheus/files/server/prometheus.yml
@@ -315,15 +315,31 @@
{%- endif %}
{%- endif %}
-{%- if server.get('target', {}).get('dns', {}).get('enabled', False) %}
- {%- for target in server.get('target', {}).get('dns', {}).get('endpoint', []) %}
- - job_name: {{ target.name }}
- dns_sd_configs:
- - names:
- {%- for domain in target.domain %}
- - {{ domain }}
- {%- endfor %}
- type: {{ target.type }}
- port: {{ target.port }}
+{%- set dns_endpoints = {} %}
+{%- if server.get('use_grains', {}).get('target', True) %}
+ {%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
+ {%- set dns_grain = node_grains.get('prometheus', {}).get('server', {}).get('target', {}).get('dns', {}) %}
+ {%- if dns_grain.get('enabled', False) %}
+ {%- for endpoint in dns_grain.get('endpoint', []) %}
+ {%- do dns_endpoints.update({endpoint.name: endpoint}) %}
+ {%- endfor %}
+ {%- endif %}
{%- endfor %}
{%- endif %}
+
+{%- if server.get('target', {}).get('dns', {}).get('enabled', False) %}
+ {%- for endpoint in server.get('target', {}).get('dns', {}).get('endpoint', []) %}
+ {%- do dns_endpoints.update({endpoint.name: endpoint}) %}
+ {%- endfor %}
+{%- endif %}
+
+{%- for name, endpoint in dns_endpoints | dictsort %}
+ - job_name: {{ endpoint.name }}
+ dns_sd_configs:
+ - names:
+ {%- for domain in endpoint.domain %}
+ - {{ domain }}
+ {%- endfor %}
+ type: {{ endpoint.type }}
+ port: {{ endpoint.port }}
+{%- endfor %}