From 02fa342e7d98365b7bde8a390e0432249aaf12a1 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 19 Jun 2024 21:08:54 +0200 Subject: grafana: create new dashboards for revamped blackbox exporter metric labels --- roles/monitoring/grafana/filter_plugins/grafana.py | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'roles/monitoring/grafana/filter_plugins/grafana.py') diff --git a/roles/monitoring/grafana/filter_plugins/grafana.py b/roles/monitoring/grafana/filter_plugins/grafana.py index 750dc46d..9fb78734 100644 --- a/roles/monitoring/grafana/filter_plugins/grafana.py +++ b/roles/monitoring/grafana/filter_plugins/grafana.py @@ -1,6 +1,7 @@ from __future__ import (absolute_import, division, print_function) __metaclass__ = type +import os from functools import partial from ansible import errors @@ -22,10 +23,40 @@ def resolve_grafana_url(url, config): raise errors.AnsibleFilterError("resolve_grafana_url(): %s" % str(e)) +def grafana_dashboard_subdirs(dashboards): + try: + dirs = [] + for dashboard in dashboards: + if 'file' in dashboard: + if '/' in dashboard['file']: + dirs.append(os.path.dirname(dashboard['file'])) + else: + if '/' in dashboard['name']: + dirs.append(os.path.dirname(dashboard['name'])) + return dirs + except Exception as e: + raise errors.AnsibleFilterError("grafana_dashboard_subdirs(): %s" % str(e)) + + +def grafana_dashboard_dest(dashboard): + try: + key = 'name' + if 'file' in dashboard: + key = 'file' + + if '/' in dashboard[key]: + return "%s/%s_%s" % (os.path.dirname(dashboard[key]), dashboard['datasource'], os.path.basename(dashboard[key])) + return "%s_%s" % (dashboard['datasource'], dashboard[key]) + except Exception as e: + raise errors.AnsibleFilterError("grafana_dashboard_dest(): %s" % str(e)) + + class FilterModule(object): filter_map = { 'resolve_grafana_url': resolve_grafana_url, + 'grafana_dashboard_subdirs': grafana_dashboard_subdirs, + 'grafana_dashboard_dest': grafana_dashboard_dest, } def filters(self): -- cgit v1.2.3