Manage dashboards only for the current datasource
This change adds a new 'datasource' parameter to the dashboard metadata.
This way, the Grafana client state will manage only the dashboards that
match with the deployed datasource (either InfluxDB or Prometheus). For
backward compatibility, the client will always manage the dashboards
that don't set this new parameter.
Change-Id: Iac323d756aff6ca4180f4b648a1d02692ebf292b
diff --git a/grafana/client/init.sls b/grafana/client/init.sls
index f8825bf..60482b9 100644
--- a/grafana/client/init.sls
+++ b/grafana/client/init.sls
@@ -1,8 +1,10 @@
{%- from "grafana/map.jinja" import client with context %}
{%- if client.get('enabled', False) %}
+{%- set datasources = [] %}
{%- for datasource_name, datasource in client.datasource.iteritems() %}
+{%- do datasources.append(datasource.type) %}
grafana_client_datasource_{{ datasource_name }}:
grafana3_datasource.present:
- name: {{ datasource.name|default(datasource_name) }}
@@ -63,6 +65,7 @@
{%- endfor %}
{%- for dashboard_name, dashboard in final_dict.iteritems() %}
+{%- if dashboard.datasource is not defined or dashboard.datasource in datasources %}
{%- if dashboard.get('enabled', True) %}
grafana_client_dashboard_{{ dashboard_name }}:
grafana3_dashboard.present:
@@ -88,6 +91,7 @@
grafana3_dashboard.absent:
- name: {{ dashboard_name }}
{%- endif %}
+{%- endif %}
{%- endfor %}
{%- endif %}
diff --git a/grafana/meta/grafana.yml b/grafana/meta/grafana.yml
index 31c55ed..89395b2 100644
--- a/grafana/meta/grafana.yml
+++ b/grafana/meta/grafana.yml
@@ -1,13 +1,16 @@
dashboard:
grafana:
+ datasource: influxdb
format: json
template: grafana/files/grafana_dashboards/grafana_influxdb.json
main:
+ datasource: influxdb
format: yaml
base_dashboards: ['grafana:client:base_templates:main_dashboard']
base_rows: ['grafana:client:base_templates:service_row']
base_panels: ['grafana:client:base_templates:cluster_status_singlestat']
service_level:
+ datasource: influxdb
format: yaml
base_dashboards: ['grafana:client:base_templates:service_level_dashboard']
base_rows: ['grafana:client:base_templates:service_level_row']