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 ...@@ -24,16 +24,40 @@ def get_dashboard_definitions(dir=None): # pragma: no cover
yield dashboard 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 # Deletes a single dashboard for the organization
# the API token is registered to. # the API token is registered to.
def _delete_dashboard(request: TokenRequest, uid: int): def _delete_dashboard(request: TokenRequest, uid: int):
try: try:
r = request.delete(f'api/dashboards/uid/{uid}') r = request.delete(f'api/dashboards/uid/{uid}')
if r and 'deleted' in r.get('message', ''): if r and 'deleted' in r.get('message', ''):
return r return True
except HTTPError: 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}') logger.exception(f'Error when deleting dashboard with UID #{uid}')
return None return False
# Deletes all dashboards for the organization # Deletes all dashboards for the organization
...@@ -55,10 +79,9 @@ def find_dashboard(request: TokenRequest, title): ...@@ -55,10 +79,9 @@ def find_dashboard(request: TokenRequest, title):
return r[0] return r[0]
return None return None
# Searches Grafana for a dashboard # Searches Grafana for a dashboard
# matching the title of the provided dashboard. # matching the title of the provided dashboard.
def _search_dashboard(request: TokenRequest, dashboard: Dict, folder_id=None): def _search_dashboard(request: TokenRequest, dashboard: Dict, folder_id=None):
try: try:
r = request.get('api/search', params={ 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