]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: Add mgr version collector
authorDavid Zafman <dzafman@redhat.com>
Thu, 27 Aug 2020 05:10:06 +0000 (05:10 +0000)
committerDavid Zafman <dzafman@redhat.com>
Wed, 11 Nov 2020 23:10:11 +0000 (15:10 -0800)
Signed-off-by: David Zafman <dzafman@redhat.com>
src/mon/MgrMonitor.cc
src/mon/MgrMonitor.h
src/mon/Monitor.cc

index b75114734124cf3afa4571562b2e1e89f38d07b8..cd5d6305e0eb4492df63492c986d5387b2225f72 100644 (file)
@@ -1290,6 +1290,18 @@ void MgrMonitor::count_metadata(const string& field, Formatter *f)
   f->close_section();
 }
 
+void MgrMonitor::get_versions(std::map<string, list<string> > &versions)
+{
+  std::set<string> ls = map.get_all_names();
+  for (auto& name : ls) {
+    std::map<string,string> meta;
+    load_metadata(name, meta, nullptr);
+    auto p = meta.find("ceph_version_short");
+    if (p == meta.end()) continue;
+    versions[p->second].push_back(string("mgr.") + name);
+  }
+}
+
 int MgrMonitor::dump_metadata(const string& name, Formatter *f, ostream *err)
 {
   std::map<string,string> m;
index d29a0d090a1be91b7212d7f3caccc9591f14f9df..dabd9386e25f90e6538eea1ac57816b99938d060 100644 (file)
@@ -129,6 +129,7 @@ public:
   void print_nodes(ceph::Formatter *f) const;
   void count_metadata(const std::string& field, ceph::Formatter *f);
   void count_metadata(const std::string& field, std::map<std::string,int> *out);
+  void get_versions(std::map<string, list<string> > &versions);
 
   // When did the mon last call into our tick() method?  Used for detecting
   // when the mon was not updating us for some period (e.g. during slow
index 170e2b6a9b8f636f499f60ad037500b3b455244f..8a4273ad3578ce2e2b79b53bfd9c518c22a3cc70 100644 (file)
@@ -5365,6 +5365,8 @@ void Monitor::get_all_versions(std::map<string, list<string> > &versions)
   get_versions(versions);
   // osd
   osdmon()->get_versions(versions);
+  // mgr
+  mgrmon()->get_versions(versions);
   dout(20) << __func__ << " all versions=" << versions << dendl;
 }