cmdctx->reply(-EINVAL, ss);
return true;
}
- string no_increasing;
+ bool no_increasing = false;
cmd_getval(g_ceph_context, cmdctx->cmdmap, "no_increasing", no_increasing);
string out_str;
mempool::osdmap::map<int32_t, uint32_t> new_weights;
max_osds,
by_pg,
pools.empty() ? NULL : &pools,
- no_increasing == "--no-increasing",
+ no_increasing,
&new_weights,
&ss, &out_str, f.get());
});
if (r && (prefix == "osd destroy" ||
prefix == "osd purge")) {
- string sure;
- if (!cmd_getval(cct, cmdctx->cmdmap, "sure", sure) ||
- (sure != "--force" &&
- sure != "--yes-i-really-mean-it" /* for backward compat */)) {
+ bool force = false;
+ cmd_getval(cct, cmdctx->cmdmap, "force", force);
+ if (!force) {
+ // Backward compat
+ cmd_getval(cct, cmdctx->cmdmap, "yes_i_really_mean_it", force);
+ }
+ if (!force) {
ss << "\nYou can proceed by passing --force, but be warned that this will likely mean real, permanent data loss.";
} else {
r = 0;
"{"
"\"prefix\": \"" + prefix + "-actual\", "
"\"id\": " + stringify(osds) + ", "
- "\"sure\": \"--yes-i-really-mean-it\""
+ "\"yes_i_really_mean_it\": true"
"}";
auto on_finish = new ReplyOnFinish(cmdctx);
monc->start_mon_command({cmd}, {}, nullptr, &on_finish->outs, on_finish);
"name=oload,type=CephInt,req=false " \
"name=max_change,type=CephFloat,req=false " \
"name=max_osds,type=CephInt,req=false " \
- "name=no_increasing,type=CephChoices,strings=--no-increasing,req=false",\
+ "name=no_increasing,type=CephBool,req=false",\
"dry run of reweight OSDs by utilization [overload-percentage-for-consideration, default 120]", \
"osd", "r")
COMMAND("osd reweight-by-pg " \
COMMAND("osd destroy " \
"name=id,type=CephOsdName " \
- "name=sure,type=CephChoices,strings=--force|--yes-i-really-mean-it,req=false", \
+ "name=force,type=CephBool,req=false "
+ // backward compat synonym for --force
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"mark osd as being destroyed. Keeps the ID intact (allowing reuse), " \
"but removes cephx keys, config-key data and lockbox keys, "\
"rendering data permanently unreadable.", \
"osd", "rw")
COMMAND("osd purge " \
"name=id,type=CephOsdName " \
- "name=sure,type=CephChoices,strings=--force|--yes-i-really-mean-it,req=false", \
+ "name=force,type=CephBool,req=false "
+ // backward compat synonym for --force
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"purge all osd data from the monitors including the OSD id " \
"and CRUSH position", \
"osd", "rw")
string flag_val;
cmd_getval(g_ceph_context, cmdmap, "val", flag_val);
- string confirm;
- cmd_getval(g_ceph_context, cmdmap, "confirm", confirm);
+ bool sure = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", sure);
if (flag_name == "enable_multiple") {
bool flag_bool = false;
ss << "Multiple-filesystems are forbidden until all mons are updated";
return -EINVAL;
}
- if (confirm != "--yes-i-really-mean-it") {
+ if (!sure) {
ss << EXPERIMENTAL_WARNING;
}
fsmap.set_enable_multiple(flag_bool);
}
}
- string force_str;
- cmd_getval(g_ceph_context,cmdmap, "force", force_str);
- bool force = (force_str == "--force");
+ bool force = false;
+ cmd_getval(g_ceph_context,cmdmap, "force", force);
+
const pool_stat_t *stat = mon->mgrstatmon()->get_pool_stat(metadata);
if (stat) {
int64_t metadata_num_objects = stat->stats.sum.num_objects;
for (auto fs : fsmap.get_filesystems()) {
const std::vector<int64_t> &data_pools = fs->mds_map.get_data_pools();
- string sure;
+
+ bool sure = false;
+ cmd_getval(g_ceph_context, cmdmap,
+ "allow_dangerous_metadata_overlay", sure);
+
if ((std::find(data_pools.begin(), data_pools.end(), data) != data_pools.end()
|| fs->mds_map.get_metadata_pool() == metadata)
- && ((!cmd_getval(g_ceph_context, cmdmap, "sure", sure)
- || sure != "--allow-dangerous-metadata-overlay"))) {
+ && !sure) {
ss << "Filesystem '" << fs_name
<< "' is already using one of the specified RADOS pools. This should ONLY be done in emergencies and after careful reading of the documentation. Pass --allow-dangerous-metadata-overlay to permit this.";
return -EEXIST;
}
if (enable_inline) {
- string confirm;
- if (!cmd_getval(g_ceph_context, cmdmap, "confirm", confirm) ||
- confirm != "--yes-i-really-mean-it") {
+ bool confirm = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", confirm);
+ if (!confirm) {
ss << EXPERIMENTAL_WARNING;
return -EPERM;
}
}
// Check for confirmation flag
- string sure;
- cmd_getval(g_ceph_context, cmdmap, "sure", sure);
- if (sure != "--yes-i-really-mean-it") {
+ bool sure = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", sure);
+ if (!sure) {
ss << "this is a DESTRUCTIVE operation and will make data in your filesystem permanently" \
" inaccessible. Add --yes-i-really-mean-it if you are sure you wish to continue.";
return -EPERM;
}
// Check for confirmation flag
- string sure;
- cmd_getval(g_ceph_context, cmdmap, "sure", sure);
- if (sure != "--yes-i-really-mean-it") {
+ bool sure = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", sure);
+ if (!sure) {
ss << "this is a potentially destructive operation, only for use by experts in disaster recovery. "
"Add --yes-i-really-mean-it if you are sure you wish to continue.";
return -EPERM;
}
}
} else if (prefix == "mds rmfailed") {
- string confirm;
- if (!cmd_getval(g_ceph_context, cmdmap, "confirm", confirm) ||
- confirm != "--yes-i-really-mean-it") {
+ bool confirm = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", confirm);
+ if (!confirm) {
ss << "WARNING: this can make your filesystem inaccessible! "
"Add --yes-i-really-mean-it if you are sure you wish to continue.";
return -EPERM;
COMMAND_WITH_FLAG("mon_status", "report status of monitors", "mon", "r",
FLAG(NOFORWARD))
COMMAND_WITH_FLAG("sync force " \
- "name=validate1,type=CephChoices,strings=--yes-i-really-mean-it,req=false " \
- "name=validate2,type=CephChoices,strings=--i-know-what-i-am-doing,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false " \
+ "name=i_know_what_i_am_doing,type=CephBool,req=false", \
"force sync of and clear monitor store", \
"mon", "rw", \
FLAG(NOFORWARD)|FLAG(DEPRECATED))
"mon", "rw", \
FLAG(NONE))
COMMAND_WITH_FLAG("mon sync force " \
- "name=validate1,type=CephChoices,strings=--yes-i-really-mean-it,req=false " \
- "name=validate2,type=CephChoices,strings=--i-know-what-i-am-doing,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false " \
+ "name=i_know_what_i_am_doing,type=CephBool,req=false", \
"force sync of and clear monitor store", \
"mon", "rw", \
FLAG(NOFORWARD))
"name=var,type=CephChoices,strings=max_mds|max_file_size|inline_data|"
"allow_new_snaps|allow_multimds|allow_multimds_snaps|allow_dirfrags " \
"name=val,type=CephString " \
- "name=confirm,type=CephString,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"set mds parameter <var> to <val>", "mds", "rw", FLAG(OBSOLETE))
// arbitrary limit 0-20 below; worth standing on head to make it
// relate to actual state definitions?
COMMAND("mds rm " \
"name=gid,type=CephInt,range=0", \
"remove nonactive mds", "mds", "rw")
-COMMAND("mds rmfailed name=role,type=CephString name=confirm,type=CephString,req=false", \
+COMMAND("mds rmfailed name=role,type=CephString " \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"remove failed mds", "mds", "rw")
COMMAND_WITH_FLAG("mds cluster_down", "take MDS cluster down", "mds", "rw", FLAG(OBSOLETE))
COMMAND_WITH_FLAG("mds cluster_up", "bring MDS cluster up", "mds", "rw", FLAG(OBSOLETE))
COMMAND_WITH_FLAG("mds newfs " \
"name=metadata,type=CephInt,range=0 " \
"name=data,type=CephInt,range=0 " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"make new filesystem using pools <metadata> and <data>", \
"mds", "rw", FLAG(OBSOLETE))
COMMAND("fs new " \
"name=fs_name,type=CephString " \
"name=metadata,type=CephString " \
"name=data,type=CephString " \
- "name=force,type=CephChoices,strings=--force,req=false " \
- "name=sure,type=CephChoices,strings=--allow-dangerous-metadata-overlay,req=false", \
+ "name=force,type=CephBool,req=false " \
+ "name=allow_dangerous_metadata_overlay,type=CephBool,req=false", \
"make new filesystem using named pools <metadata> and <data>", \
"fs", "rw")
COMMAND("fs rm " \
"name=fs_name,type=CephString " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"disable the named filesystem", \
"fs", "rw")
COMMAND("fs reset " \
"name=fs_name,type=CephString " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"disaster recovery only: reset to a single-MDS map", \
"fs", "rw")
COMMAND("fs ls ", \
"|standby_count_wanted|session_timeout|session_autoclose" \
"|down|joinable|min_compat_client " \
"name=val,type=CephString " \
- "name=confirm,type=CephString,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"set fs parameter <var> to <val>", "mds", "rw")
COMMAND("fs flag set name=flag_name,type=CephChoices,strings=enable_multiple "
"name=val,type=CephString " \
- "name=confirm,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"Set a global CephFS flag", \
"fs", "rw")
COMMAND("fs add_data_pool name=fs_name,type=CephString " \
"mon", "r")
COMMAND("mon feature set " \
"name=feature_name,type=CephString " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"set provided feature on mon map", \
"mon", "rw")
COMMAND("mon set-rank " \
COMMAND("osd crush swap-bucket " \
"name=source,type=CephString,goodchars=[A-Za-z0-9-_.] " \
"name=dest,type=CephString,goodchars=[A-Za-z0-9-_.] " \
- "name=force,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"swap existing bucket contents from (orphan) bucket <source> and <target>", \
"osd", "rw")
COMMAND("osd crush link " \
"osd", "r")
COMMAND("osd set-require-min-compat-client " \
"name=version,type=CephString " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"set the minimum client version we will maintain compatibility with",
"osd", "rw")
COMMAND("osd pause", "pause osd", "osd", "rw")
"osd", "r")
COMMAND("osd set " \
"name=key,type=CephChoices,strings=full|pause|noup|nodown|noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|notieragent|nosnaptrim|sortbitwise|recovery_deletes|require_jewel_osds|require_kraken_osds " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"set <key>", "osd", "rw")
COMMAND("osd unset " \
"name=key,type=CephChoices,strings=full|pause|noup|nodown|noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|notieragent|nosnaptrim", \
"unset <key>", "osd", "rw")
COMMAND("osd require-osd-release "\
"name=release,type=CephChoices,strings=luminous|mimic|nautilus " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"set the minimum allowed OSD release to participate in the cluster",
"osd", "rw")
COMMAND("osd down " \
"osd", "rw")
COMMAND("osd force-create-pg " \
"name=pgid,type=CephPgid "\
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"force creation of pg <pgid>",
"osd", "rw")
COMMAND("osd pg-temp " \
"osd", "rw")
COMMAND_WITH_FLAG("osd destroy-actual " \
"name=id,type=CephOsdName " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"mark osd as being destroyed. Keeps the ID intact (allowing reuse), " \
"but removes cephx keys, config-key data and lockbox keys, "\
"rendering data permanently unreadable.", \
"osd", "rw", FLAG(HIDDEN))
COMMAND("osd purge-new " \
"name=id,type=CephOsdName " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"purge all traces of an OSD that was partially created but never " \
"started", \
"osd", "rw")
COMMAND_WITH_FLAG("osd purge-actual " \
"name=id,type=CephOsdName " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"purge all osd data from the monitors. Combines `osd destroy`, " \
"`osd rm`, and `osd crush rm`.", \
"osd", "rw", FLAG(HIDDEN))
COMMAND("osd lost " \
"name=id,type=CephOsdName " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"mark osd as permanently lost. THIS DESTROYS DATA IF NO MORE REPLICAS EXIST, BE CAREFUL", \
"osd", "rw")
COMMAND_WITH_FLAG("osd create " \
"name=pool,type=CephPoolname " \
"name=var,type=CephChoices,strings=size|min_size|pg_num|pgp_num|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|min_read_recency_for_promote|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm " \
"name=val,type=CephString " \
- "name=force,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"set pool parameter <var> to <val>", "osd", "rw")
// 'val' is a CephString because it can include a unit. Perhaps
// there should be a Python type for validation/conversion of strings
COMMAND("osd pool application enable " \
"name=pool,type=CephPoolname " \
"name=app,type=CephString,goodchars=[A-Za-z0-9-_.] " \
- "name=force,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"enable use of an application <app> [cephfs,rbd,rgw] on pool <poolname>",
"osd", "rw")
COMMAND("osd pool application disable " \
"name=pool,type=CephPoolname " \
"name=app,type=CephString " \
- "name=force,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"disables use of an application <app> on pool <poolname>",
"osd", "rw")
COMMAND("osd pool application set " \
COMMAND("osd tier cache-mode " \
"name=pool,type=CephPoolname " \
"name=mode,type=CephChoices,strings=none|writeback|forward|readonly|readforward|proxy|readproxy " \
- "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
+ "name=yes_i_really_mean_it,type=CephBool,req=false", \
"specify the caching mode for cache tier <pool>", "osd", "rw")
COMMAND("osd tier set-overlay " \
"name=pool,type=CephPoolname " \
r = 0;
} else if (prefix == "sync force" ||
prefix == "mon sync force") {
- string validate1, validate2;
- cmd_getval(g_ceph_context, cmdmap, "validate1", validate1);
- cmd_getval(g_ceph_context, cmdmap, "validate2", validate2);
- if (validate1 != "--yes-i-really-mean-it" ||
- validate2 != "--i-know-what-i-am-doing") {
+ bool validate1 = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", validate1);
+ bool validate2 = false;
+ cmd_getval(g_ceph_context, cmdmap, "i_know_what_i_am_doing", validate2);
+
+ if (!validate1 || !validate2) {
r = -EINVAL;
rs = "are you SURE? this will mean the monitor store will be "
"erased. pass '--yes-i-really-mean-it "
goto reply;
}
- string sure;
- if (!cmd_getval(g_ceph_context, cmdmap, "sure", sure) ||
- sure != "--yes-i-really-mean-it") {
+ bool sure = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", sure);
+ if (!sure) {
ss << "please specify '--yes-i-really-mean-it' if you "
<< "really, **really** want to set feature '"
<< feature << "' in the monmap.";
if (r) {
return r;
}
- string force;
- cmd_getval(cct,cmdmap, "force", force);
- if (p.cache_mode != pg_pool_t::CACHEMODE_NONE &&
- force != "--yes-i-really-mean-it") {
+ bool force = false;
+ cmd_getval(cct,cmdmap, "yes_i_really_mean_it", force);
+ if (p.cache_mode != pg_pool_t::CACHEMODE_NONE && !force) {
ss << "splits in cache pools must be followed by scrubs and leave sufficient free space to avoid overfilling. use --yes-i-really-mean-it to force.";
return -EPERM;
}
}
} else if (var == "hashpspool") {
uint64_t flag = pg_pool_t::get_flag_by_name(var);
- string force;
- cmd_getval(cct, cmdmap, "force", force);
- if (force != "--yes-i-really-mean-it") {
+ bool force = false;
+ cmd_getval(cct, cmdmap, "yes_i_really_mean_it", force);
+
+ if (!force) {
ss << "are you SURE? this will remap all placement groups in this pool,"
" this triggers large data movement,"
" pass --yes-i-really-mean-it if you really do.";
return -EINVAL;
}
- string force;
- cmd_getval(cct, cmdmap, "force", force);
+ bool force = false;
+ cmd_getval(cct, cmdmap, "yes_i_really_mean_it", force);
- if (!app_exists && !p.application_metadata.empty() &&
- force != "--yes-i-really-mean-it") {
+ if (!app_exists && !p.application_metadata.empty() && !force) {
ss << "Are you SURE? Pool '" << pool_name << "' already has an enabled "
<< "application; pass --yes-i-really-mean-it to proceed anyway";
return -EPERM;
ss << "enabled application '" << app << "' on pool '" << pool_name << "'";
} else if (boost::algorithm::ends_with(prefix, "disable")) {
- string force;
- cmd_getval(cct, cmdmap, "force", force);
+ bool force = false;
+ cmd_getval(cct, cmdmap, "yes_i_really_mean_it", force);
- if (force != "--yes-i-really-mean-it") {
+ if (!force) {
ss << "Are you SURE? Disabling an application within a pool might result "
<< "in loss of application functionality; pass "
<< "--yes-i-really-mean-it to proceed anyway";
}
} while (false);
} else if (prefix == "osd crush swap-bucket") {
- string source, dest, force;
+ string source, dest;
cmd_getval(cct, cmdmap, "source", source);
cmd_getval(cct, cmdmap, "dest", dest);
- cmd_getval(cct, cmdmap, "force", force);
+
+ bool force = false;
+ cmd_getval(cct, cmdmap, "yes_i_really_mean_it", force);
+
CrushWrapper newcrush;
_get_pending_crush(newcrush);
if (!newcrush.name_exists(source)) {
int sid = newcrush.get_item_id(source);
int did = newcrush.get_item_id(dest);
int sparent;
- if (newcrush.get_immediate_parent_id(sid, &sparent) == 0 &&
- force != "--yes-i-really-mean-it") {
+ if (newcrush.get_immediate_parent_id(sid, &sparent) == 0 && !force) {
ss << "source item " << source << " is not an orphan bucket; pass --yes-i-really-mean-it to proceed anyway";
err = -EPERM;
goto reply;
}
if (newcrush.get_bucket_alg(sid) != newcrush.get_bucket_alg(did) &&
- force != "--yes-i-really-mean-it") {
+ !force) {
ss << "source bucket alg " << crush_alg_name(newcrush.get_bucket_alg(sid)) << " != "
<< "dest bucket alg " << crush_alg_name(newcrush.get_bucket_alg(did))
<< "; pass --yes-i-really-mean-it to proceed anyway";
err = -EPERM;
goto reply;
}
- string sure;
- cmd_getval(cct, cmdmap, "sure", sure);
- if (sure != "--yes-i-really-mean-it") {
+ bool sure = false;
+ cmd_getval(cct, cmdmap, "yes_i_really_mean_it", sure);
+ if (!sure) {
FeatureMap m;
mon->get_combined_feature_map(&m);
uint64_t features = ceph_release_features(vno);
return prepare_unset_flag(op, CEPH_OSDMAP_PAUSERD | CEPH_OSDMAP_PAUSEWR);
} else if (prefix == "osd set") {
- string sure;
- cmd_getval(cct, cmdmap, "sure", sure);
+ bool sure = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", sure);
+
string key;
cmd_getval(cct, cmdmap, "key", key);
if (key == "full")
else if (key == "sortbitwise") {
return prepare_set_flag(op, CEPH_OSDMAP_SORTBITWISE);
} else if (key == "recovery_deletes") {
- if (!osdmap.get_num_up_osds() && sure != "--yes-i-really-mean-it") {
+ if (!osdmap.get_num_up_osds() && !sure) {
ss << "Not advisable to continue since no OSDs are up. Pass "
<< "--yes-i-really-mean-it if you really wish to continue.";
err = -EPERM;
goto reply;
}
if (HAVE_FEATURE(osdmap.get_up_osd_features(), OSD_RECOVERY_DELETES)
- || sure == "--yes-i-really-mean-it") {
+ || sure) {
return prepare_set_flag(op, CEPH_OSDMAP_RECOVERY_DELETES);
} else {
ss << "not all up OSDs have OSD_RECOVERY_DELETES feature";
goto reply;
}
} else if (key == "require_jewel_osds") {
- if (!osdmap.get_num_up_osds() && sure != "--yes-i-really-mean-it") {
+ if (!osdmap.get_num_up_osds() && !sure) {
ss << "Not advisable to continue since no OSDs are up. Pass "
<< "--yes-i-really-mean-it if you really wish to continue.";
err = -EPERM;
err = 0;
goto reply;
} else if (HAVE_FEATURE(osdmap.get_up_osd_features(), SERVER_JEWEL)
- || sure == "--yes-i-really-mean-it") {
+ || sure) {
return prepare_set_flag(op, CEPH_OSDMAP_REQUIRE_JEWEL);
} else {
ss << "not all up OSDs have CEPH_FEATURE_SERVER_JEWEL feature";
err = -EPERM;
}
} else if (key == "require_kraken_osds") {
- if (!osdmap.get_num_up_osds() && sure != "--yes-i-really-mean-it") {
+ if (!osdmap.get_num_up_osds() && !sure) {
ss << "Not advisable to continue since no OSDs are up. Pass "
<< "--yes-i-really-mean-it if you really wish to continue.";
err = -EPERM;
err = 0;
goto reply;
} else if (HAVE_FEATURE(osdmap.get_up_osd_features(), SERVER_KRAKEN)
- || sure == "--yes-i-really-mean-it") {
+ || sure) {
bool r = prepare_set_flag(op, CEPH_OSDMAP_REQUIRE_KRAKEN);
// ensure JEWEL is also set
pending_inc.new_flags |= CEPH_OSDMAP_REQUIRE_JEWEL;
} else if (prefix == "osd require-osd-release") {
string release;
cmd_getval(cct, cmdmap, "release", release);
- string sure;
- cmd_getval(cct, cmdmap, "sure", sure);
+ bool sure = false;
+ cmd_getval(cct, cmdmap, "yes_i_really_mean_it", sure);
if (!osdmap.test_flag(CEPH_OSDMAP_SORTBITWISE)) {
ss << "the sortbitwise flag must be set first";
err = -EPERM;
goto reply;
}
ceph_assert(osdmap.require_osd_release >= CEPH_RELEASE_LUMINOUS);
- if (!osdmap.get_num_up_osds() && sure != "--yes-i-really-mean-it") {
+ if (!osdmap.get_num_up_osds() && !sure) {
ss << "Not advisable to continue since no OSDs are up. Pass "
<< "--yes-i-really-mean-it if you really wish to continue.";
err = -EPERM;
}
if (rel == CEPH_RELEASE_MIMIC) {
if ((!HAVE_FEATURE(osdmap.get_up_osd_features(), SERVER_MIMIC))
- && sure != "--yes-i-really-mean-it") {
+ && !sure) {
ss << "not all up OSDs have CEPH_FEATURE_SERVER_MIMIC feature";
err = -EPERM;
goto reply;
}
} else if (rel == CEPH_RELEASE_NAUTILUS) {
if ((!HAVE_FEATURE(osdmap.get_up_osd_features(), SERVER_NAUTILUS))
- && sure != "--yes-i-really-mean-it") {
+ && !sure) {
ss << "not all up OSDs have CEPH_FEATURE_SERVER_NAUTILUS feature";
err = -EPERM;
goto reply;
err = -EINVAL;
goto reply;
}
- string sure;
- if (!cmd_getval(cct, cmdmap, "sure", sure) || sure != "--yes-i-really-mean-it") {
+ bool sure = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", sure);
+ if (!sure) {
ss << "are you SURE? this might mean real, permanent data loss. pass "
"--yes-i-really-mean-it if you really do.";
err = -EPERM;
"osd purge-new" == prefix);
}
- string sure;
- if (!cmd_getval(cct, cmdmap, "sure", sure) ||
- sure != "--yes-i-really-mean-it") {
+ bool sure = false;
+ cmd_getval(g_ceph_context, cmdmap, "yes_i_really_mean_it", sure);
+ if (!sure) {
ss << "Are you SURE? Did you verify with 'ceph osd safe-to-destroy'? "
<< "This will mean real, permanent data loss, as well "
<< "as deletion of cephx and lockbox keys. "
goto reply;
}
- string sure;
- cmd_getval(cct, cmdmap, "sure", sure);
+ bool sure = false;
+ cmd_getval(cct, cmdmap, "yes_i_really_mean_it", sure);
+
if ((mode != pg_pool_t::CACHEMODE_WRITEBACK &&
mode != pg_pool_t::CACHEMODE_NONE &&
mode != pg_pool_t::CACHEMODE_PROXY &&
mode != pg_pool_t::CACHEMODE_READPROXY) &&
- sure != "--yes-i-really-mean-it") {
+ !sure) {
ss << "'" << modestr << "' is not a well-supported cache mode and may "
<< "corrupt your data. pass --yes-i-really-mean-it to force.";
err = -EPERM;
err = -ENOENT;
goto reply;
}
- string sure;
- cmd_getval(cct, cmdmap, "sure", sure);
- if (sure != "--yes-i-really-mean-it") {
+ bool sure = false;
+ cmd_getval(cct, cmdmap, "yes_i_really_mean_it", sure);
+ if (!sure) {
ss << "This command will recreate a lost (as in data lost) PG with data in it, such "
<< "that the cluster will give up ever trying to recover the lost data. Do this "
<< "only if you are certain that all copies of the PG are in fact lost and you are "