From f6e554426401ffb95a2f760097b414c55f5124b7 Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Wed, 24 May 2017 10:33:54 +0200 Subject: [PATCH] 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 --- grafana/client/init.sls | 4 ++++ grafana/meta/grafana.yml | 3 +++ 2 files changed, 7 insertions(+) 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 @@ grafana_client_datasource_{{ datasource_name }}: {%- 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 @@ grafana_client_dashboard_{{ dashboard_name }}: 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']