Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

Commit

Permalink
v0.3.1: new library structure
Browse files Browse the repository at this point in the history
  • Loading branch information
m0nhawk committed Oct 5, 2018
1 parent 2864a71 commit b9784a3
Show file tree
Hide file tree
Showing 14 changed files with 716 additions and 660 deletions.
21 changes: 11 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,23 @@ Work on API implementation still in progress.

| API | Status |
|---|---|
| Authentication | - |
| Admin | + |
| Alerting | - |
| Annotations | - |
| Authentication | +- |
| Dashboard | + |
| Dashboard Versions | - |
| Dashboard Permissions | - |
| Folder | - |
| Folder Permissions | - |
| Folder/Dashboard Search | - |
| Dashboard Permissions | + |
| Data Source | + |
| Folder | + |
| Folder Permissions | + |
| Folder/Dashboard Search | +- |
| Organisation | + |
| Other | + |
| Preferences | + |
| Snapshot | - |
| Annotations | - |
| Alerting | - |
| Teams | - |
| User | + |
| Admin | +- |
| Preferences | + |
| Other | + |

## Issue tracker

Expand Down
8 changes: 8 additions & 0 deletions grafana_api/api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from .base import Base
from .admin import Admin
from .dashboard import Dashboard
from .datasource import Datasource
from .folder import Folder
from .organisation import Organisation, Organisations
from .search import Search
from .user import User, Users
43 changes: 43 additions & 0 deletions grafana_api/api/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from .base import Base


class Admin(Base):
def __init__(self, api):
super().__init__(api)
self.api = api
self.path = '/admin'

def settings(self):
path = 'settings'
r = self.api.GET('/'.join([self.path, path]))
return r

def stats(self):
path = 'stats'
r = self.api.GET('/'.join([self.path, path]))
return r

def create_user(self, user):
create_user_path = 'users'
r = self.api.POST(create_user_path, json=user)
return r

def change_user_password(self, user_id, password):
change_user_password_path = self.path + '/users/%s/password' % (user_id)
r = self.api.PUT(change_user_password_path, json={'password': password})
return r

def change_user_permissions(self, user_id, is_grafana_admin):
change_user_permissions = self.path + '/users/%s/permissions' % (user_id)
r = self.api.PUT(change_user_permissions, json={'isGrafanaAdmin': is_grafana_admin})
return r

def delete_user(self, user_id):
delete_user_path = '/admin/users/%s' % (user_id)
r = self.api.DELETE(delete_user_path)
return r

def pause_all_alerts(self, pause):
change_user_permissions = self.path + '/pause-all-alerts'
r = self.api.POST(change_user_permissions, json={'paused': pause})
return r
3 changes: 3 additions & 0 deletions grafana_api/api/base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class Base(object):
def __init__(self, api):
self.api = api
65 changes: 65 additions & 0 deletions grafana_api/api/dashboard.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
from .base import Base


class Dashboard(Base):
def __init__(self, api):
super().__init__(api)
self.api = api
self.path = '/users'

def get_dashboard(self, dashboard_uid):
get_dashboard_path = '/dashboards/uid/%s' % (dashboard_uid)
r = self.api.GET(get_dashboard_path)
return r

def update_dashboard(self, dashboard):
"""
:param dashboard:
:return:
"""
put_dashboard_path = '/dashboards/db'
r = self.api.POST(put_dashboard_path, json=dashboard)
return r

def delete_dashboard(self, dashboard_uid):
delete_dashboard_path = '/dashboards/uid/%s' % (dashboard_uid)
r = self.api.DELETE(delete_dashboard_path)
return r

def get_home_dashboard(self):
"""
:return:
"""
get_home_dashboard_path = '/dashboards/home'
r = self.api.GET(get_home_dashboard_path)
return r

def get_dashboards_tags(self):
"""
:return:
"""
get_dashboards_tags_path = '/dashboards/tags'
r = self.api.GET(get_dashboards_tags_path)
return r

def get_dashboard_permissions(self, dashboardId):
"""
Gets all existing permissions for the dashboard with the given dashboardId.
:param dashboardId:
"""
return self.api.GET('/dashboards/id/%s/permissions' % dashboardId)

