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
grep 'cannot change to type erasure' || return 1
}
+function TEST_no_pool_delete() {
+ local dir=$1
+ run_mon $dir a --public-addr $CEPH_MON
+ ./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