]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
monmaptool: add --addv argument to pass in addrvec directly
authorSage Weil <sage@redhat.com>
Mon, 26 Nov 2018 17:49:54 +0000 (11:49 -0600)
committerSage Weil <sage@redhat.com>
Fri, 21 Dec 2018 21:31:32 +0000 (15:31 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/tools/monmaptool.cc

index 19a5fc6fa0f8f5f92d97cdbb2a979e8c10bc5d15..222d5b144d871d6d9203fb99d27b71bec41b80ed 100644 (file)
@@ -187,6 +187,7 @@ int main(int argc, const char **argv)
   bool generate = false;
   bool filter = false;
   map<string,entity_addr_t> add;
+  map<string,entity_addrvec_t> addv;
   list<string> rm;
   list<feature_op_t> 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)) {