mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 10:48:02 +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) | 
