Skip to content
Snippets Groups Projects
Commit 9de19fb9 authored by Bjarke Madsen's avatar Bjarke Madsen
Browse files

Delete left-over or unmanaged folders.

parent 228d0f9b
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@ from brian_dashboard_manager.grafana.utils.request import TokenRequest
logger = logging.getLogger(__name__)
def delete_folder(request: TokenRequest, title, uid=None):
def delete_folder(request: TokenRequest, title=None, uid=None):
if uid:
r = request.delete(f'api/folders/{uid}')
return r is not None
......
......@@ -22,7 +22,7 @@ from brian_dashboard_manager.grafana.dashboard import find_dashboard, \
from brian_dashboard_manager.grafana.datasource import \
check_provisioned, create_datasource
from brian_dashboard_manager.grafana.folder import find_folder, \
delete_folder
delete_folder, get_folders
from brian_dashboard_manager.inventory_provider.interfaces import \
get_gws_direct, get_gws_indirect, get_interfaces
......@@ -308,6 +308,11 @@ def provision(config):
updated = find_dashboard(token_request) or []
updated = reduce(get_uid, updated, {})
# General is a base folder present in Grafana
folders_to_keep = ['General', 'Aggregates']
folders_to_keep.extend([dash['folder_name']
for dash in dashboards.values()])
def update_dash_list(dashboards):
for dashboard in dashboards:
if isinstance(dashboard, Future):
......@@ -451,6 +456,7 @@ def provision(config):
# get dashboard UIDs from ignored folders
# and make sure we don't touch them
for name in ignored_folders:
folders_to_keep.append(name)
logger.info(
f'Ignoring dashboards under the folder {org["name"]}/{name}')
folder = find_folder(token_request, name, create=False)
......@@ -470,6 +476,13 @@ def provision(config):
logger.info(f'Deleting stale dashboard with UID {dash}')
delete_dashboard(token_request, {'uid': dash})
all_folders = get_folders(token_request)
folders_to_keep = set(folders_to_keep)
for folder in all_folders:
if folder['title'] not in folders_to_keep:
delete_folder(token_request, uid=folder['uid'])
logger.info(f'Time to complete: {time.time() - start}')
for org_id, token in tokens:
delete_api_token(request, org_id, token)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment