]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/controllers/monitor.py
1 # -*- coding: utf-8 -*-
6 from ..security
import Scope
7 from . import APIDoc
, APIRouter
, BaseController
, Endpoint
, EndpointDoc
, ReadPermission
14 "election_epoch": (int, ""),
15 "quorum": ([int], ""),
16 "quorum_age": (int, ""),
18 "required_con": (str, ""),
19 "required_mon": ([int], ""),
20 "quorum_con": (str, ""),
21 "quorum_mon": ([str], "")
23 "outside_quorum": ([str], ""),
24 "extra_probe_peers": ([str], ""),
25 "sync_provider": ([str], ""),
29 "modified": (str, ""),
31 "min_mon_release": (int, ""),
32 "min_mon_release_name": (str, ""),
34 "persistent": ([str], ""),
35 "optional": ([str], "")
48 "public_addr": (str, ""),
49 "priority": (int, ""),
52 "num_sessions": ([int], ""),
58 "features": (str, ""),
63 "features": (str, ""),
68 "features": (str, ""),
73 "features": (str, ""),
90 "public_addr": (str, ""),
91 "priority": (int, ""),
94 "num_sessions": ([int], "")
97 "out_quorum": ([int], "")
101 @APIRouter('/monitor', Scope
.MONITOR
)
102 @APIDoc("Get Monitor Details", "Monitor")
103 class Monitor(BaseController
):
106 @EndpointDoc("Get Monitor Details",
107 responses
={200: MONITOR_SCHEMA
})
109 in_quorum
, out_quorum
= [], []
111 counters
= ['mon.num_sessions']
113 mon_status_json
= mgr
.get("mon_status")
114 mon_status
= json
.loads(mon_status_json
['json'])
116 for mon
in mon_status
["monmap"]["mons"]:
118 for counter
in counters
:
119 data
= mgr
.get_counter("mon", mon
["name"], counter
)
121 mon
["stats"][counter
.split(".")[1]] = data
[counter
]
123 mon
["stats"][counter
.split(".")[1]] = []
124 if mon
["rank"] in mon_status
["quorum"]:
125 in_quorum
.append(mon
)
127 out_quorum
.append(mon
)
130 'mon_status': mon_status
,
131 'in_quorum': in_quorum
,
132 'out_quorum': out_quorum