]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
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 | } |