]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/controllers/monitor.py
d4512fcfe357fc7e1f1865a5fce8efc310e2b1a9
[ceph.git] / ceph / src / pybind / mgr / dashboard / controllers / monitor.py
1 # -*- coding: utf-8 -*-
2 from __future__ import absolute_import
3
4 import json
5
6 from . import ApiController, Endpoint, BaseController, ReadPermission
7 from .. import mgr
8 from ..security import Scope
9
10
11 @ApiController('/monitor', Scope.MONITOR)
12 class Monitor(BaseController):
13 @Endpoint()
14 @ReadPermission
15 def __call__(self):
16 in_quorum, out_quorum = [], []
17
18 counters = ['mon.num_sessions']
19
20 mon_status_json = mgr.get("mon_status")
21 mon_status = json.loads(mon_status_json['json'])
22
23 for mon in mon_status["monmap"]["mons"]:
24 mon["stats"] = {}
25 for counter in counters:
26 data = mgr.get_counter("mon", mon["name"], counter)
27 if data is not None:
28 mon["stats"][counter.split(".")[1]] = data[counter]
29 else:
30 mon["stats"][counter.split(".")[1]] = []
31 if mon["rank"] in mon_status["quorum"]:
32 in_quorum.append(mon)
33 else:
34 out_quorum.append(mon)
35
36 return {
37 'mon_status': mon_status,
38 'in_quorum': in_quorum,
39 'out_quorum': out_quorum
40 }