]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: update zone endpoints when creating a new zone
authorOrit Wasserman <owasserm@redhat.com>
Wed, 14 Oct 2015 15:37:33 +0000 (17:37 +0200)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 12 Feb 2016 00:13:11 +0000 (16:13 -0800)
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
src/rgw/rgw_admin.cc
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h

index b82fbeac8905220e1f4564d15d5805ef7a88c820..c3e4877af40fcda799eb070a7a598e2463309cad 100644 (file)
@@ -191,6 +191,7 @@ void _usage()
   cerr << "   --rgw-zonegroup=<zonegroup>   zonegroup name\n";
   cerr << "   --zone=<zone>             zone name\n";
   cerr << "   --rgw-zone=<zone>         zone in which radosgw is running\n";
+  cerr << "   --endpoints=<list>        zone endpoints\n";
   cerr << "   --fix                     besides checking bucket index, will also fix it\n";
   cerr << "   --check-objects           bucket check: rebuilds bucket index according to\n";
   cerr << "                             actual objects state\n";
@@ -1357,6 +1358,7 @@ int main(int argc, char **argv)
   std::string realm_name, realm_id, realm_new_name;
   std::string zone_name, zone_id, zone_new_name;
   std::string zonegroup_name, zonegroup_id, zonegroup_new_name;
+  list<string> endpoints;
   std::string master_url;
   int is_master = false;
   int key_type = KEY_TYPE_UNDEFINED;
@@ -1694,6 +1696,9 @@ int main(int argc, char **argv)
       zone_id = val;
     } else if (ceph_argparse_witharg(args, i, &val, "--zone-new-name", (char*)NULL)) {
       zone_new_name = val;
+    } else if (ceph_argparse_witharg(args, i, &val, "--endpoints", (char*)NULL)) {
+      list<string>::iterator iter;
+      get_str_list(val, endpoints);
     } else if (ceph_argparse_witharg(args, i, &val, "--source-zone", (char*)NULL)) {
       source_zone = val;
     } else if (strncmp(*i, "-", 1) == 0) {
@@ -2635,7 +2640,7 @@ int main(int argc, char **argv)
          cerr << "unable to initialize zone: " << cpp_strerror(-ret) << std::endl;
          return -ret;
        }
-       ret = zonegroup.add_zone(zone, is_master);
+       ret = zonegroup.add_zone(zone, is_master, endpoints);
        if (ret < 0) {
          cerr << "failed to add zone " << zone_name << " to zonegroup " << zonegroup.get_name() << ": "
               << cpp_strerror(-ret) << std::endl;
@@ -2710,7 +2715,7 @@ int main(int argc, char **argv)
            cerr << "ERROR: couldn't init realm:" << cpp_strerror(-ret) << std::endl;
            return ret;
          }
-         ret = zonegroup.add_zone(zone, is_master);
+         ret = zonegroup.add_zone(zone, is_master, endpoints);
          if (ret < 0) {
            cerr << "failed to add zone " << zone_name << " to zonegroup " << zonegroup.get_name()
                 << ": " << cpp_strerror(-ret) << std::endl;
@@ -2882,7 +2887,7 @@ int main(int argc, char **argv)
          return -ret;
        }
 
-       ret = zonegroup.add_zone(zone, is_master);
+       ret = zonegroup.add_zone(zone, is_master, endpoints);
        if (ret < 0) {
          cerr << "failed to update zonegroup: " << cpp_strerror(-ret) << std::endl;
          return -ret;
index ae7c7fc9e28ce87ecea58e2ad46c688d7002c1c3..eb063b6519eb8bc09bea6dd7115fc0d9ebbdfc0d 100644 (file)
@@ -229,7 +229,7 @@ int RGWZoneGroup::equals(const string& other_zonegroup) const
   return (id  == other_zonegroup);
 }
 
-int RGWZoneGroup::add_zone(const RGWZoneParams& zone_params, bool is_master)
+int RGWZoneGroup::add_zone(const RGWZoneParams& zone_params, bool is_master, const list<string>& endpoints)
 {
   if (is_master) {
     if (!master_zone.empty() && master_zone != zone_params.get_id()) {
@@ -245,7 +245,9 @@ int RGWZoneGroup::add_zone(const RGWZoneParams& zone_params, bool is_master)
   RGWZone& zone = zones[zone_params.get_id()];
   zone.name = zone_params.get_name();
   zone.id = zone_params.get_id();
-
+  if (!endpoints.empty()) {
+    zone.endpoints = endpoints;
+  }
   return update();
 }
 
index 03f524f6773d8b7410a258b3f03390bff595a19b..c3eed5a5eda6f27ae842c2a2d4eee06554ef88fc 100644 (file)
@@ -1124,7 +1124,7 @@ struct RGWZoneGroup : public RGWSystemMetaObj {
 
   int create_default(bool old_format = false);
   int equals(const string& other_zonegroup) const;
-  int add_zone(const RGWZoneParams& zone_params, bool is_master);
+  int add_zone(const RGWZoneParams& zone_params, bool is_master, const list<string>& endpoints);
   int remove_zone(const RGWZoneParams& zone_params);
 
   const string& get_pool_name(CephContext *cct);