]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: make 'mon {add,remove}_data_pool ...' take pool name or id 687/head
authorSage Weil <sage@inktank.com>
Mon, 14 Oct 2013 23:46:58 +0000 (16:46 -0700)
committerSage Weil <sage@inktank.com>
Mon, 14 Oct 2013 23:46:58 +0000 (16:46 -0700)
Take either a pool name or an id.  Fix up the tests accordingly.

Signed-off-by: Sage Weil <sage@inktank.com>
qa/workunits/cephtool/test.sh
qa/workunits/misc/mkpool_layout_vxattrs.sh
src/mon/MDSMonitor.cc
src/mon/MonCommands.h

index 09e55b9a8427437c516c5db39b43d90fae0d1316..338bde5700cb0aeb6576f5be2a25011b857cd6fc 100755 (executable)
@@ -147,7 +147,9 @@ ceph mds newfs 0 1 --yes-i-really-mean-it
 ceph osd pool create data2 10
 poolnum=$(ceph osd dump | grep 'pool.*data2' | awk '{print $2;}')
 ceph mds add_data_pool $poolnum
+ceph mds add_data_pool rbd
 ceph mds remove_data_pool $poolnum
+ceph mds remove_data_pool rbd
 ceph osd pool delete data2 data2 --yes-i-really-really-mean-it
 ceph mds set_max_mds 4
 ceph mds set_max_mds 3
index 16b3cdfe51726e05eb6ce9f8f4505b4423e3c81f..91d316648988a8b738cbc8201beb75564d11a6e1 100755 (executable)
@@ -4,10 +4,12 @@ set -e
 
 touch foo.$$
 rados mkpool foo.$$
-poolid=$(ceph osd dump | grep "^pool" | awk '{print $2}' | tail -n 1)
-ceph mds add_data_pool ${poolid}
+ceph mds add_data_pool foo.$$
 setfattr -n ceph.file.layout.pool -v foo.$$ foo.$$
 
 # cleanup
-rados rmpool foo.$$ foo.$$ --yes-i-really-really-mean-it 
 rm foo.$$
+ceph mds remove_data_pool foo.$$
+rados rmpool foo.$$ foo.$$ --yes-i-really-really-mean-it
+
+echo OK
index 48c1c99d5847ec6352a94bdc4fc6bf266beb52bd..b865c379d1a071e02ae08de531e98319dd2fcc8e 100644 (file)
@@ -951,21 +951,44 @@ bool MDSMonitor::prepare_command(MMonCommand *m)
       }
     }
   } else if (prefix == "mds add_data_pool") {
-    int64_t poolid;
-    cmd_getval(g_ceph_context, cmdmap, "poolid", poolid);
-    pending_mdsmap.add_data_pool(poolid);
-    ss << "added data pool " << poolid << " to mdsmap";
-    r = 0;
-
-  } else if (prefix == "mds remove_data_pool") {
-    int64_t poolid;
-    cmd_getval(g_ceph_context, cmdmap, "poolid", poolid);
-    r = pending_mdsmap.remove_data_pool(poolid);
-    if (r == -ENOENT)
+    string poolname;
+    cmd_getval(g_ceph_context, cmdmap, "pool", poolname);
+    int64_t poolid = mon->osdmon()->osdmap.lookup_pg_pool_name(poolname);
+    if (poolid < 0) {
+      string err;
+      poolid = strict_strtol(poolname.c_str(), 10, &err);
+      if (err.length()) {
+       r = -ENOENT;
+       poolid = -1;
+       ss << "pool '" << poolname << "' does not exist";
+      }
+    }
+    if (poolid >= 0) {
+      pending_mdsmap.add_data_pool(poolid);
+      ss << "added data pool " << poolid << " to mdsmap";
       r = 0;
-    if (r == 0)
-      ss << "removed data pool " << poolid << " from mdsmap";
-
+    }
+  } else if (prefix == "mds remove_data_pool") {
+    string poolname;
+    cmd_getval(g_ceph_context, cmdmap, "pool", poolname);
+    int64_t poolid = mon->osdmon()->osdmap.lookup_pg_pool_name(poolname);
+    if (poolid < 0) {
+      string err;
+      poolid = strict_strtol(poolname.c_str(), 10, &err);
+      if (err.length()) {
+       r = -ENOENT;
+       poolid = -1;
+       ss << "pool '" << poolname << "' does not exist";
+      }
+    }
+    if (poolid >= 0) {
+      cmd_getval(g_ceph_context, cmdmap, "poolid", poolid);
+      r = pending_mdsmap.remove_data_pool(poolid);
+      if (r == -ENOENT)
+       r = 0;
+      if (r == 0)
+       ss << "removed data pool " << poolid << " from mdsmap";
+    }
   } else if (prefix == "mds newfs") {
     MDSMap newmap;
     int64_t metadata, data;
index 33e00a98d30373cad98ab9392ea0543418af73f2..a961574179c8fa8a1a07454c9618d1bfdcefa46b 100644 (file)
@@ -284,11 +284,11 @@ COMMAND("mds unset " \
         "name=sure,type=CephString,req=false", \
         "unset <key>", "mds", "w", "cli,rest")
 COMMAND("mds add_data_pool " \
-       "name=poolid,type=CephInt,range=0", \
-       "add data pool <poolid>", "mds", "rw", "cli,rest")
+       "name=pool,type=CephString", \
+       "add data pool <pool>", "mds", "rw", "cli,rest")
 COMMAND("mds remove_data_pool " \
-       "name=poolid,type=CephInt,range=0", \
-       "remove data pool <poolid>", "mds", "rw", "cli,rest")
+       "name=pool,type=CephString", \
+       "remove data pool <pool>", "mds", "rw", "cli,rest")
 COMMAND("mds newfs " \
        "name=metadata,type=CephInt,range=0 " \
        "name=data,type=CephInt,range=0 " \