]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librgw: fix acl assignment in RGWCreateBucket_OS_Lib
authorMatt Benjamin <mbenjamin@redhat.com>
Fri, 23 Oct 2015 21:56:33 +0000 (17:56 -0400)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 12 Feb 2016 17:05:00 +0000 (12:05 -0500)
The logic to create a default S3 policy in
RGWCreateBucket_OS_Lib::get_params() was essentially correct, but
failed to store the resulting policy on the current request.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_os_lib.cc
src/test/librgw_file_cd.cc

index 8ae261272418407a2195d12d583c2342ba2fe28a..6431919fe45a5d0ad8a7d179beb09b84a0847022 100644 (file)
@@ -125,10 +125,11 @@ void RGWListBucket_OS_Lib::send_response()
 int RGWCreateBucket_OS_Lib::get_params()
 {
   RGWAccessControlPolicy_S3 s3policy(s->cct);
-  policy = s3policy;
 
   /* we don't have (any) headers, so just create canned ACLs */
-  return s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl);
+  int ret = s3policy.create_canned(s->owner, s->bucket_owner, s->canned_acl);
+  policy = s3policy;
+  return ret;
 }
 
 void RGWCreateBucket_OS_Lib::send_response()
index ab6de3865fcf6cc73d329ef4acdf01331f39990d..dae41c5697f190cc133a39ed9cfc4b797a4e49bd 100644 (file)
@@ -34,6 +34,8 @@ namespace {
   struct rgw_fs *fs = nullptr;
 
   bool do_create = false;
+  bool do_delete = false;
+
   string bucket_name = "sorry_dave";
 
   struct {
@@ -65,8 +67,10 @@ TEST(LibRGW, CREATE_BUCKET) {
 }
 
 TEST(LibRGW, DELETE_BUCKET) {
-  int ret = rgw_unlink(fs, &fs->root_fh, bucket_name.c_str());
-  ASSERT_EQ(ret, 0);
+  if (do_delete) {
+    int ret = rgw_unlink(fs, &fs->root_fh, bucket_name.c_str());
+    ASSERT_EQ(ret, 0);
+  }
 }
 
 TEST(LibRGW, CLEANUP) {
@@ -106,16 +110,21 @@ int main(int argc, char *argv[])
 
   for (auto arg_iter = args.begin(); arg_iter != args.end();) {
     if (ceph_argparse_witharg(args, arg_iter, &val, "--access",
-                             (char*) NULL)) {
+                             (char*) nullptr)) {
       access_key = val;
     } else if (ceph_argparse_witharg(args, arg_iter, &val, "--secret",
-                                    (char*) NULL)) {
+                                    (char*) nullptr)) {
       secret_key = val;
     } else if (ceph_argparse_witharg(args, arg_iter, &val, "--uid",
-                                    (char*) NULL)) {
+                                    (char*) nullptr)) {
       uid = val;
-    }
-    else {
+    } else if (ceph_argparse_flag(args, arg_iter, "--create",
+                                           (char*) nullptr)) {
+      do_create = true;
+    } else if (ceph_argparse_flag(args, arg_iter, "--delete",
+                                           (char*) nullptr)) {
+      do_delete = true;
+    } else {
       ++arg_iter;
     }
   }