]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: convert remaining confirmation flags to CephBool
authorJohn Spray <john.spray@redhat.com>
Thu, 1 Nov 2018 11:56:08 +0000 (07:56 -0400)
committerJohn Spray <john.spray@redhat.com>
Fri, 2 Nov 2018 10:57:43 +0000 (06:57 -0400)
Signed-off-by: John Spray <john.spray@redhat.com>
src/mgr/DaemonServer.cc
src/mgr/MgrCommands.h
src/mon/FSCommands.cc
src/mon/MDSMonitor.cc
src/mon/MonCommands.h
src/mon/Monitor.cc
src/mon/MonmapMonitor.cc
src/mon/OSDMonitor.cc

index b5c404e237784d6e0dbb0d69da5aba403cdf5795..cd7e1223c5794ccc00ce2e33057dc7222a84b546 100644 (file)
@@ -1136,7 +1136,7 @@ bool DaemonServer::_handle_command(
       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;
@@ -1148,7 +1148,7 @@ bool DaemonServer::_handle_command(
                                            max_osds,
                                            by_pg,
                                            pools.empty() ? NULL : &pools,
-                                           no_increasing == "--no-increasing",
+                                           no_increasing,
                                            &new_weights,
                                            &ss, &out_str, f.get());
          });
@@ -1351,10 +1351,13 @@ bool DaemonServer::_handle_command(
 
     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;
@@ -1370,7 +1373,7 @@ bool DaemonServer::_handle_command(
        "{"
        "\"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);
index d81c61a3642c1abdf83d3f9827dd6d1c67a8da00..11a11361a1a67b12c0b194c06e9740d594635c8d 100644 (file)
@@ -88,7 +88,7 @@ COMMAND("osd test-reweight-by-utilization " \
        "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 " \
@@ -108,14 +108,18 @@ COMMAND("osd test-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")
index baff0375464fd0e0b57f2607f3f18288b6a88900..f1fe9eab8ae6f4ddaf00668f6d3fea89102c4341 100644 (file)
@@ -48,8 +48,8 @@ class FlagSetHandler : public FileSystemCommandHandler
     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;
@@ -64,7 +64,7 @@ class FlagSetHandler : public FileSystemCommandHandler
         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);
@@ -139,9 +139,9 @@ class FsNewHandler : public FileSystemCommandHandler
       }
     }
 
-    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;
@@ -162,11 +162,14 @@ class FsNewHandler : public FileSystemCommandHandler
 
     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;
@@ -303,9 +306,9 @@ public:
       }
 
       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;
        }
@@ -693,9 +696,9 @@ class RemoveFilesystemHandler : public FileSystemCommandHandler
     }
 
     // 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;
@@ -755,9 +758,9 @@ class ResetFilesystemHandler : public FileSystemCommandHandler
     }
 
     // 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;
index bda0e10e87cc888f978317093ff8da9c3347153f..0dd60336a8c1e240796490edd9ce42364c161352 100644 (file)
@@ -1360,9 +1360,9 @@ int MDSMonitor::filesystem_command(
       }
     }
   } 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;
index d7637a52093d7aeec43e1d5f7ec15263ffeccd65..1588528e9d49e0259115d35b7ad3b5dcda83bccf 100644 (file)
@@ -225,8 +225,8 @@ COMMAND("quorum_status", "report status of monitor quorum", \
 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))
@@ -258,8 +258,8 @@ COMMAND_WITH_FLAG("mon scrub",
     "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))
@@ -320,7 +320,7 @@ COMMAND_WITH_FLAG("mds set " \
        "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?
@@ -337,7 +337,8 @@ COMMAND("mds repaired name=role,type=CephString", \
 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))
@@ -359,25 +360,25 @@ COMMAND_WITH_FLAG("mds remove_data_pool " \
 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 ", \
@@ -393,11 +394,11 @@ COMMAND("fs set " \
         "|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 " \
@@ -442,7 +443,7 @@ COMMAND("mon feature ls " \
         "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 " \
@@ -588,7 +589,7 @@ COMMAND("osd crush move " \
 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 " \
@@ -731,7 +732,7 @@ COMMAND("osd get-require-min-compat-client",
         "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")
@@ -755,14 +756,14 @@ COMMAND("osd erasure-code-profile ls", \
        "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 " \
@@ -840,7 +841,7 @@ COMMAND("osd reweightn " \
        "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 " \
@@ -878,26 +879,26 @@ COMMAND("osd primary-affinity " \
        "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 " \
@@ -967,7 +968,7 @@ COMMAND("osd pool set " \
        "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
@@ -984,13 +985,13 @@ COMMAND("osd pool get-quota " \
 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 " \
@@ -1037,7 +1038,7 @@ COMMAND_WITH_FLAG("osd tier remove " \
 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 " \
index 54500d8fc051ab7f3ce2ac928a47c63d9210dc80..d63c5d5d0992501e678af1c3bbe9ed539ec82b40 100644 (file)
@@ -3490,11 +3490,12 @@ void Monitor::handle_command(MonOpRequestRef op)
     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 "
index ff2c8d7539526e6c91a5a5627b5644992eb89049..8de37423d15f94cb7a2b672e8e92d94a94cf70bb 100644 (file)
@@ -654,9 +654,9 @@ bool MonmapMonitor::prepare_command(MonOpRequestRef op)
       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.";
index e56612aed3165e29fe3700e21cb543bd283525eb..e64bfbcd15ce3151164b3ec30b610755a2c4140b 100644 (file)
@@ -6986,10 +6986,9 @@ int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
       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;
       }
@@ -7086,9 +7085,10 @@ int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
     }
   } 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.";
@@ -7455,11 +7455,10 @@ int OSDMonitor::_command_pool_application(const string &prefix,
       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;
@@ -7483,10 +7482,10 @@ int OSDMonitor::_command_pool_application(const string &prefix,
     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";
@@ -9142,10 +9141,13 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       }
     } 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)) {
@@ -9161,14 +9163,13 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     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";
@@ -9871,9 +9872,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       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);
@@ -9923,8 +9924,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     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")
@@ -9956,14 +9958,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     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";
@@ -9971,7 +9973,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
        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;
@@ -9986,14 +9988,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
        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;
@@ -10008,7 +10010,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
        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;
@@ -10059,8 +10061,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
   } 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;
@@ -10083,7 +10085,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       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;
@@ -10091,14 +10093,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     }
     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;
@@ -11016,8 +11018,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       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;
@@ -11082,9 +11085,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
             "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. "
@@ -11924,13 +11927,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       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;
@@ -12215,9 +12219,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       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 "