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