]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: read existing placement and swift_ver_location outside of sal
authorCasey Bodley <cbodley@redhat.com>
Tue, 26 Jul 2022 20:05:51 +0000 (16:05 -0400)
committerCasey Bodley <cbodley@redhat.com>
Mon, 6 Nov 2023 16:07:23 +0000 (11:07 -0500)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 files changed:
src/rgw/driver/d4n/rgw_sal_d4n.cc
src/rgw/driver/d4n/rgw_sal_d4n.h
src/rgw/driver/motr/rgw_sal_motr.cc
src/rgw/driver/motr/rgw_sal_motr.h
src/rgw/driver/posix/rgw_sal_posix.cc
src/rgw/driver/posix/rgw_sal_posix.h
src/rgw/driver/rados/rgw_sal_rados.cc
src/rgw/driver/rados/rgw_sal_rados.h
src/rgw/rgw_op.cc
src/rgw/rgw_sal.h
src/rgw/rgw_sal_dbstore.cc
src/rgw/rgw_sal_dbstore.h
src/rgw/rgw_sal_filter.cc
src/rgw/rgw_sal_filter.h
src/test/rgw/test_rgw_lua.cc

index 3195d87eac427fa5d34c669b6e8cc489405f80e8..93cd8f2d4159d47bdf2c6367643887fa1d6066bd 100644 (file)
@@ -62,8 +62,8 @@ std::unique_ptr<Object> D4NFilterBucket::get_object(const rgw_obj_key& k)
 int D4NFilterUser::create_bucket(const DoutPrefixProvider* dpp,
                               const rgw_bucket& b,
                               const std::string& zonegroup_id,
-                              rgw_placement_rule& placement_rule,
-                              std::string& swift_ver_location,
+                              const rgw_placement_rule& placement_rule,
+                              const std::string& swift_ver_location,
                               const RGWQuotaInfo * pquota_info,
                               const RGWAccessControlPolicy& policy,
                               Attrs& attrs,
index 5a2cd88896db54f1887a9badd536cef1a16a8813..459e885fc240210079af4f0375fc8214c1e68f5f 100644 (file)
@@ -75,8 +75,8 @@ class D4NFilterUser : public FilterUser {
     virtual int create_bucket(const DoutPrefixProvider* dpp,
                             const rgw_bucket& b,
                             const std::string& zonegroup_id,
-                            rgw_placement_rule& placement_rule,
-                            std::string& swift_ver_location,
+                            const rgw_placement_rule& placement_rule,
+                            const std::string& swift_ver_location,
                             const RGWQuotaInfo* pquota_info,
                             const RGWAccessControlPolicy& policy,
                             Attrs& attrs,
index e9377f945360a8d51af43a583f71e06b1096fc19..156fb6d6031c4366a58fcd2f1ea452e3e67b28aa 100644 (file)
@@ -210,8 +210,8 @@ int MotrUser::list_buckets(const DoutPrefixProvider *dpp, const string& marker,
 int MotrUser::create_bucket(const DoutPrefixProvider* dpp,
                             const rgw_bucket& b,
                             const std::string& zonegroup_id,
-                            rgw_placement_rule& placement_rule,
-                            std::string& swift_ver_location,
+                            const rgw_placement_rule& placement_rule,
+                            const std::string& swift_ver_location,
                             const RGWQuotaInfo* pquota_info,
                             const RGWAccessControlPolicy& policy,
                             Attrs& attrs,
@@ -234,24 +234,7 @@ int MotrUser::create_bucket(const DoutPrefixProvider* dpp,
 
   if (ret != -ENOENT) {
     *existed = true;
-    // if (swift_ver_location.empty()) {
-    //   swift_ver_location = bucket->get_info().swift_ver_location;
-    // }
-    // placement_rule.inherit_from(bucket->get_info().placement_rule);
-
-    // TODO: ACL policy
-    // // don't allow changes to the acl policy
-    //RGWAccessControlPolicy old_policy(ctx());
-    //int rc = rgw_op_get_bucket_policy_from_attr(
-    //           dpp, this, u, bucket->get_attrs(), &old_policy, y);
-    //if (rc >= 0 && old_policy != policy) {
-    //    bucket_out->swap(bucket);
-    //    return -EEXIST;
-    //}
   } else {
-
-    placement_rule.name = "default";
-    placement_rule.storage_class = "STANDARD";
     bucket = std::make_unique<MotrBucket>(store, b, this);
     bucket->set_attrs(attrs);
     *existed = false;
index 6e6b9908061f38944f7b6266e79f78dc69bf6ee5..23854b466dea227c17dc0d984412c1bdeb2155a9 100644 (file)
@@ -222,8 +222,8 @@ class MotrUser : public StoreUser {
     virtual int create_bucket(const DoutPrefixProvider* dpp,
                             const rgw_bucket& b,
                             const std::string& zonegroup_id,
-                            rgw_placement_rule& placement_rule,
-                            std::string& swift_ver_location,
+                            const rgw_placement_rule& placement_rule,
+                            const std::string& swift_ver_location,
                             const RGWQuotaInfo* pquota_info,
                             const RGWAccessControlPolicy& policy,
                             Attrs& attrs,
index b999839bf4e78b18ae68c6fc50361b66bc22e5eb..0831ebd97c5b759d47de8cad55f9e8822953de73 100644 (file)
@@ -594,8 +594,8 @@ int POSIXUser::list_buckets(const DoutPrefixProvider* dpp, const std::string& ma
 int POSIXUser::create_bucket(const DoutPrefixProvider* dpp,
                              const rgw_bucket& b,
                              const std::string& zonegroup_id,
-                             rgw_placement_rule& placement_rule,
-                             std::string& swift_ver_location,
+                             const rgw_placement_rule& placement_rule,
+                             const std::string& swift_ver_location,
                              const RGWQuotaInfo * pquota_info,
                              const RGWAccessControlPolicy& policy,
                              Attrs& attrs,
index 3695763c45f9d960166903f056c5d7ea1bb10a3d..f78bbadbfe9cfa0071907f1a30b6b285b04a9b3f 100644 (file)
@@ -128,8 +128,8 @@ public:
   virtual int create_bucket(const DoutPrefixProvider* dpp,
                             const rgw_bucket& b,
                             const std::string& zonegroup_id,
-                            rgw_placement_rule& placement_rule,
-                            std::string& swift_ver_location,
+                            const rgw_placement_rule& placement_rule,
+                            const std::string& swift_ver_location,
                             const RGWQuotaInfo* pquota_info,
                             const RGWAccessControlPolicy& policy,
                             Attrs& attrs,
index 4cc3ab5972bdfea7aad48055bdcd443b50b37555..b7a7732388bf47fb5d66e50d701fe629b6a11d0d 100644 (file)
@@ -123,8 +123,8 @@ int RadosUser::list_buckets(const DoutPrefixProvider* dpp, const std::string& ma
 int RadosUser::create_bucket(const DoutPrefixProvider* dpp,
                                 const rgw_bucket& b,
                                 const std::string& zonegroup_id,
-                                rgw_placement_rule& placement_rule,
-                                std::string& swift_ver_location,
+                                const rgw_placement_rule& placement_rule,
+                                const std::string& swift_ver_location,
                                 const RGWQuotaInfo * pquota_info,
                                 const RGWAccessControlPolicy& policy,
                                 Attrs& attrs,
@@ -152,10 +152,6 @@ int RadosUser::create_bucket(const DoutPrefixProvider* dpp,
 
   if (ret != -ENOENT) {
     *existed = true;
-    if (swift_ver_location.empty()) {
-      swift_ver_location = bucket->get_info().swift_ver_location;
-    }
-    placement_rule.inherit_from(bucket->get_info().placement_rule);
   } else {
     bucket = std::unique_ptr<Bucket>(new RadosBucket(store, b, this));
     *existed = false;
index ebf6531f1471a8343cac493728cf54eb8c91b759..f542a68d04795496c0fd20ce43587a8f28e92675 100644 (file)
@@ -277,8 +277,8 @@ class RadosUser : public StoreUser {
     virtual int create_bucket(const DoutPrefixProvider* dpp,
                             const rgw_bucket& b,
                             const std::string& zonegroup_id,
-                            rgw_placement_rule& placement_rule,
-                            std::string& swift_ver_location,
+                            const rgw_placement_rule& placement_rule,
+                            const std::string& swift_ver_location,
                             const RGWQuotaInfo * pquota_info,
                             const RGWAccessControlPolicy& policy,
                            Attrs& attrs,
index 0307658aa0a6bf509a72627609b59f702de6554c..6f42f03a118c06c21779853f37fd0161fcce4735 100644 (file)
@@ -3384,6 +3384,11 @@ void RGWCreateBucket::execute(optional_yield y)
       /* Initialize info from req_state */
       info = tmp_bucket->get_info();
 
+      if (!swift_ver_location) {
+        swift_ver_location = info.swift_ver_location;
+      }
+      placement_rule.inherit_from(info.placement_rule);
+
       // don't allow changes to the acl policy
       RGWAccessControlPolicy old_policy(get_cct());
       int r = rgw_op_get_bucket_policy_from_attr(this, s->cct, driver, info.owner,
index 73122e06b4b7a12ba273ea4c2a22b092fb7e3f4a..d8072ca6f6f9eb6ec980f864617bcae243dba415 100644 (file)
@@ -491,8 +491,8 @@ class User {
     virtual int create_bucket(const DoutPrefixProvider* dpp,
                             const rgw_bucket& b,
                             const std::string& zonegroup_id,
-                            rgw_placement_rule& placement_rule,
-                            std::string& swift_ver_location,
+                            const rgw_placement_rule& placement_rule,
+                            const std::string& swift_ver_location,
                             const RGWQuotaInfo* pquota_info,
                             const RGWAccessControlPolicy& policy,
                            Attrs& attrs,
index 97da47eb6d384c2bc7b807a359aa9d04ade8cd6c..5e429ba5c4c8eea6d2e4524c8faf01cc2c09aff3 100644 (file)
@@ -61,8 +61,8 @@ namespace rgw::sal {
   int DBUser::create_bucket(const DoutPrefixProvider *dpp,
       const rgw_bucket& b,
       const string& zonegroup_id,
-      rgw_placement_rule& placement_rule,
-      string& swift_ver_location,
+      const rgw_placement_rule& placement_rule,
+      const string& swift_ver_location,
       const RGWQuotaInfo * pquota_info,
       const RGWAccessControlPolicy& policy,
       Attrs& attrs,
@@ -79,7 +79,6 @@ namespace rgw::sal {
     bufferlist in_data;
     RGWBucketInfo master_info;
     rgw_bucket *pmaster_bucket = nullptr;
-    uint32_t *pmaster_num_shards = nullptr;
     real_time creation_time;
     std::unique_ptr<Bucket> bucket;
     obj_version objv, *pobjv = NULL;
@@ -90,28 +89,11 @@ namespace rgw::sal {
       return ret;
 
     if (ret != -ENOENT) {
-      RGWAccessControlPolicy old_policy(store->ctx());
       *existed = true;
-      if (swift_ver_location.empty()) {
-        swift_ver_location = bucket->get_info().swift_ver_location;
-      }
-      placement_rule.inherit_from(bucket->get_info().placement_rule);
-
-      // don't allow changes to the acl policy
-      /*    int r = rgw_op_get_bucket_policy_from_attr(dpp, this, this, bucket->get_attrs(),
-            &old_policy, y);
-            if (r >= 0 && old_policy != policy) {
-            bucket_out->swap(bucket);
-            return -EEXIST;
-            }*/
     } else {
       bucket = std::make_unique<DBBucket>(store, b, this);
       *existed = false;
       bucket->set_attrs(attrs);
-      // XXX: For now single default zone and STANDARD storage class
-      // supported.
-      placement_rule.name = "default";
-      placement_rule.storage_class = "STANDARD";
     }
 
     /*
@@ -123,8 +105,13 @@ namespace rgw::sal {
        zid = svc()->zone->get_zonegroup().get_id();
        } */
 
+    // XXX: For now single default zone and STANDARD storage class
+    // supported.
+    rgw_placement_rule selected_placement_rule;
+    selected_placement_rule.name = "default";
+    selected_placement_rule.storage_class = "STANDARD";
+
     if (*existed) {
-      rgw_placement_rule selected_placement_rule;
       /* XXX: Handle this when zone is implemented
          ret = svc()->zone->select_bucket_placement(this.get_info(),
          zid, placement_rule,
@@ -138,9 +125,9 @@ namespace rgw::sal {
 
       /* XXX: We may not need to send all these params. Cleanup the unused ones */
       ret = store->getDB()->create_bucket(dpp, this->get_info(), bucket->get_key(),
-          zid, placement_rule, swift_ver_location, pquota_info,
+          zid, selected_placement_rule, swift_ver_location, pquota_info,
           attrs, info, pobjv, &ep_objv, creation_time,
-          pmaster_bucket, pmaster_num_shards, y, exclusive);
+          pmaster_bucket, nullptr, y, exclusive);
       if (ret == -EEXIST) {
         *existed = true;
         ret = 0;
index 68fe4c443199e967ff86d9f3cda2255b9065eba8..375a4524517cd2a8b9ec502052276273d470ea6b 100644 (file)
@@ -91,8 +91,8 @@ protected:
       virtual int create_bucket(const DoutPrefixProvider* dpp,
           const rgw_bucket& b,
           const std::string& zonegroup_id,
-          rgw_placement_rule& placement_rule,
-          std::string& swift_ver_location,
+          const rgw_placement_rule& placement_rule,
+          const std::string& swift_ver_location,
           const RGWQuotaInfo* pquota_info,
           const RGWAccessControlPolicy& policy,
           Attrs& attrs,
index fb9e7aa1a286d4559d36ea3589ebe574d437a6a4..3f3c5102cb427fc612e452fac5d2b6108a504045 100644 (file)
@@ -543,8 +543,8 @@ int FilterUser::list_buckets(const DoutPrefixProvider* dpp, const std::string& m
 int FilterUser::create_bucket(const DoutPrefixProvider* dpp,
                              const rgw_bucket& b,
                              const std::string& zonegroup_id,
-                             rgw_placement_rule& placement_rule,
-                             std::string& swift_ver_location,
+                             const rgw_placement_rule& placement_rule,
+                             const std::string& swift_ver_location,
                              const RGWQuotaInfo * pquota_info,
                              const RGWAccessControlPolicy& policy,
                              Attrs& attrs,
index 81452f22cd7de5c86510152014bbb3fe5c16a1aa..5d81bea0e420f0fd446fe394f303d991d098ed11 100644 (file)
@@ -332,8 +332,8 @@ public:
   virtual int create_bucket(const DoutPrefixProvider* dpp,
                            const rgw_bucket& b,
                            const std::string& zonegroup_id,
-                           rgw_placement_rule& placement_rule,
-                           std::string& swift_ver_location,
+                           const rgw_placement_rule& placement_rule,
+                           const std::string& swift_ver_location,
                            const RGWQuotaInfo* pquota_info,
                            const RGWAccessControlPolicy& policy,
                            Attrs& attrs,
index e8656ac8e39e6f3ccad4e3c5ba9582f960e4b7a7..05f0d291961a68332e1e1f0188f6139cc38595fa 100644 (file)
@@ -78,7 +78,7 @@ public:
     return 0;
   }
 
-  virtual int create_bucket(const DoutPrefixProvider* dpp, const rgw_bucket& b, const std::string& zonegroup_id, rgw_placement_rule& placement_rule, std::string& swift_ver_location, const RGWQuotaInfo* pquota_info, const RGWAccessControlPolicy& policy, sal::Attrs& attrs, RGWBucketInfo& info, obj_version& ep_objv, bool exclusive, bool obj_lock_enabled, bool* existed, req_info& req_info, std::unique_ptr<sal::Bucket>* bucket, optional_yield y) override {
+  virtual int create_bucket(const DoutPrefixProvider* dpp, const rgw_bucket& b, const std::string& zonegroup_id, const rgw_placement_rule& placement_rule, const std::string& swift_ver_location, const RGWQuotaInfo* pquota_info, const RGWAccessControlPolicy& policy, sal::Attrs& attrs, RGWBucketInfo& info, obj_version& ep_objv, bool exclusive, bool obj_lock_enabled, bool* existed, req_info& req_info, std::unique_ptr<sal::Bucket>* bucket, optional_yield y) override {
     return 0;
   }