]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/acl: set_acl shouldn't overwrite bucket attrs 41102/head
authorSoumya Koduri <skoduri@redhat.com>
Thu, 29 Apr 2021 20:40:06 +0000 (02:10 +0530)
committerSoumya Koduri <skoduri@redhat.com>
Sun, 2 May 2021 17:19:55 +0000 (22:49 +0530)
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
src/rgw/rgw_bucket.cc
src/rgw/rgw_bucket.h
src/rgw/rgw_sal_rados.cc

index 4dbeec2287d3b050dc15549d6adb43c5c8088839..d888f0f1a32933f6a908a99dcd57b35e88846255 100644 (file)
@@ -3032,25 +3032,6 @@ int RGWBucketCtl::do_unlink_bucket(RGWSI_Bucket_EP_Ctx& ctx,
   return svc.bucket->store_bucket_entrypoint_info(ctx, meta_key, ep, false, real_time(), &attrs, &ot, y, dpp);
 }
 
-int RGWBucketCtl::set_acl(ACLOwner& owner, rgw_bucket& bucket,
-                          RGWBucketInfo& bucket_info, bufferlist& bl,
-                          optional_yield y,
-                          const DoutPrefixProvider *dpp)
-{
-  // set owner and acl
-  bucket_info.owner = owner.get_id();
-  std::map<std::string, bufferlist> attrs{{RGW_ATTR_ACL, bl}};
-
-  int r = store_bucket_instance_info(bucket, bucket_info, y, dpp,
-                                     BucketInstance::PutParams().set_attrs(&attrs));
-  if (r < 0) {
-    cerr << "ERROR: failed to set bucket owner: " << cpp_strerror(-r) << std::endl;
-    return r;
-  }
-  
-  return 0;
-}
-
 // TODO: remove RGWRados dependency for bucket listing
 int RGWBucketCtl::chown(rgw::sal::Store* store, rgw::sal::Bucket* bucket,
                         const rgw_user& user_id, const std::string& display_name,
index 3ce0f3baad0a33649d3a2b97dee57616e6a07678..c867a80fd8fad278a4b2d217ab640d5fa1168880 100644 (file)
@@ -694,10 +694,6 @@ public:
             const rgw_user& user_id, const std::string& display_name,
             const std::string& marker, optional_yield y, const DoutPrefixProvider *dpp);
 
-  int set_acl(ACLOwner& owner, rgw_bucket& bucket,
-              RGWBucketInfo& bucket_info, bufferlist& bl, optional_yield y,
-              const DoutPrefixProvider *dpp);
-
   int read_buckets_stats(map<string, RGWBucketEnt>& m,
                          optional_yield y,
                          const DoutPrefixProvider *dpp);
index 486b875782b58250833626f7faa7e7b7e625012e..e80de99c0dd2b210216df7183b02de90823dba5a 100644 (file)
@@ -538,8 +538,20 @@ int RadosBucket::set_acl(const DoutPrefixProvider* dpp, RGWAccessControlPolicy &
 
   acls = acl;
   acl.encode(aclbl);
+  map<string, bufferlist>& attrs = get_attrs();
 
-  return store->ctl()->bucket->set_acl(acl.get_owner(), info.bucket, info, aclbl, y, dpp);
+  attrs[RGW_ATTR_ACL] = aclbl;
+  info.owner = acl.get_owner().get_id();
+
+  int r = store->ctl()->bucket->store_bucket_instance_info(info.bucket,
+                 info, y, dpp,
+                 RGWBucketCtl::BucketInstance::PutParams().set_attrs(&attrs));
+  if (r < 0) {
+    cerr << "ERROR: failed to set bucket owner: " << cpp_strerror(-r) << std::endl;
+    return r;
+  }
+  
+  return 0;
 }
 
 std::unique_ptr<Object> RadosBucket::get_object(const rgw_obj_key& k)