def update_dashboard_permissions(self, dashboardId, items):
"""
Updates permissions for a dashboard.
This operation will remove existing permissions if they’re not included in the request.
:param dashboardId: Dashboard id
"""
# TODO really relevant to return something?
return self.api.POST('/dashboards/id/%s/permissions' % dashboardId, json=dict(items=items))
100 changes: 100 additions & 0 deletions grafana_api/api/datasource.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
from .base import Base


class Datasource(Base):
def __init__(self, api):
super().__init__(api)
self.api = api
self.path = '/users'

def find_datasource(self, datasource_name):
"""
:param datasource_name:
:return:
"""
get_datasource_path = '/datasources/name/%s' % (datasource_name)
r = self.api.GET(get_datasource_path)
if 'id' in r:
return r['id']
return -1

def get_datasource_by_id(self, datasource_id):
"""
:param datasource_id:
:return:
"""
get_datasource_path = '/datasources/%s' % (datasource_id)
r = self.api.GET(get_datasource_path)
return r

def get_datasource_by_name(self, datasource_name):
"""
:param datasource_name:
:return:
"""
get_datasource_path = '/datasources/name/%s' % (datasource_name)
r = self.api.GET(get_datasource_path)
return r

def get_datasource_id_by_name(self, datasource_name):
"""
:param datasource_name:
:return:
"""
get_datasource_path = '/datasources/id/%s' % (datasource_name)
r = self.api.GET(get_datasource_path)
return r

def create_datasource(self, datasource):
"""
:param datasource:
:return:
"""
create_datasources_path = '/datasources'
r = self.api.POST(create_datasources_path, json=datasource)
return r

def update_datasource(self, datasource_id, datasource):
"""
:param datasource_id:
:param datasource:
:return:
"""
update_datasource = '/datasources/%s' % (datasource_id)
r = self.api.PUT(update_datasource, json=datasource)
return r

def list_datasources(self):
"""
:return:
"""
list_datasources_path = '/datasources'
r = self.api.GET(list_datasources_path)
return r

def delete_datasource_by_id(self, datasource_id):
"""
:param datasource_id:
:return:
"""
delete_datasource = '/datasources/%s' % (datasource_id)
r = self.api.DELETE(delete_datasource)
return r

def delete_datasource_by_name(self, datasource_name):
"""
:param datasource_name:
:return:
"""
delete_datasource = '/datasources/name/%s' % (datasource_name)
r = self.api.DELETE(delete_datasource)
return r
63 changes: 63 additions & 0 deletions grafana_api/api/folder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
from .base import Base


class Folder(Base):
def __init__(self, api):
super().__init__(api)
self.api = api
self.path = '/users'

def get_all_folders(self):
path = '/folders'
r = self.api.GET(path)
return r

def get_folder(self, uid):
path = '/folders/%s' % (uid)
r = self.api.GET(path)
return r

def create_folder(self, title, uid=None):
"""
Creates a new folder.
:param title: The title of the folder.
:param uid: Optional unique identifier.
"""
json_data = dict(title=title)
if uid is not None:
json_data['uid'] = uid
return self.api.POST('/folders', json=json_data)

def update_folder(self, uid, title):
path = '/folders' % (uid)
r = self.api.PUT(path, json={
"title": title
})
return r

def delete_folder(self, uid):
path = '/folders/%s' % (uid)
r = self.api.DELETE(path)
return r

def get_folder_by_id(self, id):
path = '/folders/id/%s' % (id)
r = self.api.GET(path)
return r

def get_folder_permissions(self):
path = '/folders/%s/permissions'
r = self.api.GET(path)
return r

def update_folder_permissions(self, uid, items):
"""
Updates permissions for a folder.
This operation will remove existing permissions if they’re not included in the request.
:param uid: Folder uid
"""
# TODO really relevant to return something?
return self.api.POST('/folders/%s/permissions' % uid, json=dict(items=items))
Loading

0 comments on commit b9784a3

Please sign in to comment.