From 2d26b366a16dae228bb8fdfa77a590811cd8e764 Mon Sep 17 00:00:00 2001 From: Ildar Svetlov Date: Thu, 31 May 2018 15:27:37 +0400 Subject: [PATCH] Rework grafana.client state - add 'parameters' section loaded from grains to pass parameters into dashboard template - pass context into json dashboard template Change-Id: I5848c315abe6951b5572b4c63db2d847395ae725 Related-PROD: PROD-18535 --- grafana/client/init.sls | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/grafana/client/init.sls b/grafana/client/init.sls index 60482b9..c9101dc 100644 --- a/grafana/client/init.sls +++ b/grafana/client/init.sls @@ -28,11 +28,13 @@ grafana_client_datasource_{{ datasource_name }}: {%- set raw_dict = {} %} {%- set final_dict = {} %} +{%- set parameters = {} %} {%- if client.remote_data.engine == 'salt_mine' %} {%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %} {%- if node_grains.grafana is defined %} {%- set raw_dict = salt['grains.filter_by']({'default': raw_dict}, merge=node_grains.grafana.get('dashboard', {})) %} + {%- set parameters = salt['grains.filter_by']({'default': parameters}, merge=node_grains.grafana.get('parameters', {})) %} {%- endif %} {%- endfor %} {%- endif %} @@ -40,6 +42,9 @@ grafana_client_datasource_{{ datasource_name }}: {%- if client.dashboard is defined %} {%- set raw_dict = salt['grains.filter_by']({'default': raw_dict}, merge=client.dashboard) %} {%- endif %} +{%- if client.parameters is defined %} + {%- set parameters = salt['grains.filter_by']({'default': parameters}, merge=client.parameters) %} +{%- endif %} {%- for dashboard_name, dashboard in raw_dict.iteritems() %} {%- if dashboard.get('format', 'yaml')|lower == 'yaml' %} @@ -71,7 +76,8 @@ grafana_client_dashboard_{{ dashboard_name }}: grafana3_dashboard.present: - name: {{ dashboard_name }} {%- if dashboard.get('format', 'yaml')|lower == 'json' %} - {%- import_json dashboard.template as dash %} + {%- import dashboard.template as dashboard_template with context %} + {%- set dash = dashboard_template|load_json %} - dashboard: {{ dash|json }} - dashboard_format: json {%- else %}