From: Sage Weil Date: Mon, 26 Nov 2018 17:49:54 +0000 (-0600) Subject: monmaptool: add --addv argument to pass in addrvec directly X-Git-Tag: v14.1.0~484^2~76 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7ff8fc739744e869d875a23339a3c13aa2022a17;p=ceph.git monmaptool: add --addv argument to pass in addrvec directly Signed-off-by: Sage Weil --- diff --git a/src/tools/monmaptool.cc b/src/tools/monmaptool.cc index 19a5fc6fa0f..222d5b144d8 100644 --- a/src/tools/monmaptool.cc +++ b/src/tools/monmaptool.cc @@ -187,6 +187,7 @@ int main(int argc, const char **argv) bool generate = false; bool filter = false; map add; + map addv; list rm; list features; @@ -221,6 +222,19 @@ int main(int argc, const char **argv) add[name] = addr; modified = true; i = args.erase(i); + } else if (ceph_argparse_flag(args, i, "--addv", (char*)NULL)) { + string name = *i; + i = args.erase(i); + if (i == args.end()) + usage(); + entity_addrvec_t addrs; + if (!addrs.parse(*i)) { + cerr << me << ": invalid ip:port '" << *i << "'" << std::endl; + return -1; + } + addv[name] = addrs; + modified = true; + i = args.erase(i); } else if (ceph_argparse_witharg(args, i, &val, "--rm", (char*)NULL)) { rm.push_back(val); modified = true; @@ -384,6 +398,17 @@ int main(int argc, const char **argv) } monmap.add(p.first, addrs); } + for (auto& p : addv) { + if (monmap.contains(p.first)) { + cerr << me << ": map already contains mon." << p.first << std::endl; + usage(); + } + if (monmap.contains(p.second)) { + cerr << me << ": map already contains " << p.second << std::endl; + usage(); + } + monmap.add(p.first, p.second); + } for (auto& p : rm) { cout << me << ": removing " << p << std::endl; if (!monmap.contains(p)) {