summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-10-03 21:15:36 -0700
committerSage Weil <sage@inktank.com>2013-10-03 21:15:36 -0700
commitbae4c9573ac1d713af5caf74da4df303c43fd2d2 (patch)
tree7af4fc0bec6857a7fe0d9a07b70c6b8e271f830f
parentfea1e0e56cbd3d82a173b50532ff51b8bcee9359 (diff)
downloadceph-wip-pool.tar.gz
mon: make 'mon {add,remove}_data_pool ...' take pool name or idwip-pool
Take either a pool name or an id. Fix up the tests accordingly. Signed-off-by: Sage Weil <sage@inktank.com>
-rwxr-xr-xqa/workunits/cephtool/test.sh2
-rwxr-xr-xqa/workunits/misc/mkpool_layout_vxattrs.sh8
-rw-r--r--src/mon/MDSMonitor.cc53
-rw-r--r--src/mon/MonCommands.h8
4 files changed, 52 insertions, 19 deletions
diff --git a/qa/workunits/cephtool/test.sh b/qa/workunits/cephtool/test.sh
index 09e55b9a842..338bde5700c 100755
--- a/qa/workunits/cephtool/test.sh
+++ b/qa/workunits/cephtool/test.sh
@@ -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
diff --git a/qa/workunits/misc/mkpool_layout_vxattrs.sh b/qa/workunits/misc/mkpool_layout_vxattrs.sh
index 16b3cdfe517..91d31664898 100755
--- a/qa/workunits/misc/mkpool_layout_vxattrs.sh
+++ b/qa/workunits/misc/mkpool_layout_vxattrs.sh
@@ -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
diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc
index 48c1c99d584..9c561d8dce8 100644
--- a/src/mon/MDSMonitor.cc
+++ b/src/mon/MDSMonitor.cc
@@ -952,20 +952,49 @@ 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;
-
+ if (!cmd_getval(g_ceph_context, cmdmap, "poolid", poolid)) {
+ string poolname;
+ cmd_getval(g_ceph_context, cmdmap, "pool", poolname);
+ 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;
+ }
} 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)
- r = 0;
- if (r == 0)
- ss << "removed data pool " << poolid << " from mdsmap";
-
+ if (!cmd_getval(g_ceph_context, cmdmap, "poolid", poolid)) {
+ string poolname;
+ cmd_getval(g_ceph_context, cmdmap, "pool", poolname);
+ 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;
diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h
index 33e00a98d30..a961574179c 100644
--- a/src/mon/MonCommands.h
+++ b/src/mon/MonCommands.h
@@ -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 " \