]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: make MgrStatMonitor implement PGStatService directly
authorSage Weil <sage@redhat.com>
Mon, 28 Aug 2017 20:31:59 +0000 (16:31 -0400)
committerSage Weil <sage@redhat.com>
Wed, 6 Sep 2017 14:18:04 +0000 (10:18 -0400)
Avoid the intermediate glue class, simplify.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/MgrStatMonitor.cc
src/mon/MgrStatMonitor.h
src/mon/Monitor.cc

index 2ed996aa92189a1dd81044b1afe519d9e0db6188..2e26015c7cd0c84ae51345a88783394ecf655679 100644 (file)
 #include "messages/MStatfsReply.h"
 #include "messages/MServiceMap.h"
 
-class MgrPGStatService : public PGStatService {
-  PGMapDigest& digest;
-public:
-  MgrPGStatService(PGMapDigest& d) : digest(d) {}
-
-  const pool_stat_t* get_pool_stat(int64_t poolid) const override {
-    auto i = digest.pg_pool_sum.find(poolid);
-    if (i != digest.pg_pool_sum.end()) {
-      return &i->second;
-    }
-    return nullptr;
-  }
-
-  ceph_statfs get_statfs(OSDMap& osdmap,
-                        boost::optional<int64_t> data_pool) const override {
-    return digest.get_statfs(osdmap, data_pool);
-  }
-
-  void print_summary(Formatter *f, ostream *out) const override {
-    digest.print_summary(f, out);
-  }
-  void dump_info(Formatter *f) const override {
-    digest.dump(f);
-  }
-  void dump_fs_stats(stringstream *ss,
-                    Formatter *f,
-                    bool verbose) const override {
-    digest.dump_fs_stats(ss, f, verbose);
-  }
-  void dump_pool_stats(const OSDMap& osdm, stringstream *ss, Formatter *f,
-                      bool verbose) const override {
-    digest.dump_pool_stats_full(osdm, ss, f, verbose);
-  }
-};
-
-
 #define dout_subsys ceph_subsys_mon
 #undef dout_prefix
 #define dout_prefix _prefix(_dout, mon)
@@ -57,18 +21,12 @@ static ostream& _prefix(std::ostream *_dout, Monitor *mon) {
 }
 
 MgrStatMonitor::MgrStatMonitor(Monitor *mn, Paxos *p, const string& service_name)
-  : PaxosService(mn, p, service_name),
-    pgservice(new MgrPGStatService(digest))
+  : PaxosService(mn, p, service_name)
 {
 }
 
 MgrStatMonitor::~MgrStatMonitor() = default;
 
-PGStatService *MgrStatMonitor::get_pg_stat_service()
-{
-  return pgservice.get();
-}
-
 void MgrStatMonitor::create_initial()
 {
   dout(10) << __func__ << dendl;
@@ -187,11 +145,6 @@ void MgrStatMonitor::tick()
 {
 }
 
-void MgrStatMonitor::print_summary(Formatter *f, std::ostream *ss) const
-{
-  pgservice->print_summary(f, ss);
-}
-
 bool MgrStatMonitor::preprocess_query(MonOpRequestRef op)
 {
   auto m = static_cast<PaxosServiceMessage*>(op->get_req());
@@ -265,7 +218,7 @@ bool MgrStatMonitor::preprocess_getpoolstats(MonOpRequestRef op)
     const auto pool_id = mon->osdmon()->osdmap.lookup_pg_pool_name(pool_name);
     if (pool_id == -ENOENT)
       continue;
-    auto pool_stat = mon->pgservice->get_pool_stat(pool_id);
+    auto pool_stat = get_pool_stat(pool_id);
     if (!pool_stat)
       continue;
     reply->pool_stats[pool_name] = *pool_stat;
@@ -296,8 +249,7 @@ bool MgrStatMonitor::preprocess_statfs(MonOpRequestRef op)
            << " from " << statfs->get_orig_source() << dendl;
   epoch_t ver = get_last_committed();
   auto reply = new MStatfsReply(statfs->fsid, statfs->get_tid(), ver);
-  reply->h.st = mon->pgservice->get_statfs(mon->osdmon()->osdmap,
-                                          statfs->data_pool);
+  reply->h.st = get_statfs(mon->osdmon()->osdmap, statfs->data_pool);
   mon->send_reply(op, reply);
   return true;
 }
index 03c2e8cdf2c0b78b75a278fed998483c5bdc6b14..8fa68b405a241769225647fb053f74bdbd52b3dc 100644 (file)
@@ -11,7 +11,8 @@
 class PGStatService;
 class MgrPGStatService;
 
-class MgrStatMonitor : public PaxosService {
+class MgrStatMonitor : public PaxosService,
+                      public PGStatService {
   // live version
   version_t version = 0;
   PGMapDigest digest;
@@ -22,8 +23,6 @@ class MgrStatMonitor : public PaxosService {
   health_check_map_t pending_health_checks;
   bufferlist pending_service_map_bl;
 
-  std::unique_ptr<MgrPGStatService> pgservice;
-
 public:
   MgrStatMonitor(Monitor *mn, Paxos *p, const string& service_name);
   ~MgrStatMonitor() override;
@@ -65,12 +64,39 @@ public:
 
   void update_logger();
 
-  void print_summary(Formatter *f, std::ostream *ss) const;
-
-  PGStatService *get_pg_stat_service();
   const ServiceMap& get_service_map() {
     return service_map;
   }
 
+  // PGStatService
+  const pool_stat_t* get_pool_stat(int64_t poolid) const override {
+    auto i = digest.pg_pool_sum.find(poolid);
+    if (i != digest.pg_pool_sum.end()) {
+      return &i->second;
+    }
+    return nullptr;
+  }
+
+  ceph_statfs get_statfs(OSDMap& osdmap,
+                        boost::optional<int64_t> data_pool) const override {
+    return digest.get_statfs(osdmap, data_pool);
+  }
+
+  void print_summary(Formatter *f, ostream *out) const override {
+    digest.print_summary(f, out);
+  }
+  void dump_info(Formatter *f) const override {
+    digest.dump(f);
+  }
+  void dump_fs_stats(stringstream *ss,
+                    Formatter *f,
+                    bool verbose) const override {
+    digest.dump_fs_stats(ss, f, verbose);
+  }
+  void dump_pool_stats(const OSDMap& osdm, stringstream *ss, Formatter *f,
+                      bool verbose) const override {
+    digest.dump_pool_stats_full(osdm, ss, f, verbose);
+  }
+
   friend class C_Updated;
 };
index f9273d51ecc86e1a1235a063e1549911c240daa4..8539d1166fa35ad54c5b9c8dc6d5612f5e09c114 100755 (executable)
@@ -212,7 +212,7 @@ Monitor::Monitor(CephContext* cct_, string nm, MonitorDBStore *s,
   leader_mon_commands = local_mon_commands;
 
   // note: OSDMonitor may update this based on the luminous flag.
-  pgservice = mgrstatmon()->get_pg_stat_service();
+  pgservice = mgrstatmon();
 }
 
 Monitor::~Monitor()