From: Radoslaw Zarzynski Date: Wed, 2 Aug 2017 14:28:40 +0000 (-0400) Subject: rgw: dump Last-Modified in Swift's responses for GET/HEAD on container. X-Git-Tag: v13.0.2~242^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=87c4497f5b08c6a54b7196a31bd956629d38071a;p=ceph.git rgw: dump Last-Modified in Swift's responses for GET/HEAD on container. Fixes: http://tracker.ceph.com/issues/20883 Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index 2ec385f1cb25..7547f7ec1905 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -1766,7 +1766,8 @@ struct req_state { string redirect; RGWBucketInfo bucket_info; - map bucket_attrs; + real_time bucket_mtime; + std::map bucket_attrs; bool bucket_exists; bool has_bad_meta; diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 72a4ec86fe28..0c60aee6ead8 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -441,9 +441,13 @@ int rgw_build_bucket_policies(RGWRados* store, struct req_state* s) if (!s->bucket_name.empty()) { s->bucket_exists = true; if (s->bucket_instance_id.empty()) { - ret = store->get_bucket_info(obj_ctx, s->bucket_tenant, s->bucket_name, s->bucket_info, NULL, &s->bucket_attrs); + ret = store->get_bucket_info(obj_ctx, s->bucket_tenant, s->bucket_name, + s->bucket_info, &s->bucket_mtime, + &s->bucket_attrs); } else { - ret = store->get_bucket_instance_info(obj_ctx, s->bucket_instance_id, s->bucket_info, NULL, &s->bucket_attrs); + ret = store->get_bucket_instance_info(obj_ctx, s->bucket_instance_id, + s->bucket_info, &s->bucket_mtime, + &s->bucket_attrs); } if (ret < 0) { if (ret != -ENOENT) { @@ -2548,7 +2552,7 @@ void RGWCreateBucket::execute() * specific request */ RGWObjectCtx& obj_ctx = *static_cast(s->obj_ctx); op_ret = store->get_bucket_info(obj_ctx, s->bucket_tenant, s->bucket_name, - s->bucket_info, NULL, &s->bucket_attrs); + s->bucket_info, nullptr, &s->bucket_attrs); if (op_ret < 0 && op_ret != -ENOENT) return; s->bucket_exists = (op_ret != -ENOENT); @@ -5999,7 +6003,7 @@ int RGWBulkUploadOp::handle_dir(const boost::string_ref path) RGWBucketInfo binfo; std::map battrs; op_ret = store->get_bucket_info(*dir_ctx, s->bucket_tenant, bucket_name, - binfo, NULL, &battrs); + binfo, nullptr, &battrs); if (op_ret < 0 && op_ret != -ENOENT) { return op_ret; } diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc index f1b47a4fa545..a22bd6e88033 100644 --- a/src/rgw/rgw_rest_swift.cc +++ b/src/rgw/rgw_rest_swift.cc @@ -457,6 +457,10 @@ static void dump_container_metadata(struct req_state *s, if (ws_conf.listing_enabled) { dump_header(s, "X-Container-Meta-Web-Listings", "true"); } + + /* Dump bucket's modification time. Compliance with the Swift API really + * needs that. */ + dump_last_modified(s, s->bucket_mtime); } void RGWStatAccount_ObjStore_SWIFT::execute()