1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include "include/Context.h"
7 #include "PaxosService.h"
9 #include "mgr/ServiceMap.h"
11 class MgrStatMonitor
: public PaxosService
{
13 version_t version
= 0;
15 ServiceMap service_map
;
16 std::map
<std::string
,ProgressEvent
> progress_events
;
19 PGMapDigest pending_digest
;
20 health_check_map_t pending_health_checks
;
21 std::map
<std::string
,ProgressEvent
> pending_progress_events
;
22 bufferlist pending_service_map_bl
;
25 MgrStatMonitor(Monitor
*mn
, Paxos
*p
, const string
& service_name
);
26 ~MgrStatMonitor() override
;
28 void init() override
{}
29 void on_shutdown() override
{}
31 void create_initial() override
;
32 void update_from_paxos(bool *need_bootstrap
) override
;
33 void create_pending() override
;
34 void encode_pending(MonitorDBStore::TransactionRef t
) override
;
35 version_t
get_trim_to() const override
;
37 bool definitely_converted_snapsets() const {
38 return digest
.definitely_converted_snapsets();
41 bool preprocess_query(MonOpRequestRef op
) override
;
42 bool prepare_update(MonOpRequestRef op
) override
;
44 void encode_full(MonitorDBStore::TransactionRef t
) override
{ }
46 bool preprocess_report(MonOpRequestRef op
);
47 bool prepare_report(MonOpRequestRef op
);
49 bool preprocess_getpoolstats(MonOpRequestRef op
);
50 bool preprocess_statfs(MonOpRequestRef op
);
52 void check_sub(Subscription
*sub
);
56 void on_active() override
;
59 uint64_t get_last_osd_stat_seq(int osd
) {
60 return digest
.get_last_osd_stat_seq(osd
);
65 const ServiceMap
& get_service_map() const {
69 const std::map
<std::string
,ProgressEvent
>& get_progress_events() {
70 return progress_events
;
74 const pool_stat_t
* get_pool_stat(int64_t poolid
) const {
75 auto i
= digest
.pg_pool_sum
.find(poolid
);
76 if (i
!= digest
.pg_pool_sum
.end()) {
82 const PGMapDigest
& get_digest() {
86 ceph_statfs
get_statfs(OSDMap
& osdmap
,
87 boost::optional
<int64_t> data_pool
) const {
88 return digest
.get_statfs(osdmap
, data_pool
);
91 void print_summary(Formatter
*f
, ostream
*out
) const {
92 digest
.print_summary(f
, out
);
94 void dump_info(Formatter
*f
) const {
96 f
->dump_object("servicemap", get_service_map());
98 void dump_cluster_stats(stringstream
*ss
,
100 bool verbose
) const {
101 digest
.dump_cluster_stats(ss
, f
, verbose
);
103 void dump_pool_stats(const OSDMap
& osdm
, stringstream
*ss
, Formatter
*f
,
104 bool verbose
) const {
105 digest
.dump_pool_stats_full(osdm
, ss
, f
, verbose
);