]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: workaround to clear location constrain when using default zonegroup
authorOrit Wasserman <owasserm@redhat.com>
Wed, 4 Nov 2015 14:27:06 +0000 (15:27 +0100)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 12 Feb 2016 00:13:28 +0000 (16:13 -0800)
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
src/rgw/rgw_common.h
src/rgw/rgw_op.cc
src/rgw/rgw_rest_s3.cc

index efc55d7eaced6da61ca8c43846ee612f8c5e6e70..981045c8b634cded90deb47452564e15d801fbfe 100644 (file)
@@ -1106,6 +1106,7 @@ struct req_state {
    ACLOwner bucket_owner;
    ACLOwner owner;
 
+   string zonegroup_name;
    string zonegroup_endpoint;
    string bucket_instance_id;
    int bucket_instance_shard_id;
index 259ed6371c6624381fc7a93b8c25699a1bf954ba..b6b55753f540284440ce8e3c3fc6552fccc797f8 100644 (file)
@@ -410,8 +410,11 @@ static int rgw_build_bucket_policies(RGWRados *store, struct req_state *s)
 
     RGWZoneGroup zonegroup;
     ret = store->get_zonegroup(s->bucket_info.zonegroup, zonegroup);
-    if (!ret && !zonegroup.endpoints.empty()) {
-      s->zonegroup_endpoint = zonegroup.endpoints.front();
+    if (!ret) {
+      if (!zonegroup.endpoints.empty()) {
+       s->zonegroup_endpoint = zonegroup.endpoints.front();
+      }
+      s->zonegroup_name = zonegroup.get_name();
     }
 
     if (s->bucket_exists && !store->get_zonegroup().equals(s->bucket_info.zonegroup)) {
index be6ac7b745f79d4036abd848877431ab38c7d93c..b8399ed58d585b04f778967f28211c5bf6a96d65 100644 (file)
@@ -462,15 +462,15 @@ void RGWGetBucketLocation_ObjStore_S3::send_response()
   end_header(s, this);
   dump_start(s);
 
-  string zonegroup = s->bucket_info.zonegroup;
+  RGWZoneGroup zonegroup;
   string api_name;
 
-  map<string, RGWZoneGroup>::iterator iter = store->zonegroup_map.zonegroups.find(zonegroup);
-  if (iter != store->zonegroup_map.zonegroups.end()) {
-    api_name = iter->second.api_name;
+  int ret = store->get_zonegroup(s->bucket_info.zonegroup, zonegroup);
+  if (ret >= 0) {
+    api_name = zonegroup.api_name;
   } else  {
-    if (zonegroup != "default") {
-      api_name = zonegroup;
+    if (api_name != "default") {
+      api_name = s->bucket_info.zonegroup;
     }
   }