X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fmon%2FMgrStatMonitor.h;fp=src%2Fceph%2Fsrc%2Fmon%2FMgrStatMonitor.h;h=1dc264f86b6d06671f5634d023146b4d93eda0e3;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/mon/MgrStatMonitor.h b/src/ceph/src/mon/MgrStatMonitor.h new file mode 100644 index 0000000..1dc264f --- /dev/null +++ b/src/ceph/src/mon/MgrStatMonitor.h @@ -0,0 +1,79 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#pragma once + +#include "include/Context.h" +#include "PaxosService.h" +#include "mon/PGMap.h" +#include "mgr/ServiceMap.h" + +class MonPGStatService; +class MgrPGStatService; + +class MgrStatMonitor : public PaxosService { + // live version + version_t version = 0; + PGMapDigest digest; + ServiceMap service_map; + + // pending commit + PGMapDigest pending_digest; + health_check_map_t pending_health_checks; + bufferlist pending_service_map_bl; + + std::unique_ptr pgservice; + +public: + MgrStatMonitor(Monitor *mn, Paxos *p, const string& service_name); + ~MgrStatMonitor() override; + + void init() override {} + void on_shutdown() override {} + + void create_initial() override; + void update_from_paxos(bool *need_bootstrap) override; + void create_pending() override; + void encode_pending(MonitorDBStore::TransactionRef t) override; + version_t get_trim_to() override; + + bool definitely_converted_snapsets() const { + return digest.definitely_converted_snapsets(); + } + + bool preprocess_query(MonOpRequestRef op) override; + bool prepare_update(MonOpRequestRef op) override; + + void encode_full(MonitorDBStore::TransactionRef t) override { } + + bool preprocess_report(MonOpRequestRef op); + bool prepare_report(MonOpRequestRef op); + + bool preprocess_getpoolstats(MonOpRequestRef op); + bool preprocess_statfs(MonOpRequestRef op); + + void check_sub(Subscription *sub); + void check_subs(); + void send_digests(); + + void on_active() override; + void get_health(list >& summary, + list > *detail, + CephContext *cct) const override; + void tick() override; + + uint64_t get_last_osd_stat_seq(int osd) { + return digest.get_last_osd_stat_seq(osd); + } + + void update_logger(); + + void print_summary(Formatter *f, std::ostream *ss) const; + + MonPGStatService *get_pg_stat_service(); + const ServiceMap& get_service_map() { + return service_map; + } + + friend class C_Updated; +};