This is a simple safety check. Since we default to true it is currently
opt-in.
Backport: giant, firefly
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit
6b982e4cc00f9f201d7fbffa0282f8f3295f2309)
Conflicts:
src/test/mon/osd-pool-create.sh
Changed $CEPH_MON to 127.0.0.1 -- the CEPH_MON was introduced after
firefly to allow tests to run in parallel. Back in firefly all tests
use the same port because 127.0.0.1 was hardcoded. We can't
conveniently backport all that's necessary for tests to run in
parallel, therefore we keep the 127.0.0.1 hardcoded.
Conflicts:
src/test/mon/osd-pool-create.sh
TEST_no_pool_delete() follows a different test than in master
OPTION(mon_cache_target_full_warn_ratio, OPT_FLOAT, .66) // position between pool cache_target_full and max where we start warning
OPTION(mon_osd_full_ratio, OPT_FLOAT, .95) // what % full makes an OSD "full"
OPTION(mon_osd_nearfull_ratio, OPT_FLOAT, .85) // what % full makes an OSD near full
+OPTION(mon_allow_pool_delete, OPT_BOOL, true) // allow pool deletion
OPTION(mon_globalid_prealloc, OPT_INT, 100) // how many globalids to prealloc
OPTION(mon_osd_report_timeout, OPT_INT, 900) // grace period before declaring unresponsive OSDs dead
OPTION(mon_force_standby_active, OPT_BOOL, true) // should mons force standby-replay mds to be active
}
return -EBUSY;
}
+
+ if (!g_conf->mon_allow_pool_delete) {
+ *ss << "pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool";
+ return -EPERM;
+ }
+
*ss << "pool '" << poolstr << "' removed";
return 0;
}
#
source test/mon/mon-test-helpers.sh
+function expect_false()
+{
+ set -x
+ if "$@"; then return 1; else return 0; fi
+}
+
function run() {
local dir=$1
./ceph osd pool delete 黄 黄 --yes-i-really-really-mean-it
}
+function TEST_no_pool_delete() {
+ local dir=$1
+ run_mon $dir a --public-addr 127.0.0.1
+ ./ceph osd pool create foo 1
+ ./ceph tell mon.a injectargs -- --no-mon-allow-pool-delete
+ expect_false ./ceph osd pool delete foo foo --yes-i-really-really-mean-it
+ ./ceph tell mon.a injectargs -- --mon-allow-pool-delete
+ ./ceph osd pool delete foo foo --yes-i-really-really-mean-it
+}
+
main osd-pool-create
# Local Variables: