From 7383a3a4b5d717aecb07ebc64d2df65d8b18ae02 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Fri, 9 Jun 2017 17:42:46 -0700 Subject: [PATCH] mon: inherit PGMonStatService from the PGMapStatService Adventures in multiple inheritance! Signed-off-by: Greg Farnum --- src/mon/PGMap.h | 3 +- src/mon/PGMonitor.cc | 70 ++--------------------------------------- src/mon/PGStatService.h | 2 +- 3 files changed, 6 insertions(+), 69 deletions(-) diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index 0bf8445b9b0..805930ea1f4 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -581,7 +581,8 @@ namespace reweight { } -class PGMapStatService : public PGStatService { +class PGMapStatService : virtual public PGStatService { +protected: const PGMap& pgmap; public: PGMapStatService(const PGMap& o) diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 2d35fe6e8ce..7fdb5bd6357 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -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& 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& 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& cmdmap, const OSDMap& osdmap, diff --git a/src/mon/PGStatService.h b/src/mon/PGStatService.h index 4fe3b118709..7c8cb004bfa 100644 --- a/src/mon/PGStatService.h +++ b/src/mon/PGStatService.h @@ -91,7 +91,7 @@ public: }; -class MonPGStatService : public PGStatService { +class MonPGStatService : virtual public PGStatService { public: MonPGStatService() : PGStatService() {} virtual ~MonPGStatService() {} -- 2.39.5