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