]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: add 'osd pool ls [detail]' command 2452/head
authorSage Weil <sage@redhat.com>
Wed, 10 Sep 2014 15:07:53 +0000 (08:07 -0700)
committerSage Weil <sage@redhat.com>
Wed, 10 Sep 2014 15:07:53 +0000 (08:07 -0700)
This is much friendlier than

 ceph osd dump | grep ^pool

Signed-off-by: Sage Weil <sage@redhat.com>
qa/workunits/cephtool/test.sh
src/mon/MonCommands.h
src/mon/OSDMonitor.cc
src/osd/OSDMap.cc
src/osd/OSDMap.h

index 97b2b3d3c4ebdeac826a1120d448415d8d94b003..1c81b8f7481117efb473d45996aef216a3c3f49b 100755 (executable)
@@ -185,6 +185,11 @@ function test_tiering()
   ceph osd tier add slow cache2 --force-nonempty
   ceph osd tier remove slow cache2
 
+  ceph osd pool ls | grep cache2
+  ceph osd pool ls -f json-pretty | grep cache2
+  ceph osd pool ls detail | grep cache2
+  ceph osd pool ls detail -f json-pretty | grep cache2
+
   ceph osd pool delete cache cache --yes-i-really-really-mean-it
   ceph osd pool delete cache2 cache2 --yes-i-really-really-mean-it
 
@@ -193,7 +198,9 @@ function test_tiering()
   ceph osd tier add-cache slow cache3 1024000
   ceph osd dump | grep cache3 | grep bloom | grep 'false_positive_probability: 0.05' | grep 'target_bytes 1024000' | grep '1200s x4'
   ceph osd tier remove slow cache3
+  ceph osd pool ls | grep cache3
   ceph osd pool delete cache3 cache3 --yes-i-really-really-mean-it
+  expect_false ceph osd pool ls | grep cache3
 
   ceph osd pool delete slow2 slow2 --yes-i-really-really-mean-it
   ceph osd pool delete slow slow --yes-i-really-really-mean-it
index d7026150bd56ee534c66d37b20f85ad4c1ef39f5..3436fdc811849b6643963362c29e9d5fa3b1d2ef 100644 (file)
@@ -554,6 +554,9 @@ COMMAND("osd pool rmsnap " \
        "name=pool,type=CephPoolname " \
        "name=snap,type=CephString", \
        "remove snapshot <snap> from <pool>", "osd", "rw", "cli,rest")
+COMMAND("osd pool ls " \
+       "name=detail,type=CephChoices,strings=detail,req=false", \
+       "list pools", "osd", "r", "cli,rest")
 COMMAND("osd pool create " \
        "name=pool,type=CephPoolname " \
        "name=pg_num,type=CephInt,range=0 " \
index 25a5bc7fc05cf612a65a395014d572bb8e309ec0..6c2255fdfa1ab97f8fd47b5d27fbeb8984ce9b98 100644 (file)
@@ -2568,6 +2568,37 @@ bool OSDMonitor::preprocess_command(MMonCommand *m)
     }
     ss << "listed " << osdmap.blacklist.size() << " entries";
 
+  } else if (prefix == "osd pool ls") {
+    string detail;
+    cmd_getval(g_ceph_context, cmdmap, "detail", detail);
+    if (!f && detail == "detail") {
+      ostringstream ss;
+      osdmap.print_pools(ss);
+      rdata.append(ss.str());
+    } else {
+      if (f)
+       f->open_array_section("pools");
+      for (map<int64_t,pg_pool_t>::const_iterator it = osdmap.get_pools().begin();
+          it != osdmap.get_pools().end();
+          ++it) {
+       if (f) {
+         if (detail == "detail") {
+           f->open_object_section("pool");
+           f->dump_string("pool_name", osdmap.get_pool_name(it->first));
+           it->second.dump(f.get());
+           f->close_section();
+         } else {
+           f->dump_string("pool_name", osdmap.get_pool_name(it->first));
+         }
+       } else {
+         rdata.append(osdmap.get_pool_name(it->first) + "\n");
+       }
+      }
+      if (f) {
+       f->close_section();
+       f->flush(rdata);
+      }
+    }
   } else if (prefix == "osd pool get") {
     string poolstr;
     cmd_getval(g_ceph_context, cmdmap, "pool", poolstr);
index fb55a8150d9dc56f426378c06cea1c45389d777e..a8bfdfcac63ff23f31b29587d6441c8248ddf1b6 100644 (file)
@@ -2237,18 +2237,8 @@ struct qi {
   qi(int i, int d, float w) : item(i), depth(d), weight(w) {}
 };
 
-void OSDMap::print(ostream& out) const
+void OSDMap::print_pools(ostream& out) const
 {
-  out << "epoch " << get_epoch() << "\n"
-      << "fsid " << get_fsid() << "\n"
-      << "created " << get_created() << "\n"
-      << "modified " << get_modified() << "\n";
-
-  out << "flags " << get_flag_string() << "\n";
-  if (get_cluster_snapshot().length())
-    out << "cluster_snapshot " << get_cluster_snapshot() << "\n";
-  out << "\n";
-
   for (map<int64_t,pg_pool_t>::const_iterator p = pools.begin(); p != pools.end(); ++p) {
     std::string name("<unknown>");
     map<int64_t,string>::const_iterator pni = pool_name.find(p->first);
@@ -2265,6 +2255,21 @@ void OSDMap::print(ostream& out) const
       out << "\tremoved_snaps " << p->second.removed_snaps << "\n";
   }
   out << std::endl;
+}
+
+void OSDMap::print(ostream& out) const
+{
+  out << "epoch " << get_epoch() << "\n"
+      << "fsid " << get_fsid() << "\n"
+      << "created " << get_created() << "\n"
+      << "modified " << get_modified() << "\n";
+
+  out << "flags " << get_flag_string() << "\n";
+  if (get_cluster_snapshot().length())
+    out << "cluster_snapshot " << get_cluster_snapshot() << "\n";
+  out << "\n";
+
+  print_pools(out);
 
   out << "max_osd " << get_max_osd() << "\n";
   for (int i=0; i<get_max_osd(); i++) {
index aafadb6b6c0e0eddfaa5d8f2556829342298e3e5..7a46b256a96d0d3fcccd4c693a792a04d6cef714 100644 (file)
@@ -810,6 +810,7 @@ private:
   void print_osd_line(int cur, ostream *out, Formatter *f) const;
 public:
   void print(ostream& out) const;
+  void print_pools(ostream& out) const;
   void print_summary(Formatter *f, ostream& out) const;
   void print_oneline_summary(ostream& out) const;
   void print_tree(ostream *out, Formatter *f) const;