From ce2d6c2af68c4e869d64b2aa88fe421ef90accbf Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 26 Sep 2015 01:06:36 -0400 Subject: [PATCH] mon: use CephOsdName for osd args instead of CephInt CephOsdName will take either "1" or "osd.1" and generate a JSON 1 (int). Signed-off-by: Sage Weil --- src/mon/MonCommands.h | 14 +++++++------- src/mon/OSDMonitor.cc | 32 ++++++++------------------------ 2 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h index b3d8e14b905ed..36120f991db1d 100644 --- a/src/mon/MonCommands.h +++ b/src/mon/MonCommands.h @@ -468,11 +468,11 @@ COMMAND("osd blocked-by", \ "osd", "r", "cli,rest") COMMAND("osd getmaxosd", "show largest OSD id", "osd", "r", "cli,rest") COMMAND("osd find " \ - "name=id,type=CephInt,range=0", \ + "name=id,type=CephOsdName", \ "find osd in the CRUSH map and show its location", \ "osd", "r", "cli,rest") COMMAND("osd metadata " \ - "name=id,type=CephInt,range=0,req=false", \ + "name=id,type=CephOsdName,req=false", \ "fetch metadata for osd {id} (default all)", \ "osd", "r", "cli,rest") COMMAND("osd map " \ @@ -648,17 +648,17 @@ COMMAND("osd rm " \ "name=ids,type=CephString,n=N", \ "remove osd(s) [...] in", "osd", "rw", "cli,rest") COMMAND("osd reweight " \ - "name=id,type=CephInt,range=0 " \ + "name=id,type=CephOsdName " \ "type=CephFloat,name=weight,range=0.0|1.0", \ "reweight osd to 0.0 < < 1.0", "osd", "rw", "cli,rest") COMMAND("osd pg-temp " \ "name=pgid,type=CephPgid " \ - "name=id,type=CephString,n=N,req=false", \ + "name=id,type=CephOsdName,n=N,req=false", \ "set pg_temp mapping pgid:[ [...]] (developers only)", \ "osd", "rw", "cli,rest") COMMAND("osd primary-temp " \ "name=pgid,type=CephPgid " \ - "name=id,type=CephString", \ + "name=id,type=CephOsdName", \ "set primary_temp mapping pgid:|-1 (developers only)", \ "osd", "rw", "cli,rest") COMMAND("osd primary-affinity " \ @@ -667,13 +667,13 @@ COMMAND("osd primary-affinity " \ "adjust osd primary-affinity from 0.0 <= <= 1.0", \ "osd", "rw", "cli,rest") COMMAND("osd lost " \ - "name=id,type=CephInt,range=0 " \ + "name=id,type=CephOsdName " \ "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \ "mark osd as permanently lost. THIS DESTROYS DATA IF NO MORE REPLICAS EXIST, BE CAREFUL", \ "osd", "rw", "cli,rest") COMMAND("osd create " \ "name=uuid,type=CephUUID,req=false " \ - "name=id,type=CephInt,range=0,req=false", \ + "name=id,type=CephOsdName,req=false", \ "create new osd (with optional UUID and ID)", "osd", "rw", "cli,rest") COMMAND("osd blacklist " \ "name=blacklistop,type=CephChoices,strings=add|rm " \ diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index b7b48927541a2..b84fd20568592 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -6465,7 +6465,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, return true; } - vector id_vec; + vector id_vec; vector new_pg_temp; if (!cmd_getval(g_ceph_context, cmdmap, "id", id_vec)) { ss << "unable to parse 'id' value(s) '" @@ -6473,18 +6473,12 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, err = -EINVAL; goto reply; } - for (unsigned i = 0; i < id_vec.size(); i++) { - int32_t osd = parse_osd_id(id_vec[i].c_str(), &ss); - if (osd < 0) { - err = -EINVAL; - goto reply; - } + for (auto osd : id_vec) { if (!osdmap.exists(osd)) { ss << "osd." << osd << " does not exist"; err = -ENOENT; goto reply; } - new_pg_temp.push_back(osd); } @@ -6512,27 +6506,17 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, goto reply; } - string id; - int32_t osd; - if (!cmd_getval(g_ceph_context, cmdmap, "id", id)) { + int64_t osd; + if (!cmd_getval(g_ceph_context, cmdmap, "id", osd)) { ss << "unable to parse 'id' value '" << cmd_vartype_stringify(cmdmap["id"]) << "'"; err = -EINVAL; goto reply; } - if (strcmp(id.c_str(), "-1")) { - osd = parse_osd_id(id.c_str(), &ss); - if (osd < 0) { - err = -EINVAL; - goto reply; - } - if (!osdmap.exists(osd)) { - ss << "osd." << osd << " does not exist"; - err = -ENOENT; - goto reply; - } - } else { - osd = -1; + if (osd != -1 && !osdmap.exists(osd)) { + ss << "osd." << osd << " does not exist"; + err = -ENOENT; + goto reply; } if (!g_conf->mon_osd_allow_primary_temp) { -- 2.39.5