"name=autoscale_mode,type=CephChoices,strings=on|off|warn,req=false "
"name=bulk,type=CephBool,req=false "
"name=target_size_bytes,type=CephInt,range=0,req=false "
- "name=target_size_ratio,type=CephFloat,range=0|1,req=false",\
+ "name=target_size_ratio,type=CephFloat,range=0|1,req=false "\
+ "name=yes_i_really_mean_it,type=CephBool,req=false",
"create pool", "osd", "rw")
COMMAND_WITH_FLAG("osd pool delete "
"name=pool,type=CephPoolname "
"osd", "rw")
COMMAND("osd pool rename "
"name=srcpool,type=CephPoolname "
- "name=destpool,type=CephPoolname",
+ "name=destpool,type=CephPoolname "
+ "name=yes_i_really_mean_it,type=CephBool,req=false",
"rename <srcpool> to <destpool>", "osd", "rw")
COMMAND("osd pool get "
"name=pool,type=CephPoolname "
string poolstr;
cmd_getval(cmdmap, "pool", poolstr);
+ bool confirm = false;
+ //confirmation may be set to true only by internal operations.
+ cmd_getval(cmdmap, "yes_i_really_mean_it", confirm);
+ if (poolstr[0] == '.' && !confirm) {
+ ss << "pool names beginning with . are not allowed";
+ err = 0;
+ goto reply;
+ }
int64_t pool_id = osdmap.lookup_pg_pool_name(poolstr);
if (pool_id >= 0) {
const pg_pool_t *p = osdmap.get_pg_pool(pool_id);
cmd_getval(cmdmap, "destpool", destpoolstr);
int64_t pool_src = osdmap.lookup_pg_pool_name(srcpoolstr.c_str());
int64_t pool_dst = osdmap.lookup_pg_pool_name(destpoolstr.c_str());
-
+ bool confirm = false;
+ //confirmation may be set to true only by internal operations.
+ cmd_getval(cmdmap, "yes_i_really_mean_it", confirm);
+ if (destpoolstr[0] == '.' && !confirm) {
+ ss << "pool names beginning with . are not allowed";
+ err = 0;
+ goto reply;
+ }
if (pool_src < 0) {
if (pool_dst >= 0) {
// src pool doesn't exist, dst pool does exist: to ensure idempotency
'format': 'json',
'srcpool': srcpool,
'destpool': destpool,
+ 'yes_i_really_mean_it': True
}
self.check_mon_command(c)
'pg_num': 1,
'pg_num_min': 1,
'pg_num_max': 32,
+ 'yes_i_really_mean_it': True
}
self.check_mon_command(c)
def create_ganesha_pool(mgr: 'MgrModule') -> None:
pool_list = [p['pool_name'] for p in mgr.get_osdmap().dump().get('pools', [])]
if POOL_NAME not in pool_list:
- mgr.check_mon_command({'prefix': 'osd pool create', 'pool': POOL_NAME})
+ mgr.check_mon_command({'prefix': 'osd pool create',
+ 'pool': POOL_NAME,
+ 'yes_i_really_mean_it': True})
mgr.check_mon_command({'prefix': 'osd pool application enable',
'pool': POOL_NAME,
'app': 'nfs'})