From c166b73b010368ed912899b9e7733c0fa9e3115d Mon Sep 17 00:00:00 2001 From: Bjarke Madsen <bjarke.madsen@geant.org> Date: Fri, 19 Feb 2021 13:49:55 +0100 Subject: [PATCH] search for dashboard in specific folder --- brian_dashboard_manager/grafana/dashboard.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/brian_dashboard_manager/grafana/dashboard.py b/brian_dashboard_manager/grafana/dashboard.py index 525cab9..b778c4a 100644 --- a/brian_dashboard_manager/grafana/dashboard.py +++ b/brian_dashboard_manager/grafana/dashboard.py @@ -54,7 +54,7 @@ def find_dashboard(request: TokenRequest, title): # Searches Grafana for a dashboard # matching the title of the provided dashboard. -def _search_dashboard(request: TokenRequest, dashboard: Dict): +def _search_dashboard(request: TokenRequest, dashboard: Dict, folder_id=None): try: r = request.get('api/search', params={ 'query': dashboard["title"] @@ -62,8 +62,12 @@ def _search_dashboard(request: TokenRequest, dashboard: Dict): if r and isinstance(r, list): if len(r) >= 1: for dash in r: + if folder_id: + if folder_id != dash['folderId']: + continue if dash['title'] == dashboard['title']: - return _get_dashboard(request, dash['uid']) + definition = _get_dashboard(request, dash['uid']) + return definition return None except HTTPError: return None @@ -98,7 +102,7 @@ def create_dashboard(request: TokenRequest, dashboard: Dict, folder_id=None): different = False if existing_dashboard is None or different: - existing_dashboard = _search_dashboard(request, dashboard) + existing_dashboard = _search_dashboard(request, dashboard, folder_id) if existing_dashboard: dashboard['uid'] = existing_dashboard['dashboard']['uid'] @@ -116,7 +120,7 @@ def create_dashboard(request: TokenRequest, dashboard: Dict, folder_id=None): payload['folderId'] = folder_id try: - action = "Updating" if existing_dashboard else "Provisioning" + action = "Updating" if existing_dashboard else "Creating" logger.info(f'{action} dashboard: {title}') r = request.post('api/dashboards/db', json=payload) return r -- GitLab