From: Sage Weil Date: Fri, 3 Aug 2018 17:19:07 +0000 (-0500) Subject: mon: use throwing variant of cmd_getval X-Git-Tag: v12.2.11~71^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=759c36ecd502af7841ade04c5c91539abf428888;p=ceph.git mon: use throwing variant of cmd_getval This ensure we uniformly return EINVAL when the input JSON has a bad value type. Signed-off-by: Sage Weil (cherry picked from commit bd565bca3f42d7946c392b2833bb3d9982a8ac5d) Conflicts: src/mon/ConfigKeyService.cc src/mon/ConfigMonitor.cc src/mon/FSCommands.cc src/mon/MgrMonitor.cc src/mon/MonmapMonitor.cc src/mon/OSDMonitor.cc --- diff --git a/src/mon/AuthMonitor.cc b/src/mon/AuthMonitor.cc index 84832291b53..338d55b0853 100644 --- a/src/mon/AuthMonitor.cc +++ b/src/mon/AuthMonitor.cc @@ -570,7 +570,7 @@ bool AuthMonitor::preprocess_command(MonOpRequestRef op) } string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); if (prefix == "auth add" || prefix == "auth del" || prefix == "auth rm" || @@ -590,7 +590,7 @@ bool AuthMonitor::preprocess_command(MonOpRequestRef op) // entity might not be supplied, but if it is, it should be valid string entity_name; - cmd_getval(g_ceph_context, cmdmap, "entity", entity_name); + cmd_getval_throws(g_ceph_context, cmdmap, "entity", entity_name); EntityName entity; if (!entity_name.empty() && !entity.from_str(entity_name)) { ss << "invalid entity_auth " << entity_name; @@ -599,7 +599,7 @@ bool AuthMonitor::preprocess_command(MonOpRequestRef op) } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("plain")); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format, string("plain")); boost::scoped_ptr f(Formatter::create(format)); if (prefix == "auth export") { @@ -1061,10 +1061,10 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) string entity_name; EntityName entity; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("plain")); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format, string("plain")); boost::scoped_ptr f(Formatter::create(format)); MonSession *session = m->get_session(); @@ -1073,14 +1073,14 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) return true; } - cmd_getval(g_ceph_context, cmdmap, "caps", caps_vec); + cmd_getval_throws(g_ceph_context, cmdmap, "caps", caps_vec); if ((caps_vec.size() % 2) != 0) { ss << "bad capabilities request; odd number of arguments"; err = -EINVAL; goto done; } - cmd_getval(g_ceph_context, cmdmap, "entity", entity_name); + cmd_getval_throws(g_ceph_context, cmdmap, "entity", entity_name); if (!entity_name.empty() && !entity.from_str(entity_name)) { ss << "bad entity name"; err = -EINVAL; @@ -1312,7 +1312,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op) return true; } else if (prefix == "fs authorize") { string filesystem; - cmd_getval(g_ceph_context, cmdmap, "filesystem", filesystem); + cmd_getval_throws(g_ceph_context, cmdmap, "filesystem", filesystem); string mds_cap_string, osd_cap_string; string osd_cap_wanted = "r"; diff --git a/src/mon/ConfigKeyService.cc b/src/mon/ConfigKeyService.cc index e191f8367c8..6d23ff6bac9 100644 --- a/src/mon/ConfigKeyService.cc +++ b/src/mon/ConfigKeyService.cc @@ -189,9 +189,9 @@ bool ConfigKeyService::service_dispatch(MonOpRequestRef op) return false; } - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); string key; - cmd_getval(g_ceph_context, cmdmap, "key", key); + cmd_getval_throws(g_ceph_context, cmdmap, "key", key); if (prefix == "config-key get") { ret = store_get(key, rdata); @@ -212,7 +212,7 @@ bool ConfigKeyService::service_dispatch(MonOpRequestRef op) bufferlist data; string val; - if (cmd_getval(g_ceph_context, cmdmap, "val", val)) { + if (cmd_getval_throws(g_ceph_context, cmdmap, "val", val)) { // they specified a value in the command instead of a file data.append(val); } else if (cmd->get_data_len() > 0) { diff --git a/src/mon/FSCommands.cc b/src/mon/FSCommands.cc index 3ce6f5565f0..67756d4c1c6 100644 --- a/src/mon/FSCommands.cc +++ b/src/mon/FSCommands.cc @@ -44,13 +44,13 @@ class FlagSetHandler : public FileSystemCommandHandler std::stringstream &ss) override { string flag_name; - cmd_getval(g_ceph_context, cmdmap, "flag_name", flag_name); + cmd_getval_throws(g_ceph_context, cmdmap, "flag_name", flag_name); string flag_val; - cmd_getval(g_ceph_context, cmdmap, "val", flag_val); + cmd_getval_throws(g_ceph_context, cmdmap, "val", flag_val); string confirm; - cmd_getval(g_ceph_context, cmdmap, "confirm", confirm); + cmd_getval_throws(g_ceph_context, cmdmap, "confirm", confirm); if (flag_name == "enable_multiple") { bool flag_bool = false; @@ -99,7 +99,7 @@ class FsNewHandler : public FileSystemCommandHandler assert(m_paxos->is_plugged()); string metadata_name; - cmd_getval(g_ceph_context, cmdmap, "metadata", metadata_name); + cmd_getval_throws(g_ceph_context, cmdmap, "metadata", metadata_name); int64_t metadata = mon->osdmon()->osdmap.lookup_pg_pool_name(metadata_name); if (metadata < 0) { ss << "pool '" << metadata_name << "' does not exist"; @@ -107,7 +107,7 @@ class FsNewHandler : public FileSystemCommandHandler } string force_str; - cmd_getval(g_ceph_context,cmdmap, "force", force_str); + cmd_getval_throws(g_ceph_context,cmdmap, "force", force_str); bool force = (force_str == "--force"); const pool_stat_t *stat = mon->pgservice->get_pool_stat(metadata); if (stat) { @@ -120,7 +120,7 @@ class FsNewHandler : public FileSystemCommandHandler } string data_name; - cmd_getval(g_ceph_context, cmdmap, "data", data_name); + cmd_getval_throws(g_ceph_context, cmdmap, "data", data_name); int64_t data = mon->osdmon()->osdmap.lookup_pg_pool_name(data_name); if (data < 0) { ss << "pool '" << data_name << "' does not exist"; @@ -132,7 +132,7 @@ class FsNewHandler : public FileSystemCommandHandler } string fs_name; - cmd_getval(g_ceph_context, cmdmap, "fs_name", fs_name); + cmd_getval_throws(g_ceph_context, cmdmap, "fs_name", fs_name); if (fs_name.empty()) { // Ensure fs name is not empty so that we can implement // commmands that refer to FS by name in future. @@ -166,7 +166,7 @@ class FsNewHandler : public FileSystemCommandHandler string 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) + && ((!cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure) || sure != "--allow-dangerous-metadata-overlay"))) { 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."; @@ -230,7 +230,7 @@ public: std::stringstream &ss) override { std::string fs_name; - if (!cmd_getval(g_ceph_context, cmdmap, "fs_name", fs_name) || fs_name.empty()) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "fs_name", fs_name) || fs_name.empty()) { ss << "Missing filesystem name"; return -EINVAL; } @@ -242,14 +242,14 @@ public: } string var; - if (!cmd_getval(g_ceph_context, cmdmap, "var", var) || var.empty()) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "var", var) || var.empty()) { ss << "Invalid variable"; return -EINVAL; } string val; string interr; int64_t n = 0; - if (!cmd_getval(g_ceph_context, cmdmap, "val", val)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "val", val)) { return -EINVAL; } // we got a string. see if it contains an int. @@ -290,7 +290,7 @@ public: if (enable_inline) { string confirm; - if (!cmd_getval(g_ceph_context, cmdmap, "confirm", confirm) || + if (!cmd_getval_throws(g_ceph_context, cmdmap, "confirm", confirm) || confirm != "--yes-i-really-mean-it") { ss << EXPERIMENTAL_WARNING; return -EPERM; @@ -485,10 +485,10 @@ class AddDataPoolHandler : public FileSystemCommandHandler assert(m_paxos->is_plugged()); string poolname; - cmd_getval(g_ceph_context, cmdmap, "pool", poolname); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolname); std::string fs_name; - if (!cmd_getval(g_ceph_context, cmdmap, "fs_name", fs_name) + if (!cmd_getval_throws(g_ceph_context, cmdmap, "fs_name", fs_name) || fs_name.empty()) { ss << "Missing filesystem name"; return -EINVAL; @@ -564,7 +564,7 @@ class SetDefaultHandler : public FileSystemCommandHandler std::stringstream &ss) override { std::string fs_name; - cmd_getval(g_ceph_context, cmdmap, "fs_name", fs_name); + cmd_getval_throws(g_ceph_context, cmdmap, "fs_name", fs_name); auto fs = fsmap.get_filesystem(fs_name); if (fs == nullptr) { ss << "filesystem '" << fs_name << "' does not exist"; @@ -594,7 +594,7 @@ class RemoveFilesystemHandler : public FileSystemCommandHandler // (redundant while there is only one FS, but command // syntax should apply to multi-FS future) string fs_name; - cmd_getval(g_ceph_context, cmdmap, "fs_name", fs_name); + cmd_getval_throws(g_ceph_context, cmdmap, "fs_name", fs_name); auto fs = fsmap.get_filesystem(fs_name); if (fs == nullptr) { // Consider absence success to make deletes idempotent @@ -610,7 +610,7 @@ class RemoveFilesystemHandler : public FileSystemCommandHandler // Check for confirmation flag string sure; - cmd_getval(g_ceph_context, cmdmap, "sure", sure); + cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure); if (sure != "--yes-i-really-mean-it") { 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."; @@ -655,7 +655,7 @@ class ResetFilesystemHandler : public FileSystemCommandHandler std::stringstream &ss) override { string fs_name; - cmd_getval(g_ceph_context, cmdmap, "fs_name", fs_name); + cmd_getval_throws(g_ceph_context, cmdmap, "fs_name", fs_name); auto fs = fsmap.get_filesystem(fs_name); if (fs == nullptr) { ss << "filesystem '" << fs_name << "' does not exist"; @@ -672,7 +672,7 @@ class ResetFilesystemHandler : public FileSystemCommandHandler // Check for confirmation flag string sure; - cmd_getval(g_ceph_context, cmdmap, "sure", sure); + cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure); if (sure != "--yes-i-really-mean-it") { 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."; @@ -700,10 +700,10 @@ class RemoveDataPoolHandler : public FileSystemCommandHandler std::stringstream &ss) override { string poolname; - cmd_getval(g_ceph_context, cmdmap, "pool", poolname); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolname); std::string fs_name; - if (!cmd_getval(g_ceph_context, cmdmap, "fs_name", fs_name) + if (!cmd_getval_throws(g_ceph_context, cmdmap, "fs_name", fs_name) || fs_name.empty()) { ss << "Missing filesystem name"; return -EINVAL; diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index 5cdf90f9e4f..fc983bceecd 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -409,22 +409,22 @@ bool LogMonitor::preprocess_command(MonOpRequestRef op) } string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("plain")); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format, string("plain")); boost::scoped_ptr f(Formatter::create(format)); if (prefix == "log last") { int64_t num = 20; - cmd_getval(g_ceph_context, cmdmap, "num", num); + cmd_getval_throws(g_ceph_context, cmdmap, "num", num); if (f) { f->open_array_section("tail"); } std::string level_str; clog_type level; - if (cmd_getval(g_ceph_context, cmdmap, "level", level_str)) { + if (cmd_getval_throws(g_ceph_context, cmdmap, "level", level_str)) { level = LogEntry::str_to_level(level_str); if (level == CLOG_UNKNOWN) { ss << "Invalid severity '" << level_str << "'"; @@ -436,7 +436,7 @@ bool LogMonitor::preprocess_command(MonOpRequestRef op) } std::string channel; - if (!cmd_getval(g_ceph_context, cmdmap, "channel", channel)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "channel", channel)) { channel = CLOG_CHANNEL_DEFAULT; } @@ -502,7 +502,7 @@ bool LogMonitor::prepare_command(MonOpRequestRef op) } string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); MonSession *session = m->get_session(); if (!session) { @@ -512,7 +512,7 @@ bool LogMonitor::prepare_command(MonOpRequestRef op) if (prefix == "log") { vector logtext; - cmd_getval(g_ceph_context, cmdmap, "logtext", logtext); + cmd_getval_throws(g_ceph_context, cmdmap, "logtext", logtext); LogEntry le; le.who = m->get_orig_source_inst(); le.name = session->entity_name; diff --git a/src/mon/MgrMonitor.cc b/src/mon/MgrMonitor.cc index d9d5bd65e70..17a59add3e9 100644 --- a/src/mon/MgrMonitor.cc +++ b/src/mon/MgrMonitor.cc @@ -738,16 +738,16 @@ bool MgrMonitor::preprocess_command(MonOpRequestRef op) } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("json-pretty")); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format, string("json-pretty")); boost::scoped_ptr f(Formatter::create(format)); string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); int r = 0; if (prefix == "mgr dump") { int64_t epoch = 0; - cmd_getval(g_ceph_context, cmdmap, "epoch", epoch, (int64_t)map.get_epoch()); + cmd_getval_throws(g_ceph_context, cmdmap, "epoch", epoch, (int64_t)map.get_epoch()); if (epoch == (int64_t)map.get_epoch()) { f->dump_object("mgrmap", map); } else { @@ -791,14 +791,14 @@ bool MgrMonitor::preprocess_command(MonOpRequestRef op) f->flush(rdata); } else if (prefix == "mgr metadata") { string name; - cmd_getval(g_ceph_context, cmdmap, "id", name); + cmd_getval_throws(g_ceph_context, cmdmap, "id", name); if (name.size() > 0 && !map.have_name(name)) { ss << "mgr." << name << " does not exist"; r = -ENOENT; goto reply; } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format); boost::scoped_ptr f(Formatter::create(format, "json-pretty", "json-pretty")); if (name.size()) { f->open_object_section("mgr_metadata"); @@ -837,7 +837,7 @@ bool MgrMonitor::preprocess_command(MonOpRequestRef op) if (!f) f.reset(Formatter::create("json-pretty")); string field; - cmd_getval(g_ceph_context, cmdmap, "property", field); + cmd_getval_throws(g_ceph_context, cmdmap, "property", field); count_metadata(field, f.get()); f->flush(rdata); r = 0; @@ -873,17 +873,17 @@ bool MgrMonitor::prepare_command(MonOpRequestRef op) } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("plain")); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format, string("plain")); boost::scoped_ptr f(Formatter::create(format)); string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); int r = 0; if (prefix == "mgr fail") { string who; - cmd_getval(g_ceph_context, cmdmap, "who", who); + cmd_getval_throws(g_ceph_context, cmdmap, "who", who); std::string err; uint64_t gid = strict_strtol(who.c_str(), 10, &err); @@ -925,13 +925,13 @@ bool MgrMonitor::prepare_command(MonOpRequestRef op) } } else if (prefix == "mgr module enable") { string module; - cmd_getval(g_ceph_context, cmdmap, "module", module); + cmd_getval_throws(g_ceph_context, cmdmap, "module", module); if (module.empty()) { r = -EINVAL; goto out; } string force; - cmd_getval(g_ceph_context, cmdmap, "force", force); + cmd_getval_throws(g_ceph_context, cmdmap, "force", force); if (!pending_map.all_support_module(module) && force != "--force") { ss << "all mgr daemons do not support module '" << module << "', pass " @@ -942,7 +942,7 @@ bool MgrMonitor::prepare_command(MonOpRequestRef op) pending_map.modules.insert(module); } else if (prefix == "mgr module disable") { string module; - cmd_getval(g_ceph_context, cmdmap, "module", module); + cmd_getval_throws(g_ceph_context, cmdmap, "module", module); if (module.empty()) { r = -EINVAL; goto out; diff --git a/src/mon/MonmapMonitor.cc b/src/mon/MonmapMonitor.cc index dd66c0d6044..78f4a82001f 100644 --- a/src/mon/MonmapMonitor.cc +++ b/src/mon/MonmapMonitor.cc @@ -245,7 +245,7 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op) } string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); MonSession *session = m->get_session(); if (!session) { @@ -254,7 +254,7 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op) } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("plain")); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format, string("plain")); boost::scoped_ptr f(Formatter::create(format)); if (prefix == "mon stat") { @@ -271,7 +271,7 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op) epoch_t epoch; int64_t epochnum; - cmd_getval(g_ceph_context, cmdmap, "epoch", epochnum, (int64_t)0); + cmd_getval_throws(g_ceph_context, cmdmap, "epoch", epochnum, (int64_t)0); epoch = epochnum; MonMap *p = mon->monmap; @@ -322,7 +322,7 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op) bool list_with_value = false; string with_value; - if (cmd_getval(g_ceph_context, cmdmap, "with_value", with_value) && + if (cmd_getval_throws(g_ceph_context, cmdmap, "with_value", with_value) && with_value == "--with-value") { list_with_value = true; } @@ -442,7 +442,7 @@ bool MonmapMonitor::prepare_command(MonOpRequestRef op) } string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); MonSession *session = m->get_session(); if (!session) { @@ -503,9 +503,9 @@ bool MonmapMonitor::prepare_command(MonOpRequestRef op) bool propose = false; if (prefix == "mon add") { string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); string addrstr; - cmd_getval(g_ceph_context, cmdmap, "addr", addrstr); + cmd_getval_throws(g_ceph_context, cmdmap, "addr", addrstr); entity_addr_t addr; bufferlist rdata; @@ -573,7 +573,7 @@ bool MonmapMonitor::prepare_command(MonOpRequestRef op) } else if (prefix == "mon remove" || prefix == "mon rm") { string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); if (!monmap.contains(name)) { err = 0; ss << "mon." << name << " does not exist or has already been removed"; @@ -639,7 +639,7 @@ bool MonmapMonitor::prepare_command(MonOpRequestRef op) * 'mon flag set/unset'. */ string feature_name; - if (!cmd_getval(g_ceph_context, cmdmap, "feature_name", feature_name)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "feature_name", feature_name)) { ss << "missing required feature name"; err = -EINVAL; goto reply; @@ -654,7 +654,7 @@ bool MonmapMonitor::prepare_command(MonOpRequestRef op) } string sure; - if (!cmd_getval(g_ceph_context, cmdmap, "sure", sure) || + if (!cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure) || sure != "--yes-i-really-mean-it") { ss << "please specify '--yes-i-really-mean-it' if you " << "really, **really** want to set feature '" @@ -688,7 +688,6 @@ bool MonmapMonitor::prepare_command(MonOpRequestRef op) << "persistent = " << pending_map.persistent_features // output optional nevertheless, for auditing purposes. << ", optional = " << pending_map.optional_features << dendl; - } else { ss << "unknown command " << prefix; err = -EINVAL; diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index aee5c8806c5..60b2e9bc27b 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -4274,10 +4274,10 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("plain")); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format, string("plain")); boost::scoped_ptr f(Formatter::create(format)); if (prefix == "osd stat") { @@ -4302,7 +4302,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) epoch_t epoch = 0; int64_t epochnum; - cmd_getval(g_ceph_context, cmdmap, "epoch", epochnum, (int64_t)osdmap.get_epoch()); + cmd_getval_throws(g_ceph_context, cmdmap, "epoch", epochnum, (int64_t)osdmap.get_epoch()); epoch = epochnum; bufferlist osdmap_bl; @@ -4366,7 +4366,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) rdata.append(ds); } else if (prefix == "osd tree") { vector states; - cmd_getval(g_ceph_context, cmdmap, "states", states); + cmd_getval_throws(g_ceph_context, cmdmap, "states", states); unsigned filter = 0; for (auto& s : states) { if (s == "up") { @@ -4418,7 +4418,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) ss << p->get_crush_version(); } else if (prefix == "osd ls-tree") { string bucket_name; - cmd_getval(g_ceph_context, cmdmap, "name", bucket_name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", bucket_name); set osds; r = p->get_osds_by_bucket_name(bucket_name, &osds); if (r == -ENOENT) { @@ -4480,7 +4480,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) goto reply; } else if (prefix == "osd find") { int64_t osd; - if (!cmd_getval(g_ceph_context, cmdmap, "id", osd)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", osd)) { ss << "unable to parse osd id value '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; r = -EINVAL; @@ -4492,7 +4492,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) goto reply; } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format); boost::scoped_ptr f(Formatter::create(format, "json-pretty", "json-pretty")); f->open_object_section("osd_location"); f->dump_int("osd", osd); @@ -4507,7 +4507,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } else if (prefix == "osd metadata") { int64_t osd = -1; if (cmd_vartype_stringify(cmdmap["id"]).size() && - !cmd_getval(g_ceph_context, cmdmap, "id", osd)) { + !cmd_getval_throws(g_ceph_context, cmdmap, "id", osd)) { ss << "unable to parse osd id value '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; r = -EINVAL; @@ -4519,7 +4519,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) goto reply; } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format); boost::scoped_ptr f(Formatter::create(format, "json-pretty", "json-pretty")); if (osd >= 0) { f->open_object_section("osd_metadata"); @@ -4560,15 +4560,15 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) if (!f) f.reset(Formatter::create("json-pretty")); string field; - cmd_getval(g_ceph_context, cmdmap, "property", field); + cmd_getval_throws(g_ceph_context, cmdmap, "property", field); count_metadata(field, f.get()); f->flush(rdata); r = 0; } else if (prefix == "osd map") { string poolstr, objstr, namespacestr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); - cmd_getval(g_ceph_context, cmdmap, "object", objstr); - cmd_getval(g_ceph_context, cmdmap, "nspace", namespacestr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "object", objstr); + cmd_getval_throws(g_ceph_context, cmdmap, "nspace", namespacestr); int64_t pool = osdmap.lookup_pg_pool_name(poolstr.c_str()); if (pool < 0) { @@ -4622,7 +4622,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } else if (prefix == "pg map") { pg_t pgid; string pgidstr; - cmd_getval(g_ceph_context, cmdmap, "pgid", pgidstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pgid", pgidstr); if (!pgid.parse(pgidstr.c_str())) { ss << "invalid pgid '" << pgidstr << "'"; r = -EINVAL; @@ -4699,7 +4699,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } } else if (prefix == "osd lspools") { int64_t auid; - cmd_getval(g_ceph_context, cmdmap, "auid", auid, int64_t(0)); + cmd_getval_throws(g_ceph_context, cmdmap, "auid", auid, int64_t(0)); if (f) f->open_array_section("pools"); for (map::iterator p = osdmap.pools.begin(); @@ -4750,7 +4750,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } else if (prefix == "osd pool ls") { string detail; - cmd_getval(g_ceph_context, cmdmap, "detail", detail); + cmd_getval_throws(g_ceph_context, cmdmap, "detail", detail); if (!f && detail == "detail") { ostringstream ss; osdmap.print_pools(ss); @@ -4782,7 +4782,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } else if (prefix == "osd crush get-tunable") { string tunable; - cmd_getval(g_ceph_context, cmdmap, "tunable", tunable); + cmd_getval_throws(g_ceph_context, cmdmap, "tunable", tunable); ostringstream rss; if (f) f->open_object_section("tunable"); @@ -4805,7 +4805,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } else if (prefix == "osd pool get") { string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool = osdmap.lookup_pg_pool_name(poolstr.c_str()); if (pool < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -4815,7 +4815,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) const pg_pool_t *p = osdmap.get_pg_pool(pool); string var; - cmd_getval(g_ceph_context, cmdmap, "var", var); + cmd_getval_throws(g_ceph_context, cmdmap, "var", var); typedef std::map choices_map_t; const choices_map_t ALL_CHOICES = { @@ -5255,7 +5255,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) osdmap, f.get(), &ss, &rdata); } else if (prefix == "osd pool get-quota") { string pool_name; - cmd_getval(g_ceph_context, cmdmap, "pool", pool_name); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", pool_name); int64_t poolid = osdmap.lookup_pg_pool_name(pool_name); if (poolid < 0) { @@ -5306,7 +5306,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } } else if (prefix == "osd crush rule ls-by-class") { string class_name; - cmd_getval(g_ceph_context, cmdmap, "class", class_name); + cmd_getval_throws(g_ceph_context, cmdmap, "class", class_name); if (class_name.empty()) { ss << "no class specified"; r = -EINVAL; @@ -5334,9 +5334,9 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } } else if (prefix == "osd crush rule dump") { string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); string format; - cmd_getval(g_ceph_context, cmdmap, "format", format); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format); boost::scoped_ptr f(Formatter::create(format, "json-pretty", "json-pretty")); if (name == "") { f->open_array_section("rules"); @@ -5357,7 +5357,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) rdata.append(rs.str()); } else if (prefix == "osd crush dump") { string format; - cmd_getval(g_ceph_context, cmdmap, "format", format); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format); boost::scoped_ptr f(Formatter::create(format, "json-pretty", "json-pretty")); f->open_object_section("crush_map"); osdmap.crush->dump(f.get()); @@ -5368,7 +5368,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) rdata.append(rs.str()); } else if (prefix == "osd crush show-tunables") { string format; - cmd_getval(g_ceph_context, cmdmap, "format", format); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format); boost::scoped_ptr f(Formatter::create(format, "json-pretty", "json-pretty")); f->open_object_section("crush_map_tunables"); osdmap.crush->dump_tunables(f.get()); @@ -5379,7 +5379,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) rdata.append(rs.str()); } else if (prefix == "osd crush tree") { string shadow; - cmd_getval(g_ceph_context, cmdmap, "shadow", shadow); + cmd_getval_throws(g_ceph_context, cmdmap, "shadow", shadow); bool show_shadow = shadow == "--show-shadow"; boost::scoped_ptr f(Formatter::create(format)); if (f) { @@ -5398,7 +5398,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) } } else if (prefix == "osd crush ls") { string name; - if (!cmd_getval(g_ceph_context, cmdmap, "node", name)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "node", name)) { ss << "no node specified"; r = -EINVAL; goto reply; @@ -5442,7 +5442,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) f->flush(rdata); } else if (prefix == "osd crush class ls-osd") { string name; - cmd_getval(g_ceph_context, cmdmap, "class", name); + cmd_getval_throws(g_ceph_context, cmdmap, "class", name); set osds; osdmap.crush->get_devices_by_class(name, &osds); if (f) { @@ -5511,7 +5511,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) f->flush(rdata); } else if (prefix == "osd erasure-code-profile get") { string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); if (!osdmap.has_erasure_code_profile(name)) { ss << "unknown erasure code profile '" << name << "'"; r = -ENOENT; @@ -5539,11 +5539,11 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op) boost::scoped_ptr f(Formatter::create(format, "json-pretty", "json-pretty")); string pool_name; - cmd_getval(g_ceph_context, cmdmap, "pool", pool_name); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", pool_name); string app; - cmd_getval(g_ceph_context, cmdmap, "app", app); + cmd_getval_throws(g_ceph_context, cmdmap, "app", app); string key; - cmd_getval(g_ceph_context, cmdmap, "key", key); + cmd_getval_throws(g_ceph_context, cmdmap, "key", key); if (pool_name.empty()) { // all @@ -6425,14 +6425,14 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, stringstream& ss) { string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool = osdmap.lookup_pg_pool_name(poolstr.c_str()); if (pool < 0) { ss << "unrecognized pool '" << poolstr << "'"; return -ENOENT; } string var; - cmd_getval(g_ceph_context, cmdmap, "var", var); + cmd_getval_throws(g_ceph_context, cmdmap, "var", var); pg_pool_t p = *osdmap.get_pg_pool(pool); if (pending_inc.new_pools.count(pool)) @@ -6567,7 +6567,7 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, return r; } string force; - cmd_getval(g_ceph_context,cmdmap, "force", force); + cmd_getval_throws(g_ceph_context,cmdmap, "force", force); if (p.cache_mode != pg_pool_t::CACHEMODE_NONE && force != "--yes-i-really-mean-it") { 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."; @@ -6634,7 +6634,7 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, } else if (var == "hashpspool") { uint64_t flag = pg_pool_t::get_flag_by_name(var); string force; - cmd_getval(g_ceph_context, cmdmap, "force", force); + cmd_getval_throws(g_ceph_context, cmdmap, "force", force); if (force != "--yes-i-really-mean-it") { ss << "are you SURE? this will remap all placement groups in this pool," " this triggers large data movement," @@ -6930,7 +6930,7 @@ int OSDMonitor::prepare_command_pool_application(const string &prefix, stringstream& ss) { string pool_name; - cmd_getval(g_ceph_context, cmdmap, "pool", pool_name); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", pool_name); int64_t pool = osdmap.lookup_pg_pool_name(pool_name.c_str()); if (pool < 0) { ss << "unrecognized pool '" << pool_name << "'"; @@ -6943,7 +6943,7 @@ int OSDMonitor::prepare_command_pool_application(const string &prefix, } string app; - cmd_getval(g_ceph_context, cmdmap, "app", app); + cmd_getval_throws(g_ceph_context, cmdmap, "app", app); bool app_exists = (p.application_metadata.count(app) > 0); if (boost::algorithm::ends_with(prefix, "enable")) { @@ -6958,7 +6958,7 @@ int OSDMonitor::prepare_command_pool_application(const string &prefix, } string force; - cmd_getval(g_ceph_context, cmdmap, "force", force); + cmd_getval_throws(g_ceph_context, cmdmap, "force", force); if (!app_exists && !p.application_metadata.empty() && force != "--yes-i-really-mean-it") { @@ -6986,7 +6986,7 @@ int OSDMonitor::prepare_command_pool_application(const string &prefix, } else if (boost::algorithm::ends_with(prefix, "disable")) { string force; - cmd_getval(g_ceph_context, cmdmap, "force", force); + cmd_getval_throws(g_ceph_context, cmdmap, "force", force); if (force != "--yes-i-really-mean-it") { ss << "Are you SURE? Disabling an application within a pool might result " @@ -7017,7 +7017,7 @@ int OSDMonitor::prepare_command_pool_application(const string &prefix, } string key; - cmd_getval(g_ceph_context, cmdmap, "key", key); + cmd_getval_throws(g_ceph_context, cmdmap, "key", key); if (key.empty()) { ss << "key must be provided"; @@ -7039,7 +7039,7 @@ int OSDMonitor::prepare_command_pool_application(const string &prefix, } string value; - cmd_getval(g_ceph_context, cmdmap, "value", value); + cmd_getval_throws(g_ceph_context, cmdmap, "value", value); if (value.length() > MAX_POOL_APPLICATION_LENGTH) { ss << "value '" << value << "' too long; max length " << MAX_POOL_APPLICATION_LENGTH; @@ -7057,7 +7057,7 @@ int OSDMonitor::prepare_command_pool_application(const string &prefix, } string key; - cmd_getval(g_ceph_context, cmdmap, "key", key); + cmd_getval_throws(g_ceph_context, cmdmap, "key", key); auto it = p.application_metadata[app].find(key); if (it == p.application_metadata[app].end()) { ss << "application '" << app << "' on pool '" << pool_name @@ -7372,7 +7372,7 @@ int OSDMonitor::prepare_command_osd_new( * If `id` is specified, and the osd has been previously marked * as destroyed, then the `id` will be reused. */ - if (!cmd_getval(g_ceph_context, cmdmap, "uuid", uuidstr)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "uuid", uuidstr)) { ss << "requires the OSD's UUID to be specified."; return -EINVAL; } else if (!uuid.parse(uuidstr.c_str())) { @@ -7380,7 +7380,7 @@ int OSDMonitor::prepare_command_osd_new( return -EINVAL; } - if (cmd_getval(g_ceph_context, cmdmap, "id", id) && + if (cmd_getval_throws(g_ceph_context, cmdmap, "id", id) && (id < 0)) { ss << "invalid OSD id; must be greater or equal than zero."; return -EINVAL; @@ -7626,7 +7626,7 @@ static int parse_reweights(CephContext *cct, map* weights) { string weights_str; - if (!cmd_getval(g_ceph_context, cmdmap, "weights", weights_str)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "weights", weights_str)) { return -EINVAL; } std::replace(begin(weights_str), end(weights_str), '\'', '"'); @@ -7809,11 +7809,11 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, int err = 0; string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("plain")); + cmd_getval_throws(g_ceph_context, cmdmap, "format", format, string("plain")); boost::scoped_ptr f(Formatter::create(format)); string prefix; - cmd_getval(g_ceph_context, cmdmap, "prefix", prefix); + cmd_getval_throws(g_ceph_context, cmdmap, "prefix", prefix); int64_t osdid; string name; @@ -7821,7 +7821,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, if (prefix != "osd pg-temp" && prefix != "osd pg-upmap" && prefix != "osd pg-upmap-items") { // avoid commands with non-int id arg - osdid_present = cmd_getval(g_ceph_context, cmdmap, "id", osdid); + osdid_present = cmd_getval_throws(g_ceph_context, cmdmap, "id", osdid); } if (osdid_present) { ostringstream oss; @@ -7880,7 +7880,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } int64_t prior_version = 0; - if (cmd_getval(g_ceph_context, cmdmap, "prior_version", prior_version)) { + if (cmd_getval_throws(g_ceph_context, cmdmap, "prior_version", prior_version)) { if (prior_version == osdmap.get_crush_version() - 1) { // see if we are a resend of the last update. this is imperfect // (multiple racing updaters may not both get reliable success) @@ -7975,14 +7975,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } string device_class; - if (!cmd_getval(g_ceph_context, cmdmap, "class", device_class)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "class", device_class)) { err = -EINVAL; // no value! goto reply; } bool stop = false; vector idvec; - cmd_getval(g_ceph_context, cmdmap, "ids", idvec); + cmd_getval_throws(g_ceph_context, cmdmap, "ids", idvec); CrushWrapper newcrush; _get_pending_crush(newcrush); set updated; @@ -8058,7 +8058,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd crush rm-device-class") { bool stop = false; vector idvec; - cmd_getval(g_ceph_context, cmdmap, "ids", idvec); + cmd_getval_throws(g_ceph_context, cmdmap, "ids", idvec); CrushWrapper newcrush; _get_pending_crush(newcrush); set updated; @@ -8118,11 +8118,11 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } } else if (prefix == "osd crush class rename") { string srcname, dstname; - if (!cmd_getval(g_ceph_context, cmdmap, "srcname", srcname)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "srcname", srcname)) { err = -EINVAL; goto reply; } - if (!cmd_getval(g_ceph_context, cmdmap, "dstname", dstname)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "dstname", dstname)) { err = -EINVAL; goto reply; } @@ -8151,8 +8151,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd crush add-bucket") { // os crush add-bucket string name, typestr; - cmd_getval(g_ceph_context, cmdmap, "name", name); - cmd_getval(g_ceph_context, cmdmap, "type", typestr); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "type", typestr); if (!_have_pending_crush() && _get_stable_crush().name_exists(name)) { @@ -8199,8 +8199,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto update; } else if (prefix == "osd crush rename-bucket") { string srcname, dstname; - cmd_getval(g_ceph_context, cmdmap, "srcname", srcname); - cmd_getval(g_ceph_context, cmdmap, "dstname", dstname); + cmd_getval_throws(g_ceph_context, cmdmap, "srcname", srcname); + cmd_getval_throws(g_ceph_context, cmdmap, "dstname", dstname); err = crush_rename_bucket(srcname, dstname, &ss); if (err == -EALREADY) // equivalent to success for idempotency @@ -8232,14 +8232,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string poolname, mode; - cmd_getval(g_ceph_context, cmdmap, "pool", poolname); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolname); pool = osdmap.lookup_pg_pool_name(poolname.c_str()); if (pool < 0) { ss << "pool '" << poolname << "' not found"; err = -ENOENT; goto reply; } - cmd_getval(g_ceph_context, cmdmap, "mode", mode); + cmd_getval_throws(g_ceph_context, cmdmap, "mode", mode); if (mode != "flat" && mode != "positional") { ss << "unrecognized weight-set mode '" << mode << "'"; err = -EINVAL; @@ -8262,7 +8262,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, int64_t pool; if (prefix == "osd crush weight-set rm") { string poolname; - cmd_getval(g_ceph_context, cmdmap, "pool", poolname); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolname); pool = osdmap.lookup_pg_pool_name(poolname.c_str()); if (pool < 0) { ss << "pool '" << poolname << "' not found"; @@ -8281,9 +8281,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, prefix == "osd crush weight-set reweight-compat") { string poolname, item; vector weight; - cmd_getval(g_ceph_context, cmdmap, "pool", poolname); - cmd_getval(g_ceph_context, cmdmap, "item", item); - cmd_getval(g_ceph_context, cmdmap, "weight", weight); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolname); + cmd_getval_throws(g_ceph_context, cmdmap, "item", item); + cmd_getval_throws(g_ceph_context, cmdmap, "weight", weight); CrushWrapper newcrush; _get_pending_crush(newcrush); int64_t pool; @@ -8345,7 +8345,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } double weight; - if (!cmd_getval(g_ceph_context, cmdmap, "weight", weight)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "weight", weight)) { ss << "unable to parse weight value '" << cmd_vartype_stringify(cmdmap["weight"]) << "'"; err = -EINVAL; @@ -8354,7 +8354,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, string args; vector argvec; - cmd_getval(g_ceph_context, cmdmap, "args", argvec); + cmd_getval_throws(g_ceph_context, cmdmap, "args", argvec); map loc; CrushWrapper::parse_loc_map(argvec, &loc); @@ -8413,7 +8413,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } double weight; - if (!cmd_getval(g_ceph_context, cmdmap, "weight", weight)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "weight", weight)) { ss << "unable to parse weight value '" << cmd_vartype_stringify(cmdmap["weight"]) << "'"; err = -EINVAL; @@ -8422,7 +8422,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, string args; vector argvec; - cmd_getval(g_ceph_context, cmdmap, "args", argvec); + cmd_getval_throws(g_ceph_context, cmdmap, "args", argvec); map loc; CrushWrapper::parse_loc_map(argvec, &loc); @@ -8456,8 +8456,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, string args; vector argvec; - cmd_getval(g_ceph_context, cmdmap, "name", name); - cmd_getval(g_ceph_context, cmdmap, "args", argvec); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "args", argvec); map loc; CrushWrapper::parse_loc_map(argvec, &loc); @@ -8494,9 +8494,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } while (false); } else if (prefix == "osd crush swap-bucket") { string source, dest, force; - cmd_getval(g_ceph_context, cmdmap, "source", source); - cmd_getval(g_ceph_context, cmdmap, "dest", dest); - cmd_getval(g_ceph_context, cmdmap, "force", force); + cmd_getval_throws(g_ceph_context, cmdmap, "source", source); + cmd_getval_throws(g_ceph_context, cmdmap, "dest", dest); + cmd_getval_throws(g_ceph_context, cmdmap, "force", force); CrushWrapper newcrush; _get_pending_crush(newcrush); if (!newcrush.name_exists(source)) { @@ -8542,9 +8542,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd crush link") { // osd crush link [ ...] string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); vector argvec; - cmd_getval(g_ceph_context, cmdmap, "args", argvec); + cmd_getval_throws(g_ceph_context, cmdmap, "args", argvec); map loc; CrushWrapper::parse_loc_map(argvec, &loc); @@ -8605,7 +8605,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, _get_pending_crush(newcrush); string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); if (!osdmap.crush->name_exists(name)) { err = 0; @@ -8625,7 +8625,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, bool unlink_only = prefix == "osd crush unlink"; string ancestor_str; - if (cmd_getval(g_ceph_context, cmdmap, "ancestor", ancestor_str)) { + if (cmd_getval_throws(g_ceph_context, cmdmap, "ancestor", ancestor_str)) { if (!newcrush.name_exists(ancestor_str)) { err = -ENOENT; ss << "ancestor item '" << ancestor_str @@ -8672,7 +8672,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, _get_pending_crush(newcrush); string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); if (!newcrush.name_exists(name)) { err = -ENOENT; ss << "device '" << name << "' does not appear in the crush map"; @@ -8686,7 +8686,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } double w; - if (!cmd_getval(g_ceph_context, cmdmap, "weight", w)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "weight", w)) { ss << "unable to parse weight value '" << cmd_vartype_stringify(cmdmap["weight"]) << "'"; err = -EINVAL; @@ -8710,7 +8710,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, _get_pending_crush(newcrush); string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); if (!newcrush.name_exists(name)) { err = -ENOENT; ss << "device '" << name << "' does not appear in the crush map"; @@ -8724,7 +8724,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } double w; - if (!cmd_getval(g_ceph_context, cmdmap, "weight", w)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "weight", w)) { ss << "unable to parse weight value '" << cmd_vartype_stringify(cmdmap["weight"]) << "'"; err = -EINVAL; @@ -8748,7 +8748,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, err = 0; string profile; - cmd_getval(g_ceph_context, cmdmap, "profile", profile); + cmd_getval_throws(g_ceph_context, cmdmap, "profile", profile); if (profile == "legacy" || profile == "argonaut") { newcrush.set_tunables_legacy(); } else if (profile == "bobtail") { @@ -8787,10 +8787,10 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, err = 0; string tunable; - cmd_getval(g_ceph_context, cmdmap, "tunable", tunable); + cmd_getval_throws(g_ceph_context, cmdmap, "tunable", tunable); int64_t value = -1; - if (!cmd_getval(g_ceph_context, cmdmap, "value", value)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "value", value)) { err = -EINVAL; ss << "failed to parse integer value " << cmd_vartype_stringify(cmdmap["value"]); goto reply; @@ -8824,10 +8824,10 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd crush rule create-simple") { string name, root, type, mode; - cmd_getval(g_ceph_context, cmdmap, "name", name); - cmd_getval(g_ceph_context, cmdmap, "root", root); - cmd_getval(g_ceph_context, cmdmap, "type", type); - cmd_getval(g_ceph_context, cmdmap, "mode", mode); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "root", root); + cmd_getval_throws(g_ceph_context, cmdmap, "type", type); + cmd_getval_throws(g_ceph_context, cmdmap, "mode", mode); if (mode == "") mode = "firstn"; @@ -8865,10 +8865,10 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd crush rule create-replicated") { string name, root, type, device_class; - cmd_getval(g_ceph_context, cmdmap, "name", name); - cmd_getval(g_ceph_context, cmdmap, "root", root); - cmd_getval(g_ceph_context, cmdmap, "type", type); - cmd_getval(g_ceph_context, cmdmap, "class", device_class); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "root", root); + cmd_getval_throws(g_ceph_context, cmdmap, "type", type); + cmd_getval_throws(g_ceph_context, cmdmap, "class", device_class); if (!device_class.empty()) { if (osdmap.require_osd_release < CEPH_RELEASE_LUMINOUS) { @@ -8914,7 +8914,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd erasure-code-profile rm") { string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); if (erasure_code_profile_in_use(pending_inc.new_pools, name, &ss)) goto wait; @@ -8945,9 +8945,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd erasure-code-profile set") { string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); vector profile; - cmd_getval(g_ceph_context, cmdmap, "profile", profile); + cmd_getval_throws(g_ceph_context, cmdmap, "profile", profile); bool force; if (profile.size() > 0 && profile.back() == "--force") { profile.pop_back(); @@ -9027,9 +9027,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, if (err) goto reply; string name, poolstr; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); string profile; - cmd_getval(g_ceph_context, cmdmap, "profile", profile); + cmd_getval_throws(g_ceph_context, cmdmap, "profile", profile); if (profile == "") profile = "default"; if (profile == "default") { @@ -9083,7 +9083,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd crush rule rm") { string name; - cmd_getval(g_ceph_context, cmdmap, "name", name); + cmd_getval_throws(g_ceph_context, cmdmap, "name", name); if (!osdmap.crush->rule_exists(name)) { ss << "rule " << name << " does not exist"; @@ -9127,8 +9127,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd crush rule rename") { string srcname; string dstname; - cmd_getval(g_ceph_context, cmdmap, "srcname", srcname); - cmd_getval(g_ceph_context, cmdmap, "dstname", dstname); + cmd_getval_throws(g_ceph_context, cmdmap, "srcname", srcname); + cmd_getval_throws(g_ceph_context, cmdmap, "dstname", dstname); if (srcname.empty() || dstname.empty()) { ss << "must specify both source rule name and destination rule name"; err = -EINVAL; @@ -9165,7 +9165,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd setmaxosd") { int64_t newmax; - if (!cmd_getval(g_ceph_context, cmdmap, "newmax", newmax)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "newmax", newmax)) { ss << "unable to parse 'newmax' value '" << cmd_vartype_stringify(cmdmap["newmax"]) << "'"; err = -EINVAL; @@ -9213,7 +9213,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } double n; - if (!cmd_getval(g_ceph_context, cmdmap, "ratio", n)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "ratio", n)) { ss << "unable to parse 'ratio' value '" << cmd_vartype_stringify(cmdmap["ratio"]) << "'"; err = -EINVAL; @@ -9238,7 +9238,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string v; - cmd_getval(g_ceph_context, cmdmap, "version", v); + cmd_getval_throws(g_ceph_context, cmdmap, "version", v); int vno = ceph_release_from_name(v.c_str()); if (vno <= 0) { ss << "version " << v << " is not recognized"; @@ -9259,7 +9259,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string sure; - cmd_getval(g_ceph_context, cmdmap, "sure", sure); + cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure); if (sure != "--yes-i-really-mean-it") { FeatureMap m; mon->get_combined_feature_map(&m); @@ -9311,9 +9311,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd set") { string sure; - cmd_getval(g_ceph_context, cmdmap, "sure", sure); + cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure); string key; - cmd_getval(g_ceph_context, cmdmap, "key", key); + cmd_getval_throws(g_ceph_context, cmdmap, "key", key); if (key == "full") return prepare_set_flag(op, CEPH_OSDMAP_FULL); else if (key == "pause") @@ -9422,7 +9422,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd unset") { string key; - cmd_getval(g_ceph_context, cmdmap, "key", key); + cmd_getval_throws(g_ceph_context, cmdmap, "key", key); if (key == "full") return prepare_unset_flag(op, CEPH_OSDMAP_FULL); else if (key == "pause") @@ -9454,9 +9454,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd require-osd-release") { string release; - cmd_getval(g_ceph_context, cmdmap, "release", release); + cmd_getval_throws(g_ceph_context, cmdmap, "release", release); string sure; - cmd_getval(g_ceph_context, cmdmap, "sure", sure); + cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure); if (!osdmap.test_flag(CEPH_OSDMAP_SORTBITWISE)) { ss << "the sortbitwise flag must be set first"; err = -EPERM; @@ -9515,7 +9515,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, bool verbose = true; vector idvec; - cmd_getval(g_ceph_context, cmdmap, "ids", idvec); + cmd_getval_throws(g_ceph_context, cmdmap, "ids", idvec); for (unsigned j = 0; j < idvec.size() && !stop; j++) { set osds; @@ -9649,7 +9649,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, bool stop = false; vector idvec; - cmd_getval(g_ceph_context, cmdmap, "ids", idvec); + cmd_getval_throws(g_ceph_context, cmdmap, "ids", idvec); for (unsigned j = 0; j < idvec.size() && !stop; j++) { set osds; @@ -9783,7 +9783,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, bool stop = false; vector idvec; - cmd_getval(g_ceph_context, cmdmap, "ids", idvec); + cmd_getval_throws(g_ceph_context, cmdmap, "ids", idvec); for (unsigned j = 0; j < idvec.size() && !stop; j++) { @@ -9927,7 +9927,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } } else if (prefix == "osd pg-temp") { string pgidstr; - if (!cmd_getval(g_ceph_context, cmdmap, "pgid", pgidstr)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "pgid", pgidstr)) { ss << "unable to parse 'pgid' value '" << cmd_vartype_stringify(cmdmap["pgid"]) << "'"; err = -EINVAL; @@ -9952,7 +9952,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, vector id_vec; vector new_pg_temp; - if (!cmd_getval(g_ceph_context, cmdmap, "id", id_vec)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", id_vec)) { ss << "unable to parse 'id' value(s) '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; err = -EINVAL; @@ -9989,7 +9989,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto update; } else if (prefix == "osd primary-temp") { string pgidstr; - if (!cmd_getval(g_ceph_context, cmdmap, "pgid", pgidstr)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "pgid", pgidstr)) { ss << "unable to parse 'pgid' value '" << cmd_vartype_stringify(cmdmap["pgid"]) << "'"; err = -EINVAL; @@ -10008,7 +10008,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } int64_t osd; - if (!cmd_getval(g_ceph_context, cmdmap, "id", osd)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", osd)) { ss << "unable to parse 'id' value '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; err = -EINVAL; @@ -10061,7 +10061,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, if (err < 0) goto reply; string pgidstr; - if (!cmd_getval(g_ceph_context, cmdmap, "pgid", pgidstr)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "pgid", pgidstr)) { ss << "unable to parse 'pgid' value '" << cmd_vartype_stringify(cmdmap["pgid"]) << "'"; err = -EINVAL; @@ -10136,7 +10136,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, case OP_PG_UPMAP: { vector id_vec; - if (!cmd_getval(g_ceph_context, cmdmap, "id", id_vec)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", id_vec)) { ss << "unable to parse 'id' value(s) '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; err = -EINVAL; @@ -10196,7 +10196,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, case OP_PG_UPMAP_ITEMS: { vector id_vec; - if (!cmd_getval(g_ceph_context, cmdmap, "id", id_vec)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", id_vec)) { ss << "unable to parse 'id' value(s) '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; err = -EINVAL; @@ -10278,14 +10278,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto update; } else if (prefix == "osd primary-affinity") { int64_t id; - if (!cmd_getval(g_ceph_context, cmdmap, "id", id)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", id)) { ss << "invalid osd id value '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; err = -EINVAL; goto reply; } double w; - if (!cmd_getval(g_ceph_context, cmdmap, "weight", w)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "weight", w)) { ss << "unable to parse 'weight' value '" << cmd_vartype_stringify(cmdmap["weight"]) << "'"; err = -EINVAL; @@ -10328,14 +10328,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } } else if (prefix == "osd reweight") { int64_t id; - if (!cmd_getval(g_ceph_context, cmdmap, "id", id)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", id)) { ss << "unable to parse osd id value '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; err = -EINVAL; goto reply; } double w; - if (!cmd_getval(g_ceph_context, cmdmap, "weight", w)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "weight", w)) { ss << "unable to parse weight value '" << cmd_vartype_stringify(cmdmap["weight"]) << "'"; err = -EINVAL; @@ -10374,14 +10374,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, return true; } else if (prefix == "osd lost") { int64_t id; - if (!cmd_getval(g_ceph_context, cmdmap, "id", id)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", id)) { ss << "unable to parse osd id value '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; err = -EINVAL; goto reply; } string sure; - if (!cmd_getval(g_ceph_context, cmdmap, "sure", sure) || sure != "--yes-i-really-mean-it") { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure) || sure != "--yes-i-really-mean-it") { ss << "are you SURE? this might mean real, permanent data loss. pass " "--yes-i-really-mean-it if you really do."; err = -EPERM; @@ -10426,7 +10426,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } int64_t id; - if (!cmd_getval(g_ceph_context, cmdmap, "id", id)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "id", id)) { ss << "unable to parse osd id value '" << cmd_vartype_stringify(cmdmap["id"]) << ""; err = -EINVAL; @@ -10439,7 +10439,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } string sure; - if (!cmd_getval(g_ceph_context, cmdmap, "sure", sure) || + if (!cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure) || sure != "--yes-i-really-mean-it") { ss << "Are you SURE? This will mean real, permanent data loss, as well " << "as cephx and lockbox keys. Pass --yes-i-really-mean-it if you " @@ -10545,7 +10545,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, // optional id provided? int64_t id = -1, cmd_id = -1; - if (cmd_getval(g_ceph_context, cmdmap, "id", cmd_id)) { + if (cmd_getval_throws(g_ceph_context, cmdmap, "id", cmd_id)) { if (cmd_id < 0) { ss << "invalid osd id value '" << cmd_id << "'"; err = -EINVAL; @@ -10556,7 +10556,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, uuid_d uuid; string uuidstr; - if (cmd_getval(g_ceph_context, cmdmap, "uuid", uuidstr)) { + if (cmd_getval_throws(g_ceph_context, cmdmap, "uuid", uuidstr)) { if (!uuid.parse(uuidstr.c_str())) { ss << "invalid uuid value '" << uuidstr << "'"; err = -EINVAL; @@ -10623,7 +10623,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, return true; } else if (prefix == "osd blacklist") { string addrstr; - cmd_getval(g_ceph_context, cmdmap, "addr", addrstr); + cmd_getval_throws(g_ceph_context, cmdmap, "addr", addrstr); entity_addr_t addr; if (!addr.parse(addrstr.c_str(), 0)) { ss << "unable to parse address " << addrstr; @@ -10632,12 +10632,12 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else { string blacklistop; - cmd_getval(g_ceph_context, cmdmap, "blacklistop", blacklistop); + cmd_getval_throws(g_ceph_context, cmdmap, "blacklistop", blacklistop); if (blacklistop == "add") { utime_t expires = ceph_clock_now(); double d; // default one hour - cmd_getval(g_ceph_context, cmdmap, "expire", d, + cmd_getval_throws(g_ceph_context, cmdmap, "expire", d, g_conf->mon_osd_blacklist_default_expire); expires += d; @@ -10677,7 +10677,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } } else if (prefix == "osd pool mksnap") { string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool = osdmap.lookup_pg_pool_name(poolstr.c_str()); if (pool < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -10685,7 +10685,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string snapname; - cmd_getval(g_ceph_context, cmdmap, "snap", snapname); + cmd_getval_throws(g_ceph_context, cmdmap, "snap", snapname); const pg_pool_t *p = osdmap.get_pg_pool(pool); if (p->is_unmanaged_snaps_mode()) { ss << "pool " << poolstr << " is in unmanaged snaps mode"; @@ -10720,7 +10720,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, return true; } else if (prefix == "osd pool rmsnap") { string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool = osdmap.lookup_pg_pool_name(poolstr.c_str()); if (pool < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -10728,7 +10728,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string snapname; - cmd_getval(g_ceph_context, cmdmap, "snap", snapname); + cmd_getval_throws(g_ceph_context, cmdmap, "snap", snapname); const pg_pool_t *p = osdmap.get_pg_pool(pool); if (p->is_unmanaged_snaps_mode()) { ss << "pool " << poolstr << " is in unmanaged snaps mode"; @@ -10761,16 +10761,16 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd pool create") { int64_t pg_num; int64_t pgp_num; - cmd_getval(g_ceph_context, cmdmap, "pg_num", pg_num, int64_t(0)); - cmd_getval(g_ceph_context, cmdmap, "pgp_num", pgp_num, pg_num); + cmd_getval_throws(g_ceph_context, cmdmap, "pg_num", pg_num, int64_t(0)); + cmd_getval_throws(g_ceph_context, cmdmap, "pgp_num", pgp_num, pg_num); string pool_type_str; - cmd_getval(g_ceph_context, cmdmap, "pool_type", pool_type_str); + cmd_getval_throws(g_ceph_context, cmdmap, "pool_type", pool_type_str); if (pool_type_str.empty()) pool_type_str = g_conf->osd_pool_default_type; string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); 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); @@ -10805,9 +10805,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, bool implicit_rule_creation = false; int64_t expected_num_objects = 0; string rule_name; - cmd_getval(g_ceph_context, cmdmap, "rule", rule_name); + cmd_getval_throws(g_ceph_context, cmdmap, "rule", rule_name); string erasure_code_profile; - cmd_getval(g_ceph_context, cmdmap, "erasure_code_profile", erasure_code_profile); + cmd_getval_throws(g_ceph_context, cmdmap, "erasure_code_profile", erasure_code_profile); if (pool_type == pg_pool_t::TYPE_ERASURE) { if (erasure_code_profile == "") @@ -10841,7 +10841,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, rule_name = poolstr; } } - cmd_getval(g_ceph_context, cmdmap, "expected_num_objects", + cmd_getval_throws(g_ceph_context, cmdmap, "expected_num_objects", expected_num_objects, int64_t(0)); } else { //NOTE:for replicated pool,cmd_map will put rule_name to erasure_code_profile field @@ -10858,7 +10858,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } rule_name = erasure_code_profile; } else { // cmd is well-formed - cmd_getval(g_ceph_context, cmdmap, "expected_num_objects", + cmd_getval_throws(g_ceph_context, cmdmap, "expected_num_objects", expected_num_objects, int64_t(0)); } } @@ -10881,7 +10881,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } int64_t fast_read_param; - cmd_getval(g_ceph_context, cmdmap, "fast_read", fast_read_param, int64_t(-1)); + cmd_getval_throws(g_ceph_context, cmdmap, "fast_read", fast_read_param, int64_t(-1)); FastReadType fast_read = FAST_READ_DEFAULT; if (fast_read_param == 0) fast_read = FAST_READ_OFF; @@ -10922,9 +10922,9 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, prefix == "osd pool rm") { // osd pool delete/rm --yes-i-really-really-mean-it string poolstr, poolstr2, sure; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); - cmd_getval(g_ceph_context, cmdmap, "pool2", poolstr2); - cmd_getval(g_ceph_context, cmdmap, "sure", sure); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool2", poolstr2); + cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure); int64_t pool = osdmap.lookup_pg_pool_name(poolstr.c_str()); if (pool < 0) { ss << "pool '" << poolstr << "' does not exist"; @@ -10951,8 +10951,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto update; } else if (prefix == "osd pool rename") { string srcpoolstr, destpoolstr; - cmd_getval(g_ceph_context, cmdmap, "srcpool", srcpoolstr); - cmd_getval(g_ceph_context, cmdmap, "destpool", destpoolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "srcpool", srcpoolstr); + cmd_getval_throws(g_ceph_context, 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()); @@ -11009,7 +11009,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, if (err) goto reply; string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool_id = osdmap.lookup_pg_pool_name(poolstr); if (pool_id < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -11017,7 +11017,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string tierpoolstr; - cmd_getval(g_ceph_context, cmdmap, "tierpool", tierpoolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "tierpool", tierpoolstr); int64_t tierpool_id = osdmap.lookup_pg_pool_name(tierpoolstr); if (tierpool_id < 0) { ss << "unrecognized pool '" << tierpoolstr << "'"; @@ -11035,7 +11035,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, // make sure new tier is empty string force_nonempty; - cmd_getval(g_ceph_context, cmdmap, "force_nonempty", force_nonempty); + cmd_getval_throws(g_ceph_context, cmdmap, "force_nonempty", force_nonempty); const pool_stat_t *pstats = mon->pgservice->get_pool_stat(tierpool_id); if (pstats && pstats->stats.sum.num_objects != 0 && force_nonempty != "--force-nonempty") { @@ -11073,7 +11073,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd tier remove" || prefix == "osd tier rm") { string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool_id = osdmap.lookup_pg_pool_name(poolstr); if (pool_id < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -11081,7 +11081,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string tierpoolstr; - cmd_getval(g_ceph_context, cmdmap, "tierpool", tierpoolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "tierpool", tierpoolstr); int64_t tierpool_id = osdmap.lookup_pg_pool_name(tierpoolstr); if (tierpool_id < 0) { ss << "unrecognized pool '" << tierpoolstr << "'"; @@ -11137,7 +11137,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, if (err) goto reply; string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool_id = osdmap.lookup_pg_pool_name(poolstr); if (pool_id < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -11145,7 +11145,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string overlaypoolstr; - cmd_getval(g_ceph_context, cmdmap, "overlaypool", overlaypoolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "overlaypool", overlaypoolstr); int64_t overlaypool_id = osdmap.lookup_pg_pool_name(overlaypoolstr); if (overlaypool_id < 0) { ss << "unrecognized pool '" << overlaypoolstr << "'"; @@ -11190,7 +11190,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd tier remove-overlay" || prefix == "osd tier rm-overlay") { string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool_id = osdmap.lookup_pg_pool_name(poolstr); if (pool_id < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -11235,7 +11235,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, if (err) goto reply; string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool_id = osdmap.lookup_pg_pool_name(poolstr); if (pool_id < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -11250,7 +11250,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string modestr; - cmd_getval(g_ceph_context, cmdmap, "mode", modestr); + cmd_getval_throws(g_ceph_context, cmdmap, "mode", modestr); pg_pool_t::cache_mode_t mode = pg_pool_t::get_cache_mode_from_str(modestr); if (mode < 0) { ss << "'" << modestr << "' is not a valid cache mode"; @@ -11259,7 +11259,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } string sure; - cmd_getval(g_ceph_context, cmdmap, "sure", sure); + cmd_getval_throws(g_ceph_context, cmdmap, "sure", sure); if ((mode != pg_pool_t::CACHEMODE_WRITEBACK && mode != pg_pool_t::CACHEMODE_NONE && mode != pg_pool_t::CACHEMODE_PROXY && @@ -11385,7 +11385,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, if (err) goto reply; string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool_id = osdmap.lookup_pg_pool_name(poolstr); if (pool_id < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -11393,7 +11393,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } string tierpoolstr; - cmd_getval(g_ceph_context, cmdmap, "tierpool", tierpoolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "tierpool", tierpoolstr); int64_t tierpool_id = osdmap.lookup_pg_pool_name(tierpoolstr); if (tierpool_id < 0) { ss << "unrecognized pool '" << tierpoolstr << "'"; @@ -11410,7 +11410,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } int64_t size = 0; - if (!cmd_getval(g_ceph_context, cmdmap, "size", size)) { + if (!cmd_getval_throws(g_ceph_context, cmdmap, "size", size)) { ss << "unable to parse 'size' value '" << cmd_vartype_stringify(cmdmap["size"]) << "'"; err = -EINVAL; @@ -11475,7 +11475,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, return true; } else if (prefix == "osd pool set-quota") { string poolstr; - cmd_getval(g_ceph_context, cmdmap, "pool", poolstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pool", poolstr); int64_t pool_id = osdmap.lookup_pg_pool_name(poolstr); if (pool_id < 0) { ss << "unrecognized pool '" << poolstr << "'"; @@ -11484,7 +11484,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } string field; - cmd_getval(g_ceph_context, cmdmap, "field", field); + cmd_getval_throws(g_ceph_context, cmdmap, "field", field); if (field != "max_objects" && field != "max_bytes") { ss << "unrecognized field '" << field << "'; should be 'max_bytes' or 'max_objects'"; err = -EINVAL; @@ -11493,7 +11493,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, // val could contain unit designations, so we treat as a string string val; - cmd_getval(g_ceph_context, cmdmap, "val", val); + cmd_getval_throws(g_ceph_context, cmdmap, "val", val); string tss; int64_t value; if (field == "max_objects") { @@ -11608,7 +11608,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, } else if (prefix == "osd force-create-pg") { pg_t pgid; string pgidstr; - cmd_getval(g_ceph_context, cmdmap, "pgid", pgidstr); + cmd_getval_throws(g_ceph_context, cmdmap, "pgid", pgidstr); if (!pgid.parse(pgidstr.c_str())) { ss << "invalid pgid '" << pgidstr << "'"; err = -EINVAL;