]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: compare placement target on bucket recreation
authorYehuda Sadeh <yehuda@redhat.com>
Fri, 12 Dec 2014 22:20:55 +0000 (14:20 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 12 Dec 2014 22:20:55 +0000 (14:20 -0800)
and return -EEXIST (409) if requested a mismatching placement target.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_op.cc

index c15e4ccee666544236c6373de41eed25e5320420..35b5c30193f25398c9255dcd16486b65fbd0e7e5 100644 (file)
@@ -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;