]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: inherit PGMonStatService from the PGMapStatService
authorGreg Farnum <gfarnum@redhat.com>
Sat, 10 Jun 2017 00:42:46 +0000 (17:42 -0700)
committerGreg Farnum <gfarnum@redhat.com>
Thu, 15 Jun 2017 00:01:32 +0000 (17:01 -0700)
Adventures in multiple inheritance!

Signed-off-by: Greg Farnum <gfarnum@redhat.com>
src/mon/PGMap.h
src/mon/PGMonitor.cc
src/mon/PGStatService.h

index 0bf8445b9b0106931b0df98ab657e7738d4c1a28..805930ea1f4d30b66fac1779f6d88f0bc19b684a 100644 (file)
@@ -581,7 +581,8 @@ namespace reweight {
 }
 
 
-class PGMapStatService : public PGStatService {
+class PGMapStatService : virtual public PGStatService {
+protected:
   const PGMap& pgmap;
 public:
   PGMapStatService(const PGMap& o)
index 2d35fe6e8ce580704aaa69ac1dfdcd366a389d26..7fdb5bd6357a786afbc30ed4acb8625d5c78078d 100644 (file)
@@ -1172,45 +1172,15 @@ bool PGMonitor::check_sub(Subscription *sub)
   return true;
 }
 
-class PGMonStatService : public MonPGStatService {
-  const PGMap& pgmap;
+class PGMonStatService : public MonPGStatService, public PGMapStatService {
   PGMonitor *pgmon;
 public:
   PGMonStatService(const PGMap& o, PGMonitor *pgm)
-    : pgmap(o),
-      pgmon(pgm) {}
+    : MonPGStatService(), PGMapStatService(o), pgmon(pgm) {}
+       
 
   bool is_readable() const override { return pgmon->is_readable(); }
 
-  const pool_stat_t* get_pool_stat(int poolid) const override {
-    auto i = pgmap.pg_pool_sum.find(poolid);
-    if (i != pgmap.pg_pool_sum.end()) {
-      return &i->second;
-    }
-    return nullptr;
-  }
-
-  const osd_stat_t& get_osd_sum() const override { return pgmap.osd_sum; }
-
-  const osd_stat_t *get_osd_stat(int osd) const override {
-    auto i = pgmap.osd_stat.find(osd);
-    if (i == pgmap.osd_stat.end()) {
-      return nullptr;
-    }
-    return &i->second;
-  }
-  const mempool::pgmap::unordered_map<int32_t,osd_stat_t>& get_osd_stat() const override {
-    return pgmap.osd_stat;
-  }
-  float get_full_ratio() const override { return pgmap.full_ratio; }
-  float get_nearfull_ratio() const override { return pgmap.nearfull_ratio; }
-
-  bool have_creating_pgs() const override {
-    return !pgmap.creating_pgs.empty();
-  }
-  bool is_creating_pg(pg_t pgid) const override {
-    return pgmap.creating_pgs.count(pgid);
-  }
   unsigned maybe_add_creating_pgs(epoch_t scan_epoch,
      const mempool::osdmap::map<int64_t,pg_pool_t>& pools,
      creating_pgs_t *pending_creates) const override
@@ -1247,45 +1217,11 @@ public:
       }
     }
   }
-
-  epoch_t get_min_last_epoch_clean() const override {
-    return pgmap.get_min_last_epoch_clean();
-  }
-
-  bool have_full_osds() const override { return !pgmap.full_osds.empty(); }
-  bool have_nearfull_osds() const override {
-    return !pgmap.nearfull_osds.empty();
-  }
-
-  size_t get_num_pg_by_osd(int osd) const override {
-    return pgmap.get_num_pg_by_osd(osd);
-  }
-  ceph_statfs get_statfs() const override {
-    ceph_statfs statfs;
-    statfs.kb = pgmap.osd_sum.kb;
-    statfs.kb_used = pgmap.osd_sum.kb_used;
-    statfs.kb_avail = pgmap.osd_sum.kb_avail;
-    statfs.num_objects = pgmap.pg_sum.stats.sum.num_objects;
-    return statfs;
-  }
-  void print_summary(Formatter *f, ostream *out) const override {
-    pgmap.print_summary(f, out);
-  }
   void dump_info(Formatter *f) const override {
     f->dump_object("pgmap", pgmap);
     f->dump_unsigned("pgmap_first_committed", pgmon->get_first_committed());
     f->dump_unsigned("pgmap_last_committed", pgmon->get_last_committed());
   }
-  void dump_fs_stats(stringstream *ss,
-                    Formatter *f,
-                    bool verbose) const override {
-    pgmap.dump_fs_stats(ss, f, verbose);
-  }
-  void dump_pool_stats(const OSDMap& osdm, stringstream *ss, Formatter *f,
-                      bool verbose) const override {
-    pgmap.dump_pool_stats_full(osdm, ss, f, verbose);
-  }
-
   int process_pg_command(const string& prefix,
                         const map<string,cmd_vartype>& cmdmap,
                         const OSDMap& osdmap,
index 4fe3b11870957e4ad9f9f1876ac3580d6e2f86cb..7c8cb004bfa151925c689ecac65e8f91c74620f3 100644 (file)
@@ -91,7 +91,7 @@ public:
 
 };
 
-class MonPGStatService : public PGStatService {
+class MonPGStatService : virtual public PGStatService {
 public:
   MonPGStatService() : PGStatService() {}
   virtual ~MonPGStatService() {}