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

add grafana API request utils

parent 0b92c929
No related branches found
No related tags found
No related merge requests found
from brian_dashboard_manager.grafana.provision import provision
__all__ = ["provision"]
\ No newline at end of file
import requests import requests
from typing import Dict, Any import json
from flask import current_app
class Request(object): class Request(object):
...@@ -21,7 +20,10 @@ class Request(object): ...@@ -21,7 +20,10 @@ class Request(object):
**kwargs **kwargs
) )
r.raise_for_status() r.raise_for_status()
return r.json() try:
return r.json()
except json.JSONDecodeError:
return None
def post(self, endpoint: str, headers=None, **kwargs): def post(self, endpoint: str, headers=None, **kwargs):
...@@ -31,7 +33,10 @@ class Request(object): ...@@ -31,7 +33,10 @@ class Request(object):
**kwargs **kwargs
) )
r.raise_for_status() r.raise_for_status()
return r.json() try:
return r.json()
except json.JSONDecodeError:
return None
def delete(self, endpoint: str, headers=None, **kwargs): def delete(self, endpoint: str, headers=None, **kwargs):
...@@ -41,23 +46,27 @@ class Request(object): ...@@ -41,23 +46,27 @@ class Request(object):
**kwargs **kwargs
) )
r.raise_for_status() r.raise_for_status()
return r.json() try:
return r.json()
except json.JSONDecodeError:
return None
class AdminRequest(Request): class AdminRequest(Request):
def __init__(self, hostname, port, username, password): def __init__(self, hostname, grafana_port, admin_username, admin_password, **kwargs):
self.username = username self.username = admin_username
super().__init__(f'http://{username}:{password}@{hostname}:{port}/') super().__init__(
f'http://{admin_username}:{admin_password}@{hostname}:{grafana_port}/')
def __str__(self): def __str__(self):
return f'admin user: {self.username}' return f'admin user: {self.username}'
class TokenRequest(Request): class TokenRequest(Request):
def __init__(self, hostname, port, token: str): def __init__(self, hostname, grafana_port, token: str, **kwargs):
self.token = token self.token = token
super().__init__(f'http://{hostname}:{port}/', { super().__init__(f'http://{hostname}:{grafana_port}/', {
'Authorization': 'Bearer ' + token 'Authorization': 'Bearer ' + token
}) })
......
...@@ -2,3 +2,5 @@ requests ...@@ -2,3 +2,5 @@ requests
jsonschema jsonschema
flask flask
pytest pytest
pytest-mock
responses
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