From: Sage Weil Date: Tue, 5 Jun 2018 19:21:31 +0000 (-0500) Subject: mgr: move dump/print to DeviceState X-Git-Tag: v14.0.1~1131^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=46ab713e1f237d8b4c41b0731a14a98e0c11f771;p=ceph.git mgr: move dump/print to DeviceState Signed-off-by: Sage Weil --- diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 05c30aff3083..43d6efd866e1 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -1733,32 +1733,9 @@ bool DaemonServer::handle_command(MCommand *m) if (!daemon_state.with_device(devid, [&f, &rs] (const DeviceState& dev) { if (f) { - f->open_object_section("device"); - f->dump_string("devid", dev.devid); - f->dump_string("host", dev.server); - f->open_array_section("daemons"); - for (auto& i : dev.daemons) { - f->dump_string("daemon", to_string(i)); - } - f->close_section(); - if (dev.expected_failure != utime_t()) { - f->dump_stream("expected_failure") << dev.expected_failure; - f->dump_stream("expected_failure_stamp") - << dev.expected_failure_stamp; - } - f->close_section(); + f->dump_object("device", dev); } else { - rs << "device " << dev.devid << "\n"; - rs << "host " << dev.server << "\n"; - set d; - for (auto& j : dev.daemons) { - d.insert(to_string(j)); - } - rs << "daemons " << d << "\n"; - if (dev.expected_failure != utime_t()) { - rs << "expected_failure " << dev.expected_failure - << " (as of " << dev.expected_failure_stamp << ")\n"; - } + dev.print(rs); } })) { ss << "device " << devid << " not found"; diff --git a/src/mgr/DaemonState.cc b/src/mgr/DaemonState.cc index 60eefb7dfe70..8b7d39a76535 100644 --- a/src/mgr/DaemonState.cc +++ b/src/mgr/DaemonState.cc @@ -15,6 +15,7 @@ #include "MgrSession.h" #include "include/stringify.h" +#include "common/Formatter.h" #define dout_context g_ceph_context #define dout_subsys ceph_subsys_mgr @@ -50,6 +51,37 @@ void DeviceState::rm_expected_failure() metadata.erase("expected_failure_stamp"); } +void DeviceState::dump(Formatter *f) const +{ + f->dump_string("devid", devid); + f->dump_string("host", server); + f->open_array_section("daemons"); + for (auto& i : daemons) { + f->dump_string("daemon", to_string(i)); + } + f->close_section(); + if (expected_failure != utime_t()) { + f->dump_stream("expected_failure") << expected_failure; + f->dump_stream("expected_failure_stamp") + << expected_failure_stamp; + } +} + +void DeviceState::print(ostream& out) const +{ + out << "device " << devid << "\n"; + out << "host " << server << "\n"; + set d; + for (auto& j : daemons) { + d.insert(to_string(j)); + } + out << "daemons " << d << "\n"; + if (expected_failure != utime_t()) { + out << "expected_failure " << expected_failure + << " (as of " << expected_failure_stamp << ")\n"; + } +} + void DaemonStateIndex::insert(DaemonStatePtr dm) { RWLock::WLocker l(lock); diff --git a/src/mgr/DaemonState.h b/src/mgr/DaemonState.h index 27190b959413..81d8cb49ab4c 100644 --- a/src/mgr/DaemonState.h +++ b/src/mgr/DaemonState.h @@ -28,6 +28,9 @@ // For PerfCounterType #include "messages/MMgrReport.h" +namespace ceph { + class Formatter; +} // Unique reference to a daemon within a cluster typedef std::pair DaemonKey; @@ -207,6 +210,9 @@ struct DeviceState : public RefCountedObject bool empty() const { return daemons.empty() && metadata.empty(); } + + void dump(Formatter *f) const; + void print(ostream& out) const; }; typedef boost::intrusive_ptr DeviceStateRef;