From: Orit Wasserman Date: Wed, 4 Nov 2015 14:27:06 +0000 (+0100) Subject: rgw: workaround to clear location constrain when using default zonegroup X-Git-Tag: v10.1.0~354^2~245 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=91de9b51265e64a14b3d8e53de762b0baa022a08;p=ceph.git rgw: workaround to clear location constrain when using default zonegroup Signed-off-by: Orit Wasserman --- diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index efc55d7eaced..981045c8b634 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -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; diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 259ed6371c66..b6b55753f540 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -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)) { diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index be6ac7b745f7..b8399ed58d58 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -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::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; } }