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

Add public delete dashboard method

parent acc19a9c
No related branches found
No related tags found
No related merge requests found
......@@ -24,16 +24,40 @@ def get_dashboard_definitions(dir=None): # pragma: no cover
yield dashboard
def delete_dashboard(request: TokenRequest, dashboard, folder_id=None):
try:
r = None
uid = dashboard.get('uid')
if uid:
return _delete_dashboard(request, uid)
elif dashboard.get('title') and folder_id:
dash = _search_dashboard(request, dashboard, folder_id)
if dash is None:
return True
r = request.delete(f'api/dashboards/uid/{dash.get("uid")}')
logger.info(f'Deleted dashboard: {dashboard.get("title")}')
return r is not None
except HTTPError:
dump = json.dumps(dashboard, indent=2)
logger.exception(
f'Error when deleting dashboard:\n{dump}')
return None
# Deletes a single dashboard for the organization
# the API token is registered to.
def _delete_dashboard(request: TokenRequest, uid: int):
try:
r = request.delete(f'api/dashboards/uid/{uid}')
if r and 'deleted' in r.get('message', ''):
return r
except HTTPError:
return True
except HTTPError as e:
if e.response is not None and e.response.status_code == 404:
return True
logger.exception(f'Error when deleting dashboard with UID #{uid}')
return None
return False
# Deletes all dashboards for the organization
......@@ -55,10 +79,9 @@ def find_dashboard(request: TokenRequest, title):
return r[0]
return None
# Searches Grafana for a dashboard
# matching the title of the provided dashboard.
def _search_dashboard(request: TokenRequest, dashboard: Dict, folder_id=None):
try:
r = request.get('api/search', params={
......
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