]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #57060 from awojno-bloomberg/wip-awojno-status-header
authorCasey Bodley <cbodley@users.noreply.github.com>
Wed, 3 Jul 2024 14:02:55 +0000 (15:02 +0100)
committerGitHub <noreply@github.com>
Wed, 3 Jul 2024 14:02:55 +0000 (15:02 +0100)
rgw: implement x-amz-replication-status for PENDING & COMPLETED

Reviewed-by: Shilpa Jagannath <smanjara@redhat.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
1  2 
src/rgw/driver/d4n/rgw_sal_d4n.cc
src/rgw/driver/d4n/rgw_sal_d4n.h
src/rgw/driver/posix/rgw_sal_posix.cc
src/rgw/driver/rados/rgw_rados.cc
src/rgw/driver/rados/rgw_rados.h
src/rgw/driver/rados/rgw_sal_rados.cc
src/rgw/rgw_op.cc
src/rgw/rgw_sal.h
src/test/rgw/rgw_multi/tests.py

index 7c6d10f5af8f39481a689ebdaf7a2b6873f76d13,bd315c50cb1b4834e6a4435140421373e12fa4f0..0f3c0ddb224fa9f38f90d9e70104aa7c3531fb96
@@@ -110,8 -110,107 +110,8 @@@ int D4NFilterBucket::create(const DoutP
    return next->create(dpp, params, y);
  }
  
 -int D4NFilterObject::copy_object(const ACLOwner& owner,
 -                              const rgw_user& remote_user,
 -                              req_info* info,
 -                              const rgw_zone_id& source_zone,
 -                              rgw::sal::Object* dest_object,
 -                              rgw::sal::Bucket* dest_bucket,
 -                              rgw::sal::Bucket* src_bucket,
 -                              const rgw_placement_rule& dest_placement,
 -                              ceph::real_time* src_mtime,
 -                              ceph::real_time* mtime,
 -                              const ceph::real_time* mod_ptr,
 -                              const ceph::real_time* unmod_ptr,
 -                              bool high_precision_time,
 -                              const char* if_match,
 -                              const char* if_nomatch,
 -                              AttrsMod attrs_mod,
 -                              bool copy_if_newer,
 -                              Attrs& attrs,
 -                              RGWObjCategory category,
 -                              uint64_t olh_epoch,
 -                              boost::optional<ceph::real_time> delete_at,
 -                              std::string* version_id,
 -                              std::string* tag,
 -                              std::string* etag,
 -                              void (*progress_cb)(off_t, void *),
 -                              void* progress_data,
 -                              const DoutPrefixProvider* dpp,
 -                              optional_yield y)
 -{
 -  rgw::d4n::CacheObj obj = rgw::d4n::CacheObj{
 -                                 .objName = this->get_key().get_oid(),
 -                                 .bucketName = src_bucket->get_name()
 -                               };
 -
 -  if (driver->get_obj_dir()->copy(&obj, dest_object->get_name(), dest_bucket->get_name(), y) < 0) 
 -    ldpp_dout(dpp, 10) << "D4NFilterObject::" << __func__ << "(): BlockDirectory copy method failed." << dendl;
 -
 -  /* Append additional metadata to attributes */
 -  rgw::sal::Attrs baseAttrs = this->get_attrs();
 -  buffer::list bl;
 -
 -  bl.append(to_iso_8601(*mtime));
 -  baseAttrs.insert({"mtime", bl});
 -  bl.clear();
 -  
 -  if (version_id != NULL) { 
 -    bl.append(*version_id);
 -    baseAttrs.insert({"version_id", bl});
 -    bl.clear();
 -  }
 - 
 -  if (!etag->empty()) {
 -    bl.append(*etag);
 -    baseAttrs.insert({"etag", bl});
 -    bl.clear();
 -  }
 -
 -  if (attrs_mod == rgw::sal::ATTRSMOD_REPLACE) { /* Replace */
 -    rgw::sal::Attrs::iterator iter;
 -
 -    for (const auto& pair : attrs) {
 -      iter = baseAttrs.find(pair.first);
 -    
 -      if (iter != baseAttrs.end()) {
 -        iter->second = pair.second;
 -      } else {
 -        baseAttrs.insert({pair.first, pair.second});
 -      }
 -    }
 -  } else if (attrs_mod == rgw::sal::ATTRSMOD_MERGE) { /* Merge */
 -    baseAttrs.insert(attrs.begin(), attrs.end()); 
 -  }
 -
 -  /*
 -  int copy_attrsReturn = driver->get_cache_driver()->copy_attrs(this->get_key().get_oid(), dest_object->get_key().get_oid(), &baseAttrs);
 -
 -  if (copy_attrsReturn < 0) {
 -    ldpp_dout(dpp, 20) << "D4N Filter: Cache copy attributes operation failed." << dendl;
 -  } else {
 -    int copy_dataReturn = driver->get_cache_driver()->copy_data(this->get_key().get_oid(), dest_object->get_key().get_oid());
 -
 -    if (copy_dataReturn < 0) {
 -      ldpp_dout(dpp, 20) << "D4N Filter: Cache copy data operation failed." << dendl;
 -    } else {
 -      ldpp_dout(dpp, 20) << "D4N Filter: Cache copy object operation succeeded." << dendl;
 -    }
 -  }*/
 -
 -  return next->copy_object(owner, remote_user, info, source_zone,
 -                           nextObject(dest_object),
 -                           nextBucket(dest_bucket),
 -                           nextBucket(src_bucket),
 -                           dest_placement, src_mtime, mtime,
 -                           mod_ptr, unmod_ptr, high_precision_time, if_match,
 -                           if_nomatch, attrs_mod, copy_if_newer, attrs,
 -                           category, olh_epoch, delete_at, version_id, tag,
 -                           etag, progress_cb, progress_data, dpp, y);
 -}
 -
  int D4NFilterObject::set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs,
