diff options
author | Christian Pointner <equinox@spreadspace.org> | 2024-06-30 00:32:34 +0200 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2024-06-30 00:32:34 +0200 |
commit | 8ef71cb6c33a134c1565a034a39a85b0a0a6324f (patch) | |
tree | 11f660aa745ebed88e2deaa7eeb9ea6f12885da0 /roles/monitoring/grafana/filter_plugins | |
parent | bind/zones: add DMARC policies (diff) | |
parent | prometheus: incooporate multitarget labelding to elevate hosts as well (diff) |
Merge branch 'topic/promethues-multitarget-exporter-labels'
Diffstat (limited to 'roles/monitoring/grafana/filter_plugins')
-rw-r--r-- | roles/monitoring/grafana/filter_plugins/grafana.py | 31 |
1 files changed, 31 insertions, 0 deletions
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): |