From: David Zafman Date: Fri, 11 Sep 2020 21:46:55 +0000 (+0000) Subject: mon: Add osd version collector X-Git-Tag: v16.1.0~634^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4b8b26d640f27ad6459e728c450fe0dd10dc9522;p=ceph.git mon: Add osd version collector Signed-off-by: David Zafman --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 7e1d30628d3..170e2b6a9b8 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -5363,6 +5363,8 @@ void Monitor::get_all_versions(std::map > &versions) { // mon get_versions(versions); + // osd + osdmon()->get_versions(versions); dout(20) << __func__ << " all versions=" << versions << dendl; } diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index e154ed72e00..89f4a43c3a4 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2133,6 +2133,19 @@ void OSDMonitor::count_metadata(const string& field, Formatter *f) f->close_section(); } +void OSDMonitor::get_versions(std::map > &versions) +{ + for (int osd = 0; osd < osdmap.get_max_osd(); ++osd) { + if (osdmap.is_up(osd)) { + map meta; + load_metadata(osd, meta, nullptr); + auto p = meta.find("ceph_version_short"); + if (p == meta.end()) continue; + versions[p->second].push_back(string("osd.") + stringify(osd)); + } + } +} + int OSDMonitor::get_osd_objectstore_type(int osd, string *type) { map metadata; diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index 1caa64676f0..02f0fa36cce 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -634,6 +634,7 @@ private: void reencode_full_map(ceph::buffer::list& bl, uint64_t features); public: void count_metadata(const std::string& field, std::map *out); + void get_versions(std::map > &versions); protected: int get_osd_objectstore_type(int osd, std::string *type); bool is_pool_currently_all_bluestore(int64_t pool_id, const pg_pool_t &pool,