]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add missing last_modified field to swift api
authorAndrei Ivashchenko <aiivashchenko@users.noreply.github.com>
Fri, 20 Dec 2024 14:09:50 +0000 (15:09 +0100)
committerAndrei Ivashchenko <aiivashchenko@users.noreply.github.com>
Tue, 28 Jan 2025 13:44:24 +0000 (14:44 +0100)
Fixes: https://tracker.ceph.com/issues/68195
Signed-off-by: Andrei Ivashchenko <aiivashchenko@users.noreply.github.com>
(cherry picked from commit 24984b704f0482bfbe09dc82d373fe40cc897c29)

Conflicts:
src/rgw/rgw_rest_swift.cc
dump_bucket_entry in reef uses rgw::sal::Bucket, while upstream uses RGWBucketEnt
rgw::sal::Bucket passed as const, not allowing to call get_modification_time, as it returns reference to ceph::real_time
src/rgw/services/svc_bucket_sobj.cc
read_bucket_info signature in reef has ctx agrument, while upstream hasn't

src/rgw/rgw_common.h
src/rgw/rgw_rest_swift.cc
src/rgw/services/svc_bucket_sobj.cc

index f9dc3951533ecc8269340eeaa7521db697ccc658..2aae64d99d862fa094d752fee85d4a77d4abb95f 100644 (file)
@@ -1263,6 +1263,7 @@ struct RGWBucketEnt {
   size_t size;
   size_t size_rounded;
   ceph::real_time creation_time;
+  ceph::real_time modification_time;
   uint64_t count;
 
   /* The placement_rule is necessary to calculate per-storage-policy statics
index 0a7eaac83089643ce87ca5feb3d29211134d0b64..723d184917b71c01e95b1c715de85e9d854a3012 100644 (file)
@@ -327,7 +327,7 @@ void RGWListBuckets_ObjStore_SWIFT::send_response_data(rgw::sal::BucketList& buc
   }
 }
 
-void RGWListBuckets_ObjStore_SWIFT::dump_bucket_entry(const rgw::sal::Bucket& bucket)
+void RGWListBuckets_ObjStore_SWIFT::dump_bucket_entry(rgw::sal::Bucket& bucket)
 {
   s->formatter->open_object_section("container");
   s->formatter->dump_string("name", bucket.get_name());
@@ -335,6 +335,7 @@ void RGWListBuckets_ObjStore_SWIFT::dump_bucket_entry(const rgw::sal::Bucket& bu
   if (need_stats) {
     s->formatter->dump_int("count", bucket.get_count());
     s->formatter->dump_int("bytes", bucket.get_size());
+    dump_time(s, "last_modified", bucket.get_modification_time());
   }
 
   s->formatter->close_section();
index 08a5280150354007d27f3cd2197d8149d8a4916d..9749fc22e6f5d93b7994080b8847022565bc3936 100644 (file)
@@ -617,7 +617,7 @@ int RGWSI_Bucket_SObj::read_bucket_stats(RGWSI_Bucket_X_Ctx& ctx,
                                          const DoutPrefixProvider *dpp)
 {
   RGWBucketInfo bucket_info;
-  int ret = read_bucket_info(ctx, bucket, &bucket_info, nullptr, nullptr, boost::none, y, dpp);
+  int ret = read_bucket_info(ctx, bucket, &bucket_info, &ent->modification_time, nullptr, boost::none, y, dpp);
   if (ret < 0) {
     return ret;
   }