-                             Attrs* delattrs, optional_yield y
+                             Attrs* delattrs, optional_yield y, uint32_t flags)
  {
    if (setattrs != NULL) {
      /* Ensure setattrs and delattrs do not overlap */
index 2eff3cb18a311eddceae1b0acb4d6d1068b987c7,3d3a1125e02790ad72811775d858974e86606329..5c71582406f1406760d073735507c9000cbb40d5
@@@ -177,9 -177,25 +177,9 @@@ class D4NFilterObject : public FilterOb
                                                                    driver(_driver) {}
      virtual ~D4NFilterObject() = default;
  
 -    virtual int copy_object(const ACLOwner& owner,
 -               const rgw_user& remote_user,
 -               req_info* info, const rgw_zone_id& source_zone,
 -               rgw::sal::Object* dest_object, rgw::sal::Bucket* dest_bucket,
 -               rgw::sal::Bucket* src_bucket,
 -               const rgw_placement_rule& dest_placement,
 -               ceph::real_time* src_mtime, ceph::real_time* mtime,
 -               const ceph::real_time* mod_ptr, const ceph::real_time* unmod_ptr,
 -               bool high_precision_time,
 -               const char* if_match, const char* if_nomatch,
 -               AttrsMod attrs_mod, bool copy_if_newer, Attrs& attrs,
 -               RGWObjCategory category, uint64_t olh_epoch,
 -               boost::optional<ceph::real_time> delete_at,
 -               std::string* version_id, std::string* tag, std::string* etag,
 -               void (*progress_cb)(off_t, void *), void* progress_data,
 -               const DoutPrefixProvider* dpp, optional_yield y) override;
      virtual const std::string &get_name() const override { return next->get_name(); }
      virtual int set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs,
-                             Attrs* delattrs, optional_yield y) override;
+                             Attrs* delattrs, optional_yield y, uint32_t flags) override;
      virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp,
                              rgw_obj* target_obj = NULL) override;
      virtual int modify_obj_attrs(const char* attr_name, bufferlist& attr_val,
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge