From: Yehuda Sadeh Date: Fri, 12 Dec 2014 22:20:55 +0000 (-0800) Subject: rgw: compare placement target on bucket recreation X-Git-Tag: v0.91~55^2~8^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f16da1cb426201ead3edf02eadc7cd71bc4aec71;p=ceph.git rgw: compare placement target on bucket recreation and return -EEXIST (409) if requested a mismatching placement target. Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index c15e4ccee666..35b5c30193f2 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -1249,6 +1249,16 @@ void RGWCreateBucket::execute() region_name = store->region.name; } + if (s->bucket_exists) { + string selected_placement_rule; + rgw_bucket bucket; + ret = store->select_bucket_placement(s->user, region_name, placement_rule, s->bucket_name_str, bucket, &selected_placement_rule); + if (selected_placement_rule != s->bucket_info.placement_rule) { + ret = -EEXIST; + return; + } + } + policy.encode(aclbl); attrs[RGW_ATTR_ACL] = aclbl;