]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/ceph_argparse: parse_ip_port_vec returns addrvecs, not addrds
authorSage Weil <sage@redhat.com>
Thu, 10 Jan 2019 18:32:42 +0000 (12:32 -0600)
committerSage Weil <sage@redhat.com>
Wed, 16 Jan 2019 14:33:03 +0000 (08:33 -0600)
No functional change yet.

Signed-off-by: Sage Weil <sage@redhat.com>
src/common/ceph_argparse.cc
src/common/ceph_argparse.h
src/mon/MonMap.cc

index 13d2cfc1ed620dc15fa4ff46042f556e6944f5bd..3de9f091bdefff961e6a5676bcf74bb8aa8f2231 100644 (file)
@@ -201,7 +201,8 @@ void ceph_arg_value_type(const char * nextargstr, bool *bool_option, bool *bool_
   return;
 }
 
-bool parse_ip_port_vec(const char *s, vector<entity_addr_t>& vec, int type)
+
+bool parse_ip_port_vec(const char *s, vector<entity_addrvec_t>& vec, int type)
 {
   const char *p = s;
   const char *end = p + strlen(p);
@@ -213,7 +214,7 @@ bool parse_ip_port_vec(const char *s, vector<entity_addr_t>& vec, int type)
       return false;
     }
     //cout << " got " << a << ", rest is '" << p << "'" << std::endl;
-    vec.push_back(a);
+    vec.push_back(entity_addrvec_t(a));
     while (*p == ',' || *p == ' ' || *p == ';')
       p++;
   }
index af2955168450c1c1a8fde9fd8e56843ad812a569..214b3dfb6727f2282b89e0fb5fa8419242874fa8 100644 (file)
@@ -48,7 +48,7 @@ extern void argv_to_vec(int argc, const char **argv,
 extern void vec_to_argv(const char *argv0, std::vector<const char*>& args,
                        int *argc, const char ***argv);
 
-extern bool parse_ip_port_vec(const char *s, std::vector<entity_addr_t>& vec,
+extern bool parse_ip_port_vec(const char *s, std::vector<entity_addrvec_t>& vec,
                              int type=0);
 bool ceph_argparse_double_dash(std::vector<const char*> &args,
        std::vector<const char*>::iterator &i);
index a7671671c7033d80432bc67621cfe752a0f15803..0d25f72b506224de083cabbc89f0bb0ed26cadd9 100644 (file)
@@ -434,7 +434,7 @@ int MonMap::init_with_ips(const std::string& ips,
                          bool for_mkfs,
                          const std::string &prefix)
 {
-  vector<entity_addr_t> addrs;
+  vector<entity_addrvec_t> addrs;
   if (!parse_ip_port_vec(
        ips.c_str(), addrs,
        entity_addr_t::TYPE_ANY)) {
@@ -449,7 +449,13 @@ int MonMap::init_with_ips(const std::string& ips,
     string name;
     name = prefix;
     name += n;
-    _add_ambiguous_addr(name, addrs[i], 0, for_mkfs);
+    if (addrs[i].v.size() == 1) {
+      _add_ambiguous_addr(name, addrs[i].front(), 0, for_mkfs);
+    } else {
+      // they specified an addrvec, so let's assume they also specified
+      // the addr *type* and *port*.  (we could possibly improve this?)
+      add(name, addrs[i], 0);
+    }
   }
   return 0;
 }
@@ -463,7 +469,7 @@ int MonMap::init_with_hosts(const std::string& hostlist,
   if (!hosts)
     return -EINVAL;
 
-  vector<entity_addr_t> addrs;
+  vector<entity_addrvec_t> addrs;
   bool success = parse_ip_port_vec(
     hosts, addrs,
     for_mkfs ? entity_addr_t::TYPE_MSGR2 : entity_addr_t::TYPE_ANY);
@@ -478,7 +484,11 @@ int MonMap::init_with_hosts(const std::string& hostlist,
     n[1] = 0;
     string name = prefix;
     name += n;
-    _add_ambiguous_addr(name, addrs[i], 0);
+    if (addrs[i].v.size() == 1) {
+      _add_ambiguous_addr(name, addrs[i].front(), 0);
+    } else {
+      add(name, addrs[i], 0);
+    }
   }
   calc_legacy_ranks();
   return 0;