#include "mgr/ServiceMap.h"
+#include <fmt/format.h>
+
#include "common/Formatter.h"
using ceph::bufferlist;
std::string ServiceMap::Service::get_summary() const
{
- if (summary.size()) {
+ if (!summary.empty()) {
return summary;
}
if (daemons.empty()) {
// {"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;
+ for (const auto& [service_id, daemon] : daemons) {
+ for (const auto& [task_name, status] : daemon.task_status) {
+ by_task[task_name].emplace(fmt::format("{}.{}", task_prefix, service_id),
+ status);
}
}
-
std::stringstream ss;
- for (const auto &p : by_task) {
- ss << "\n " << p.first << ":";
- for (auto q : p.second) {
- ss << "\n " << q.first << ": " << q.second;
+ for (const auto &[task_name, status_by_service] : by_task) {
+ ss << "\n " << task_name << ":";
+ for (auto& [service, status] : status_by_service) {
+ ss << "\n " << service << ": " << status;
}
}
-
return ss.str();
}