summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2012-12-18 19:11:49 -0800
committerSage Weil <sage@inktank.com>2012-12-18 19:11:49 -0800
commitb00eb6fd872a0d0decac9ca3bf9c122b7ee0fec2 (patch)
tree2083581ef1296b77a4311fda42ea2fcf40a9cf99
parent0dd1302543422e2bac65d634ed2f1f4260dcae79 (diff)
downloadceph-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.cc32
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") {