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
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 @@
{%- 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 @@
{%- 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 @@
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 %}