eed48db172
This patch uses the user and password instead of setting basic auth that is used as credentials when connecting to the Grafana server. In our case we are using the grafana configuration on the minion to connect to Grafana. This patch also adds an option to set the datasource as the default one.
87 lines
2.5 KiB
Text
87 lines
2.5 KiB
Text
{%- from "grafana/map.jinja" import client with context %}
|
|
{%- if client.enabled %}
|
|
|
|
/etc/salt/minion.d/_grafana.conf:
|
|
file.managed:
|
|
- source: salt://grafana/files/_grafana.conf
|
|
- template: jinja
|
|
- user: root
|
|
- group: root
|
|
|
|
{%- for datasource_name, datasource in client.datasource.iteritems() %}
|
|
|
|
grafana_client_datasource_{{ datasource_name }}:
|
|
grafana3_datasource.present:
|
|
- name: {{ datasource_name }}
|
|
- type: {{ datasource.type }}
|
|
- url: http://{{ datasource.host }}:{{ datasource.get('port', 80) }}
|
|
{%- if datasource.access is defined %}
|
|
- access: proxy
|
|
{%- endif %}
|
|
{%- if datasource.user is defined %}
|
|
- user: {{ datasource.user }}
|
|
- password: {{ datasource.password }}
|
|
{%- endif %}
|
|
{%- if datasource.get('is_default', false) %}
|
|
- is_default: {{ datasource.is_default }}
|
|
{%- endif %}
|
|
{%- if datasource.database is defined %}
|
|
- database: {{ datasource.database }}
|
|
{%- endif %}
|
|
|
|
{%- endfor %}
|
|
|
|
{%- set raw_dict = {} %}
|
|
{%- set final_dict = {} %}
|
|
|
|
{%- 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', {})) %}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
|
|
{%- if client.dashboard is defined %}
|
|
{%- set raw_dict = salt['grains.filter_by']({'default': raw_dict}, merge=client.dashboard) %}
|
|
{%- endif %}
|
|
|
|
{%- for dashboard_name, dashboard in raw_dict.iteritems() %}
|
|
{%- set rows = [] %}
|
|
{%- for row_name, row in dashboard.get('row', {}).iteritems() %}
|
|
{%- set panels = [] %}
|
|
{%- for panel_name, panel in row.get('panel', {}).iteritems() %}
|
|
{%- set targets = [] %}
|
|
{%- for target_name, target in panel.get('target', {}).iteritems() %}
|
|
{%- do targets.extend([target]) %}
|
|
{%- endfor %}
|
|
{%- do panel.update({'targets': targets}) %}
|
|
{%- do panels.extend([panel]) %}
|
|
{%- endfor %}
|
|
{%- do row.update({'panels': panels}) %}
|
|
{%- do rows.extend([row]) %}
|
|
{%- endfor %}
|
|
{%- do dashboard.update({'rows': rows}) %}
|
|
{%- do final_dict.update({dashboard_name: dashboard}) %}
|
|
{%- endfor %}
|
|
|
|
{%- for dashboard_name, dashboard in final_dict.iteritems() %}
|
|
|
|
{%- if dashboard.get('enabled', True) %}
|
|
|
|
grafana_client_dashboard_{{ dashboard_name }}:
|
|
grafana3_dashboard.present:
|
|
- name: {{ dashboard_name }}
|
|
- dashboard: {{ dashboard }}
|
|
|
|
{%- else %}
|
|
|
|
grafana_client_dashboard_{{ dashboard_name }}:
|
|
grafana3_dashboard.absent:
|
|
- name: {{ dashboard_name }}
|
|
|
|
{%- endif %}
|
|
|
|
{%- endfor %}
|
|
|
|
{%- endif %}
|