This allows us to behave when a rank is passed to mon_command(..., target=),
which will call rados_mon_command_target() -> MonClient::start_mon_command
with a (string) target name.
We could make an integer variant of rados_mon_command_target, and do the
int vs string differentiation in python, but this is much easier.
Signed-off-by: Sage Weil <sage@redhat.com>
return;
}
MonCommand *r = new MonCommand(++last_mon_command_tid);
- r->target_name = mon_name;
+
+ // detect/tolerate mon *rank* passed as a string
+ string err;
+ int rank = strict_strtoll(mon_name.c_str(), 10, &err);
+ if (err.size() == 0 && rank >= 0) {
+ ldout(cct,10) << __func__ << " interpreting name '" << mon_name
+ << "' as rank " << rank << dendl;
+ r->target_rank = rank;
+ } else {
+ r->target_name = mon_name;
+ }
r->cmd = cmd;
r->inbl = inbl;
r->poutbl = outbl;