885c5fc79c
This patch adds a default panel that will be used when another service will add a new panel into the main dashboard through grains. This is the common part between all panels of the main dashboard. It replaces the static main dashboard that has been removed.
96 lines
3.2 KiB
Text
96 lines
3.2 KiB
Text
{%- from "grafana/map.jinja" import client with context %}
|
|
{%- if client.get('enabled', False) %}
|
|
|
|
include:
|
|
- grafana.client.service
|
|
|
|
{%- 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|lower }}
|
|
{%- 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() %}
|
|
{%- if dashboard.get('format', 'yaml')|lower == 'yaml' %}
|
|
# Dashboards in JSON format are considered as blob
|
|
{%- 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}) %}
|
|
{%- endif %}
|
|
|
|
{%- 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 }}
|
|
{%- if dashboard.get('format', 'yaml')|lower == 'json' %}
|
|
{%- import_json dashboard.template as dash %}
|
|
- dashboard: {{ dash|json }}
|
|
- dashboard_format: json
|
|
{%- else %}
|
|
- dashboard: {{ dashboard }}
|
|
{%- if dashboard.base_dashboards is defined %}
|
|
- base_dashboards_from_pillar: {{ dashboard.base_dashboards|yaml }}
|
|
{%- endif %}
|
|
{%- if dashboard.base_rows is defined %}
|
|
- base_rows_from_pillar: {{ dashboard.base_rows|yaml }}
|
|
{%- endif %}
|
|
{%- if dashboard.base_panels is defined %}
|
|
- base_panels_from_pillar: {{ dashboard.base_panels|yaml }}
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- else %}
|
|
grafana_client_dashboard_{{ dashboard_name }}:
|
|
grafana3_dashboard.absent:
|
|
- name: {{ dashboard_name }}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
|
|
{%- endif %}
|