From 221b3f75d8c2804b2cab627bb139159bcd8498af Mon Sep 17 00:00:00 2001 From: Bjarke Madsen <bjarke.madsen@geant.org> Date: Mon, 25 Jan 2021 17:53:36 +0100 Subject: [PATCH] add grafana API request utils --- brian_dashboard_manager/grafana/__init__.py | 3 -- .../grafana/utils/__init__.py | 0 .../grafana/utils/request.py | 29 ++++++++++++------- requirements.txt | 2 ++ 4 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 brian_dashboard_manager/grafana/utils/__init__.py diff --git a/brian_dashboard_manager/grafana/__init__.py b/brian_dashboard_manager/grafana/__init__.py index a39afea..e69de29 100644 --- a/brian_dashboard_manager/grafana/__init__.py +++ b/brian_dashboard_manager/grafana/__init__.py @@ -1,3 +0,0 @@ -from brian_dashboard_manager.grafana.provision import provision - -__all__ = ["provision"] \ No newline at end of file diff --git a/brian_dashboard_manager/grafana/utils/__init__.py b/brian_dashboard_manager/grafana/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/brian_dashboard_manager/grafana/utils/request.py b/brian_dashboard_manager/grafana/utils/request.py index a34d541..db29319 100644 --- a/brian_dashboard_manager/grafana/utils/request.py +++ b/brian_dashboard_manager/grafana/utils/request.py @@ -1,6 +1,5 @@ import requests -from typing import Dict, Any -from flask import current_app +import json class Request(object): @@ -21,7 +20,10 @@ class Request(object): **kwargs ) r.raise_for_status() - return r.json() + try: + return r.json() + except json.JSONDecodeError: + return None def post(self, endpoint: str, headers=None, **kwargs): @@ -31,7 +33,10 @@ class Request(object): **kwargs ) r.raise_for_status() - return r.json() + try: + return r.json() + except json.JSONDecodeError: + return None def delete(self, endpoint: str, headers=None, **kwargs): @@ -41,23 +46,27 @@ class Request(object): **kwargs ) r.raise_for_status() - return r.json() + try: + return r.json() + except json.JSONDecodeError: + return None class AdminRequest(Request): - def __init__(self, hostname, port, username, password): - self.username = username - super().__init__(f'http://{username}:{password}@{hostname}:{port}/') + def __init__(self, hostname, grafana_port, admin_username, admin_password, **kwargs): + self.username = admin_username + super().__init__( + f'http://{admin_username}:{admin_password}@{hostname}:{grafana_port}/') def __str__(self): return f'admin user: {self.username}' class TokenRequest(Request): - def __init__(self, hostname, port, token: str): + def __init__(self, hostname, grafana_port, token: str, **kwargs): self.token = token - super().__init__(f'http://{hostname}:{port}/', { + super().__init__(f'http://{hostname}:{grafana_port}/', { 'Authorization': 'Bearer ' + token }) diff --git a/requirements.txt b/requirements.txt index 48c54a2..d04fa58 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,5 @@ requests jsonschema flask pytest +pytest-mock +responses -- GitLab