mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-30 18:27:53 +00:00
94 lines
3.5 KiB
Python
94 lines
3.5 KiB
Python
#!/usr/bin/env python3
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
# Class holds default settings for json requests to Grafana -
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
import sys
|
|
|
|
if sys.version_info[0] != 3:
|
|
print("This script requires Python 3")
|
|
exit()
|
|
|
|
import requests
|
|
|
|
import json
|
|
|
|
|
|
class GrafanaRequest:
|
|
def __init__(self,
|
|
_grafanajson_host,
|
|
_grafanajson_port,
|
|
_folderID=0,
|
|
_api_token=None,
|
|
_headers=dict(),
|
|
_overwrite='false',
|
|
debug_=False,
|
|
die_on_error_=False):
|
|
self.debug = debug_
|
|
self.die_on_error = die_on_error_
|
|
self.headers = _headers
|
|
self.headers['Authorization'] = 'Bearer ' + _api_token
|
|
self.headers['Content-Type'] = 'application/json'
|
|
self.grafanajson_url = "http://%s:%s" % (_grafanajson_host, _grafanajson_port)
|
|
self.data = dict()
|
|
self.data['overwrite'] = _overwrite
|
|
|
|
def create_bucket(self,
|
|
bucket_name=None):
|
|
# Create a bucket in Grafana
|
|
if bucket_name is not None:
|
|
pass
|
|
|
|
def list_dashboards(self):
|
|
url = self.grafanajson_url + '/api/search?folderIds=0&query=&starred=false'
|
|
return requests.get(url).text
|
|
|
|
def create_dashboard(self,
|
|
dashboard_name=None,
|
|
):
|
|
self.grafanajson_url = self.grafanajson_url + "/api/dashboards/db"
|
|
datastore = dict()
|
|
dashboard = dict()
|
|
dashboard['id'] = None
|
|
dashboard['title'] = dashboard_name
|
|
dashboard['tags'] = ['templated']
|
|
dashboard['timezone'] = 'browser'
|
|
dashboard['schemaVersion'] = 27
|
|
dashboard['version'] = 4
|
|
datastore['dashboard'] = dashboard
|
|
datastore['overwrite'] = False
|
|
data = json.dumps(datastore, indent=4)
|
|
return requests.post(self.grafanajson_url, headers=self.headers, data=data, verify=False)
|
|
|
|
def delete_dashboard(self,
|
|
dashboard_uid=None):
|
|
self.grafanajson_url = self.grafanajson_url + "/api/dashboards/uid/" + dashboard_uid
|
|
return requests.post(self.grafanajson_url, headers=self.headers, verify=False)
|
|
|
|
def create_dashboard_from_data(self,
|
|
json_file=None):
|
|
self.grafanajson_url = self.grafanajson_url + '/api/dashboards/db'
|
|
datastore = dict()
|
|
dashboard = dict(json.loads(open(json_file).read()))
|
|
datastore['dashboard'] = dashboard
|
|
datastore['overwrite'] = False
|
|
data = json.dumps(datastore, indent=4)
|
|
#return print(data)
|
|
return requests.post(self.grafanajson_url, headers=self.headers, data=data, verify=False)
|
|
|
|
def create_dashboard_from_dict(self,
|
|
dictionary=None):
|
|
self.grafanajson_url = self.grafanajson_url + '/api/dashboards/db'
|
|
datastore = dict()
|
|
dashboard = dict(json.loads(dictionary))
|
|
datastore['dashboard'] = dashboard
|
|
datastore['overwrite'] = False
|
|
data = json.dumps(datastore, indent=4)
|
|
#return print(data)
|
|
return requests.post(self.grafanajson_url, headers=self.headers, data=data, verify=False)
|
|
|
|
|
|
def create_custom_dashboard(self,
|
|
datastore=None):
|
|
data = json.dumps(datastore, indent=4)
|
|
return requests.post(self.grafanajson_url, headers=self.headers, data=data, verify=False) |