]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/ServiceMap: move ServiceMap::Daemon implementation into .cc file
authorKefu Chai <kchai@redhat.com>
Thu, 16 Jul 2020 11:09:18 +0000 (19:09 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 16 Jul 2020 11:41:59 +0000 (19:41 +0800)
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/mgr/ServiceMap.cc
src/mgr/ServiceMap.h

index 2a29e0ed900ae656de057dda2fdc7a83c7965097..f2abcfb9ab8eaf56ada550a13a82a6e6a0246547 100644 (file)
@@ -65,6 +65,73 @@ void ServiceMap::Daemon::generate_test_instances(std::list<Daemon*>& ls)
 
 // Service
 
+std::string ServiceMap::Service::get_summary() const
+{
+  if (summary.size()) {
+    return summary;
+  }
+  if (daemons.empty()) {
+    return "no daemons active";
+  }
+  std::ostringstream ss;
+  ss << daemons.size() << (daemons.size() > 1 ? " daemons" : " daemon")
+     << " active";
+
+  if (!daemons.empty()) {
+    ss << " (";
+    for (auto p = daemons.begin(); p != daemons.end(); ++p) {
+      if (p != daemons.begin()) {
+       ss << ", ";
+      }
+      ss << p->first;
+    }
+    ss << ")";
+  }
+
+  return ss.str();
+}
+
+std::string ServiceMap::Service::get_task_summary(const std::string_view task_prefix) const
+{
+  // contruct a map similar to:
+  //     {"service1 status" -> {"service1.0" -> "running"}}
+  //     {"service2 status" -> {"service2.0" -> "idle"},
+  //                           {"service2.1" -> "running"}}
+  std::map<std::string, std::map<std::string, std::string>> by_task;
+  for (const auto &p : daemons) {
+    std::stringstream d;
+    d << task_prefix << "." << p.first;
+    for (const auto &q : p.second.task_status) {
+      auto p1 = by_task.emplace(q.first, std::map<std::string, std::string>{}).first;
+      auto p2 = p1->second.emplace(d.str(), std::string()).first;
+      p2->second = q.second;
+    }
+  }
+
+  std::stringstream ss;
+  for (const auto &p : by_task) {
+    ss << "\n    " << p.first << ":";
+    for (auto q : p.second) {
+      ss << "\n        " << q.first << ": " << q.second;
+    }
+  }
+
+  return ss.str();
+}
+
+void ServiceMap::Service::count_metadata(const std::string& field,
+                                       std::map<std::string,int> *out) const
+{
+  for (auto& p : daemons) {
+    auto q = p.second.metadata.find(field);
+    if (q == p.second.metadata.end()) {
+      (*out)["unknown"]++;
+    } else {
+      (*out)[q->second]++;
+    }
+  }
+}
+
 void ServiceMap::Service::encode(bufferlist& bl, uint64_t features) const
 {
   ENCODE_START(1, 1, bl);
index 169038f3044750927949e9dbd8a4c41d3103de76..e91ce94ad15d21362591f44e94d465a6b75f4e25 100644 (file)
@@ -40,70 +40,10 @@ struct ServiceMap {
     void dump(ceph::Formatter *f) const;
     static void generate_test_instances(std::list<Service*>& ls);
 
-    std::string get_summary() const {
-      if (summary.size()) {
-       return summary;
-      }
-      if (daemons.empty()) {
-       return "no daemons active";
-      }
-      std::ostringstream ss;
-      ss << daemons.size() << (daemons.size() > 1 ? " daemons" : " daemon")
-        << " active";
-
-      if (!daemons.empty()) {
-       ss << " (";
-       for (auto p = daemons.begin(); p != daemons.end(); ++p) {
-         if (p != daemons.begin()) {
-           ss << ", ";
-         }
-         ss << p->first;
-       }
-       ss << ")";
-      }
-
-      return ss.str();
-    }
-
-    std::string get_task_summary(const std::string_view task_prefix) const {
-      // contruct a map similar to:
-      //     {"service1 status" -> {"service1.0" -> "running"}}
-      //     {"service2 status" -> {"service2.0" -> "idle"},
-      //                           {"service2.1" -> "running"}}
-      std::map<std::string, std::map<std::string, std::string>> by_task;
-      for (const auto &p : daemons) {
-        std::stringstream d;
-        d << task_prefix << "." << p.first;
-        for (const auto &q : p.second.task_status) {
-          auto p1 = by_task.emplace(q.first, std::map<std::string, std::string>{}).first;
-          auto p2 = p1->second.emplace(d.str(), std::string()).first;
-          p2->second = q.second;
-        }
-      }
-
-      std::stringstream ss;
-      for (const auto &p : by_task) {
-        ss << "\n    " << p.first << ":";
-        for (auto q : p.second) {
-          ss << "\n        " << q.first << ": " << q.second;
-        }
-      }
-
-      return ss.str();
-    }
-
+    std::string get_summary() const;
+    std::string get_task_summary(const std::string_view task_prefix) const;
     void count_metadata(const std::string& field,
-                       std::map<std::string,int> *out) const {
-      for (auto& p : daemons) {
-       auto q = p.second.metadata.find(field);
-       if (q == p.second.metadata.end()) {
-         (*out)["unknown"]++;
-       } else {
-         (*out)[q->second]++;
-       }
-      }
-    }
-
+                       std::map<std::string,int> *out) const;
   };
 
   epoch_t epoch = 0;