diff --git a/brian_dashboard_manager/grafana/dashboard.py b/brian_dashboard_manager/grafana/dashboard.py index 525cab91bf13f24ef30e2b4c352a5a1383f170e7..b778c4af36cbc56ba0eb5f367322b562ee69259a 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