From: Kefu Chai Date: Thu, 16 Jul 2020 11:09:18 +0000 (+0800) Subject: mgr/ServiceMap: move ServiceMap::Daemon implementation into .cc file X-Git-Tag: wip-pdonnell-testing-20200918.022351~629^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=310e33cf9a6ce7987d82566dba9ebc6b97c18a19;p=ceph-ci.git mgr/ServiceMap: move ServiceMap::Daemon implementation into .cc file Signed-off-by: Kefu Chai --- diff --git a/src/mgr/ServiceMap.cc b/src/mgr/ServiceMap.cc index 2a29e0ed900..f2abcfb9ab8 100644 --- a/src/mgr/ServiceMap.cc +++ b/src/mgr/ServiceMap.cc @@ -65,6 +65,73 @@ void ServiceMap::Daemon::generate_test_instances(std::list& 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> 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{}).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 *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); diff --git a/src/mgr/ServiceMap.h b/src/mgr/ServiceMap.h index 169038f3044..e91ce94ad15 100644 --- a/src/mgr/ServiceMap.h +++ b/src/mgr/ServiceMap.h @@ -40,70 +40,10 @@ struct ServiceMap { void dump(ceph::Formatter *f) const; static void generate_test_instances(std::list& 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> 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{}).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 *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 *out) const; }; epoch_t epoch = 0;