mon/OSDMonitor: use generic CrushWrapper::parse_loc_map helper

Signed-off-by: Sage Weil <sage@inktank.com>
This commit is contained in:
Sage Weil 2013-10-29 16:37:59 -07:00
parent 8f48906db7
commit 0903f3fa46
2 changed files with 4 additions and 21 deletions

View File

@ -2854,22 +2854,6 @@ int OSDMonitor::parse_osd_id(const char *s, stringstream *pss)
return id;
}
void OSDMonitor::parse_loc_map(const vector<string>& args, map<string,string> *ploc)
{
for (unsigned i = 0; i < args.size(); ++i) {
const char *s = args[i].c_str();
const char *pos = strchr(s, '=');
if (!pos)
break;
string key(s, 0, pos-s);
string value(pos+1);
if (value.length())
(*ploc)[key] = value;
else
ploc->erase(key);
}
}
int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
stringstream& ss)
{
@ -3221,7 +3205,7 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
vector<string> argvec;
cmd_getval(g_ceph_context, cmdmap, "args", argvec);
map<string,string> loc;
parse_loc_map(argvec, &loc);
CrushWrapper::parse_loc_map(argvec, &loc);
if (prefix == "osd crush set"
&& !_get_stable_crush().item_exists(id)) {
@ -3283,7 +3267,7 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
vector<string> argvec;
cmd_getval(g_ceph_context, cmdmap, "args", argvec);
map<string,string> loc;
parse_loc_map(argvec, &loc);
CrushWrapper::parse_loc_map(argvec, &loc);
dout(0) << "create-or-move crush item name '" << name << "' initial_weight " << weight
<< " at location " << loc << dendl;
@ -3317,7 +3301,7 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
cmd_getval(g_ceph_context, cmdmap, "name", name);
cmd_getval(g_ceph_context, cmdmap, "args", argvec);
map<string,string> loc;
parse_loc_map(argvec, &loc);
CrushWrapper::parse_loc_map(argvec, &loc);
dout(0) << "moving crush item name '" << name << "' to location " << loc << dendl;
CrushWrapper newcrush;
@ -3353,7 +3337,7 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
vector<string> argvec;
cmd_getval(g_ceph_context, cmdmap, "args", argvec);
map<string,string> loc;
parse_loc_map(argvec, &loc);
CrushWrapper::parse_loc_map(argvec, &loc);
if (!osdmap.crush->name_exists(name)) {
err = -ENOENT;

View File

@ -323,7 +323,6 @@ private:
void tick(); // check state, take actions
int parse_osd_id(const char *s, stringstream *pss);
void parse_loc_map(const vector<string>& args, map<string,string> *ploc);
void get_health(list<pair<health_status_t,string> >& summary,
list<pair<health_status_t,string> > *detail) const;