]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/controllers/monitor.py
1 # -*- coding: utf-8 -*-
2 from __future__
import absolute_import
7 from ..security
import Scope
8 from . import APIDoc
, APIRouter
, BaseController
, Endpoint
, EndpointDoc
, ReadPermission
15 "election_epoch": (int, ""),
16 "quorum": ([int], ""),
17 "quorum_age": (int, ""),
19 "required_con": (str, ""),
20 "required_mon": ([int], ""),
21 "quorum_con": (str, ""),
22 "quorum_mon": ([str], "")
24 "outside_quorum": ([str], ""),
25 "extra_probe_peers": ([str], ""),
26 "sync_provider": ([str], ""),
30 "modified": (str, ""),
32 "min_mon_release": (int, ""),
33 "min_mon_release_name": (str, ""),
35 "persistent": ([str], ""),
36 "optional": ([str], "")
49 "public_addr": (str, ""),
50 "priority": (int, ""),
53 "num_sessions": ([int], ""),
59 "features": (str, ""),
64 "features": (str, ""),
69 "features": (str, ""),
74 "features": (str, ""),
91 "public_addr": (str, ""),
92 "priority": (int, ""),
95 "num_sessions": ([int], "")
98 "out_quorum": ([int], "")
102 @APIRouter('/monitor', Scope
.MONITOR
)
103 @APIDoc("Get Monitor Details", "Monitor")
104 class Monitor(BaseController
):
107 @EndpointDoc("Get Monitor Details",
108 responses
={200: MONITOR_SCHEMA
})
110 in_quorum
, out_quorum
= [], []
112 counters
= ['mon.num_sessions']
114 mon_status_json
= mgr
.get("mon_status")
115 mon_status
= json
.loads(mon_status_json
['json'])
117 for mon
in mon_status
["monmap"]["mons"]:
119 for counter
in counters
:
120 data
= mgr
.get_counter("mon", mon
["name"], counter
)
122 mon
["stats"][counter
.split(".")[1]] = data
[counter
]
124 mon
["stats"][counter
.split(".")[1]] = []
125 if mon
["rank"] in mon_status
["quorum"]:
126 in_quorum
.append(mon
)
128 out_quorum
.append(mon
)
131 'mon_status': mon_status
,
132 'in_quorum': in_quorum
,
133 'out_quorum': out_quorum