diff options
author | Sage Weil <sage@inktank.com> | 2012-12-18 19:11:49 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-12-18 19:11:49 -0800 |
commit | b00eb6fd872a0d0decac9ca3bf9c122b7ee0fec2 (patch) | |
tree | 2083581ef1296b77a4311fda42ea2fcf40a9cf99 | |
parent | 0dd1302543422e2bac65d634ed2f1f4260dcae79 (diff) | |
download | ceph-b00eb6fd872a0d0decac9ca3bf9c122b7ee0fec2.tar.gz |
mon: 'ceph osd ls'
List osd ids that exist.
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/mon/OSDMonitor.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 5c8b08e43a2..e75ac1ad916 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -1678,6 +1678,7 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) } else if (m->cmd[1] == "dump" || m->cmd[1] == "tree" || + m->cmd[1] == "ls" || m->cmd[1] == "getmap" || m->cmd[1] == "getcrushmap") { string format = "plain"; @@ -1729,6 +1730,37 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) rdata.append(ds); ss << "dumped osdmap epoch " << p->get_epoch(); } + } else if (cmd == "ls") { + stringstream ds; + if (format == "json") { + JSONFormatter jf(true); + jf.open_array_section("osds"); + for (int i = 0; i < osdmap.get_max_osd(); i++) { + if (osdmap.exists(i)) { + jf.dump_int("osd", i); + } + } + jf.close_section(); + jf.flush(ds); + r = 0; + } else if (format == "plain") { + bool first = true; + for (int i = 0; i < osdmap.get_max_osd(); i++) { + if (osdmap.exists(i)) { + if (!first) + ds << "\n"; + first = false; + ds << i; + } + } + r = 0; + } else { + ss << "unrecognized format '" << format << "'"; + r = -EINVAL; + } + if (r == 0) { + rdata.append(ds); + } } else if (cmd == "tree") { stringstream ds; if (format == "json") { |