]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | # -*- coding: utf-8 -*- |
2 | from __future__ import absolute_import | |
3 | ||
adb31ebb | 4 | from .. import mgr |
81eedcae TL |
5 | from ..exceptions import DashboardException |
6 | from ..grafana import GrafanaRestClient, push_local_dashboards | |
11fdf7f2 TL |
7 | from ..security import Scope |
8 | from ..settings import Settings | |
a4b75251 TL |
9 | from . import APIDoc, APIRouter, BaseController, Endpoint, EndpointDoc, \ |
10 | ReadPermission, UpdatePermission | |
f67539c2 TL |
11 | |
12 | URL_SCHEMA = { | |
13 | "instance": (str, "grafana instance") | |
14 | } | |
11fdf7f2 TL |
15 | |
16 | ||
a4b75251 TL |
17 | @APIRouter('/grafana', Scope.GRAFANA) |
18 | @APIDoc("Grafana Management API", "Grafana") | |
11fdf7f2 | 19 | class Grafana(BaseController): |
11fdf7f2 TL |
20 | @Endpoint() |
21 | @ReadPermission | |
f67539c2 | 22 | @EndpointDoc("List Grafana URL Instance", responses={200: URL_SCHEMA}) |
11fdf7f2 | 23 | def url(self): |
adb31ebb TL |
24 | grafana_url = mgr.get_module_option('GRAFANA_API_URL') |
25 | grafana_frontend_url = mgr.get_module_option('GRAFANA_FRONTEND_API_URL') | |
26 | if grafana_frontend_url != '' and grafana_url == '': | |
27 | url = '' | |
28 | else: | |
29 | url = (mgr.get_module_option('GRAFANA_FRONTEND_API_URL') | |
30 | or mgr.get_module_option('GRAFANA_API_URL')).rstrip('/') | |
31 | response = {'instance': url} | |
11fdf7f2 TL |
32 | return response |
33 | ||
34 | @Endpoint() | |
35 | @ReadPermission | |
36 | def validation(self, params): | |
37 | grafana = GrafanaRestClient() | |
38 | method = 'GET' | |
adb31ebb | 39 | url = str(Settings.GRAFANA_API_URL).rstrip('/') + \ |
11fdf7f2 TL |
40 | '/api/dashboards/uid/' + params |
41 | response = grafana.url_validation(method, url) | |
42 | return response | |
81eedcae TL |
43 | |
44 | @Endpoint(method='POST') | |
45 | @UpdatePermission | |
46 | def dashboards(self): | |
47 | response = dict() | |
48 | try: | |
49 | response['success'] = push_local_dashboards() | |
50 | except Exception as e: # pylint: disable=broad-except | |
51 | raise DashboardException( | |
494da23a | 52 | msg=str(e), |
81eedcae TL |
53 | component='grafana', |
54 | http_status_code=500, | |
55 | ) | |
56 | return response |