]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/controllers/grafana.py
import ceph 16.2.7
[ceph.git] / ceph / src / pybind / mgr / dashboard / controllers / grafana.py
CommitLineData
11fdf7f2
TL
1# -*- coding: utf-8 -*-
2from __future__ import absolute_import
3
adb31ebb 4from .. import mgr
81eedcae
TL
5from ..exceptions import DashboardException
6from ..grafana import GrafanaRestClient, push_local_dashboards
11fdf7f2
TL
7from ..security import Scope
8from ..settings import Settings
a4b75251
TL
9from . import APIDoc, APIRouter, BaseController, Endpoint, EndpointDoc, \
10 ReadPermission, UpdatePermission
f67539c2
TL
11
12URL_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 19class 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