Skip to content

Commit

Permalink
Create data_visualizer.py
Browse files Browse the repository at this point in the history
  • Loading branch information
KOSASIH authored May 11, 2024
1 parent e5ad210 commit 642a530
Showing 1 changed file with 132 additions and 0 deletions.
132 changes: 132 additions & 0 deletions data_visualization/data_visualizer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
import os
import requests

class DataVisualizer:
def __init__(self, grafana_url, grafana_api_key):
self.grafana_url = grafana_url
self.grafana_api_key = grafana_api_key

def create_dashboard(self, dashboard_title, panels):
"""
Creates a new dashboard in Grafana.
"""
headers = {
'Authorization': f'Bearer {self.grafana_api_key}',
'Content-Type': 'application/json'
}

url = f'{self.grafana_url}/api/dashboards/db'
data = {
'dashboard': {
'title': dashboard_title,
'panels': panels
}
}

response = requests.post(url, headers=headers, json=data)

if response.status_code != 200:
raise Exception(f'Failed to create dashboard: {response.text}')

return response.json()['dashboard']['uid']

def update_dashboard(self, dashboard_uid, panels):
"""
Updates an existing dashboard in Grafana.
"""
headers = {
'Authorization': f'Bearer {self.grafana_api_key}',
'Content-Type': 'application/json'
}

url = f'{self.grafana_url}/api/dashboards/uid/{dashboard_uid}'
data = {
'dashboard': {
'panels': panels
}
}

response = requests.put(url, headers=headers, json=data)

if response.status_code != 200:
raise Exception(f'Failed to update dashboard: {response.text}')

return response.json()['dashboard']['uid']

def delete_dashboard(self, dashboard_uid):
"""
Deletes a dashboard in Grafana.
"""
headers = {
'Authorization': f'Bearer {self.grafana_api_key}'
}

url = f'{self.grafana_url}/api/dashboards/uid/{dashboard_uid}'

response = requests.delete(url, headers=headers)

if response.status_code != 200:
raise Exception(f'Failed to delete dashboard: {response.text}')

return response.json()['message']

def create_panel(self, panel_title, panel_type, panel_json):
"""
Creates a new panel in Grafana.
"""
headers = {
'Authorization': f'Bearer {self.grafana_api_key}',
'Content-Type': 'application/json'
}

url = f'{self.grafana_url}/api/panels/database'
data = {
'title': panel_title,
'type': panel_type,
'json': panel_json
}

response = requests.post(url, headers=headers, json=data)

if response.status_code != 200:
raise Exception(f'Failed to create panel: {response.text}')

return response.json()['panelId']

def update_panel(self, panel_id, panel_json):
"""
Updates an existing panel in Grafana.
"""
headers = {
'Authorization': f'Bearer {self.grafana_api_key}',
'Content-Type': 'application/json'
}

url = f'{self.grafana_url}/api/panels/{panel_id}'
data = {
'json': panel_json
}

response = requests.put(url, headers=headers, json=data)

if response.status_code != 200:
raise Exception(f'Failed to update panel: {response.text}')

return response.json()['panelId']

def delete_panel(self, panel_id):
"""
Deletes a panel in Grafana.
"""
headers = {
'Authorization': f'Bearer {self.grafana_api_key}'
}

url = f'{self.grafana_url}/api/panels/{panel_id}'

response = requests.delete(url, headers=headers)

if response.status_code != 200:
raise Exception(f'Failed to delete panel: {response.text}')

return response.json()['message']

0 comments on commit 642a530

Please sign in to comment.