From: wangsongbo Date: Thu, 16 Nov 2017 03:38:58 +0000 (+0800) Subject: ceph-dencoder: add support for RGWLifecycleConfiguration X-Git-Tag: v13.0.1~77^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F18959%2Fhead;p=ceph.git ceph-dencoder: add support for RGWLifecycleConfiguration Signed-off-by: Songbo Wang wangsongbo@cloudin.cn --- diff --git a/src/rgw/rgw_json_enc.cc b/src/rgw/rgw_json_enc.cc index ad7b941bf3ad..362db8a854f6 100644 --- a/src/rgw/rgw_json_enc.cc +++ b/src/rgw/rgw_json_enc.cc @@ -1494,3 +1494,74 @@ void RGWOrphanSearchState::dump(Formatter *f) const encode_json("stage", stage, f); f->close_section(); } + +void RGWObjTags::dump(Formatter *f) const +{ + for (auto& tag: tag_map){ + f->open_object_section("tag_map"); + f->dump_string("key", tag.first); + f->dump_string("value", tag.second); + f->close_section(); + } +} + +void lc_op::dump(Formatter *f) const +{ + f->dump_bool("status", status); + f->dump_bool("dm_expiration", dm_expiration); + + f->dump_int("expiration", expiration); + f->dump_int("noncur_expiration", noncur_expiration); + f->dump_int("mp_expiration", mp_expiration); + if (expiration_date) { + utime_t ut(*expiration_date); + f->dump_stream("expiration_date") << ut; + } + if (obj_tags) { + f->dump_object("obj_tags", *obj_tags); + } +} + +void LCFilter::dump(Formatter *f) const +{ + f->dump_string("prefix", prefix); + f->dump_object("obj_tags", obj_tags); +} + +void LCExpiration::dump(Formatter *f) const +{ + f->dump_string("days", days); + f->dump_string("date", date); +} + +void LCRule::dump(Formatter *f) const +{ + f->dump_string("id", id); + f->dump_string("prefix", prefix); + f->dump_string("status", status); + f->dump_object("expiration", expiration); + f->dump_object("noncur_expiration", noncur_expiration); + f->dump_object("mp_expiration", mp_expiration); + f->dump_object("filter", filter); + f->dump_bool("dm_expiration", dm_expiration); +} + +void RGWLifecycleConfiguration::dump(Formatter *f) const +{ + f->open_object_section("prefix_map"); + for (auto& prefix : prefix_map) { + f->dump_object(prefix.first.c_str(), prefix.second); + } + f->close_section(); + + f->open_array_section("rule_map"); + for (auto& rule : rule_map) { + f->open_object_section("entry"); + f->dump_string("id", rule.first); + f->open_object_section("rule"); + rule.second.dump(f); + f->close_section(); + f->close_section(); + } + f->close_section(); +} diff --git a/src/rgw/rgw_lc.cc b/src/rgw/rgw_lc.cc index a742ca309b4e..b9ccc754fa56 100644 --- a/src/rgw/rgw_lc.cc +++ b/src/rgw/rgw_lc.cc @@ -809,3 +809,8 @@ int RGWLC::LCWorker::schedule_next_start_time(utime_t &start, utime_t& now) return (nt+24*60*60 - tt); } +void RGWLifecycleConfiguration::generate_test_instances(list& o) +{ + o.push_back(new RGWLifecycleConfiguration); +} + diff --git a/src/rgw/rgw_lc.h b/src/rgw/rgw_lc.h index 8aab59d94b60..2cbd070a053f 100644 --- a/src/rgw/rgw_lc.h +++ b/src/rgw/rgw_lc.h @@ -144,6 +144,7 @@ class LCFilter } DECODE_FINISH(bl); } + void dump(Formatter *f) const; }; WRITE_CLASS_ENCODER(LCFilter); @@ -261,6 +262,7 @@ public: } DECODE_FINISH(bl); } + void dump(Formatter *f) const; }; WRITE_CLASS_ENCODER(LCRule) @@ -276,6 +278,7 @@ struct lc_op boost::optional obj_tags; lc_op() : status(false), dm_expiration(false), expiration(0), noncur_expiration(0), mp_expiration(0) {} + void dump(Formatter *f) const; }; class RGWLifecycleConfiguration @@ -314,7 +317,7 @@ public: DECODE_FINISH(bl); } void dump(Formatter *f) const; -// static void generate_test_instances(list& o); + static void generate_test_instances(list& o); void add_rule(LCRule* rule); diff --git a/src/test/encoding/types.h b/src/test/encoding/types.h index 5a0f8b7fe8d4..5690a056e77a 100644 --- a/src/test/encoding/types.h +++ b/src/test/encoding/types.h @@ -306,6 +306,9 @@ TYPE(ObjectMetaInfo) TYPE(ObjectCacheInfo) TYPE(RGWCacheNotifyInfo) +#include "rgw/rgw_lc.h" +TYPE(RGWLifecycleConfiguration) + #include "cls/rgw/cls_rgw_types.h" TYPE(rgw_bucket_pending_info) TYPE(rgw_bucket_dir_entry_meta)