]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: RGWZoneGroup::add_zone rejects duplicate zone names 9109/head
authorCasey Bodley <cbodley@redhat.com>
Thu, 12 May 2016 19:13:06 +0000 (15:13 -0400)
committerCasey Bodley <cbodley@redhat.com>
Thu, 12 May 2016 19:24:06 +0000 (15:24 -0400)
Fixes: http://tracker.ceph.com/issues/15613
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_rados.cc

index 7121045c3647683875fe922f5f1b350c98e24038..b6884930d32f34b7fb89a1ec1c49f85bbbf24421 100644 (file)
@@ -238,6 +238,20 @@ int RGWZoneGroup::equals(const string& other_zonegroup) const
 
 int RGWZoneGroup::add_zone(const RGWZoneParams& zone_params, bool *is_master, bool *read_only, const list<string>& endpoints)
 {
+  auto& zone_id = zone_params.get_id();
+  auto& zone_name = zone_params.get_name();
+
+  // check for duplicate zone name on insert
+  if (!zones.count(zone_id)) {
+    for (const auto& zone : zones) {
+      if (zone.second.name == zone_name) {
+        ldout(cct, 0) << "ERROR: found existing zone name " << zone_name
+            << " (" << zone.first << ") in zonegroup " << get_name() << dendl;
+        return -EEXIST;
+      }
+    }
+  }
+
   if (is_master && *is_master) {
     if (!master_zone.empty() && master_zone != zone_params.get_id()) {
       ldout(cct, 0) << "NOTICE: overriding master zone: " << master_zone  << dendl;