From 4d03e1595b12ad96cfbe003a300b1a968a003bb2 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Thu, 2 Jun 2011 13:45:20 -0700 Subject: [PATCH] rgw: some more multipard upload list --- src/rgw/rgw_common.h | 3 +++ src/rgw/rgw_op.cc | 1 + src/rgw/rgw_rest_s3.cc | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index 2e51cb6ecfca8..27868e5c83b97 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -423,6 +423,7 @@ struct RGWUploadPartInfo { uint32_t num; uint64_t size; string etag; + utime_t modified; void encode(bufferlist& bl) const { __u8 struct_v = 1; @@ -430,6 +431,7 @@ struct RGWUploadPartInfo { ::encode(num, bl); ::encode(size, bl); ::encode(etag, bl); + ::encode(modified, bl); } void decode(bufferlist::iterator& bl) { __u8 struct_v; @@ -437,6 +439,7 @@ struct RGWUploadPartInfo { ::decode(num, bl); ::decode(size, bl); ::decode(etag, bl); + ::decode(modified, bl); } }; WRITE_CLASS_ENCODER(RGWUploadPartInfo) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 5829fe263acd0..fcc744787034a 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -496,6 +496,7 @@ void RGWPutObj::execute() info.num = atoi(part_num.c_str()); info.etag = etag; info.size = s->obj_size; + info.modified = g_clock.now(); ::encode(info, bl); meta_attrs[p] = bl; diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index b4fcce4e4d77e..476d2dbf981a3 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -304,8 +304,18 @@ void RGWListMultipart_REST_S3::send_response() s->formatter->dump_value_str("NextPartNumberMarker", "%d", cur_max + 1); s->formatter->dump_value_str("MaxParts", "%d", max_parts); s->formatter->dump_value_str("IsTruncated", "%s", (test_iter == parts.end() ? "false" : "true")); + for (; iter != parts.end(); ++iter) { RGWUploadPartInfo& info = iter->second; + + time_t sec = info.modified.sec(); + struct tm tmp; + localtime_r(&sec, &tmp); + char buf[TIME_BUF_SIZE]; + if (strftime(buf, sizeof(buf), "%Y-%m-%dT%T.000Z", &tmp) > 0) { + s->formatter->dump_value_str("LastModified", buf); + } + s->formatter->open_obj_section("Part"); s->formatter->dump_value_int("PartNumber", "%u", info.num); s->formatter->dump_value_str("ETag", "%s", info.etag.c_str()); -- 2.39.5