From 960fa0d3daa860206d34798fac0424fb9fae8d68 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 12 Feb 2013 15:52:16 -0800 Subject: [PATCH] rgw: region management encoding/decoding changes Signed-off-by: Yehuda Sadeh --- src/common/ceph_json.h | 33 +++++++----- src/rgw/rgw_json_enc.cc | 85 +++++++++++++++++++++++++++++++ src/rgw/rgw_rados.cc | 108 ---------------------------------------- 3 files changed, 106 insertions(+), 120 deletions(-) diff --git a/src/common/ceph_json.h b/src/common/ceph_json.h index 4d7c85c44eb38..ec049e5a2955c 100644 --- a/src/common/ceph_json.h +++ b/src/common/ceph_json.h @@ -232,18 +232,6 @@ static void encode_json(const char *name, const T& val, Formatter *f) f->close_section(); } -template -static void encode_json(const char *name, const std::list& l, Formatter *f) -{ - f->open_array_section(name); - for (typename std::list::const_iterator iter = l.begin(); iter != l.end(); ++iter) { - f->open_object_section("obj"); - encode_json(name, *iter, f); - f->close_section(); - } - f->close_section(); -} - class utime_t; void encode_json(const char *name, const string& val, Formatter *f); @@ -257,6 +245,27 @@ void encode_json(const char *name, const bufferlist& bl, Formatter *f); void encode_json(const char *name, long long val, Formatter *f); void encode_json(const char *name, long long unsigned val, Formatter *f); +template +static void encode_json(const char *name, const std::list& l, Formatter *f) +{ + f->open_array_section(name); + for (typename std::list::const_iterator iter = l.begin(); iter != l.end(); ++iter) { + encode_json("obj", *iter, f); + } + f->close_section(); +} + +template +void encode_json(const char *name, const map& m, Formatter *f) +{ + f->open_array_section(name); + typename map::const_iterator iter; + for (iter = m.begin(); iter != m.end(); ++iter) { + encode_json("obj", iter->second, f); + } + f->close_section(); +} + template void encode_json_map(const char *name, const char *index_name, const char *object_name, const char *value_name, diff --git a/src/rgw/rgw_json_enc.cc b/src/rgw/rgw_json_enc.cc index 04dfb67c71d6a..cfb8c0de9d2d7 100644 --- a/src/rgw/rgw_json_enc.cc +++ b/src/rgw/rgw_json_enc.cc @@ -422,4 +422,89 @@ void rgw_obj::dump(Formatter *f) const encode_json("object", object, f); } +void RGWZoneParams::dump(Formatter *f) const +{ + encode_json("domain_root", domain_root.pool, f); + encode_json("control_pool", control_pool.pool, f); + encode_json("gc_pool", gc_pool.pool, f); + encode_json("log_pool", log_pool.pool, f); + encode_json("intent_log_pool", intent_log_pool.pool, f); + encode_json("usage_log_pool", usage_log_pool.pool, f); + encode_json("user_keys_pool", user_keys_pool.pool, f); + encode_json("user_email_pool", user_email_pool.pool, f); + encode_json("user_swift_pool", user_swift_pool.pool, f); + encode_json("user_uid_pool ", user_uid_pool.pool, f); +} + +static void decode_json(const char *field, rgw_bucket& bucket, JSONObj *obj) +{ + string pool; + JSONDecoder::decode_json(field, pool, obj); + if (pool[0] != '.') { + pool = string(".") + pool; + } + bucket = rgw_bucket(pool.c_str()); +} + +void RGWZoneParams::decode_json(JSONObj *obj) +{ + ::decode_json("domain_root", domain_root, obj); + ::decode_json("control_pool", control_pool, obj); + ::decode_json("gc_pool", gc_pool, obj); + ::decode_json("log_pool", log_pool, obj); + ::decode_json("intent_log_pool", intent_log_pool, obj); + ::decode_json("usage_log_pool", usage_log_pool, obj); + ::decode_json("user_keys_pool", user_keys_pool, obj); + ::decode_json("user_email_pool", user_email_pool, obj); + ::decode_json("user_swift_pool", user_swift_pool, obj); + ::decode_json("user_uid_pool ", user_uid_pool, obj); +} + +void RGWZone::dump(Formatter *f) const +{ + encode_json("name", name, f); + encode_json("endpoints", endpoints, f); +} + +void RGWZone::decode_json(JSONObj *obj) +{ + JSONDecoder::decode_json("name", name, obj); + JSONDecoder::decode_json("endpoints", endpoints, obj); +} + +void RGWRegion::dump(Formatter *f) const +{ + encode_json("name", name, f); + encode_json("endpoints", endpoints, f); + encode_json("master_zone", master_zone, f); + encode_json("zones", zones, f); +} + +void RGWRegion::decode_json(JSONObj *obj) +{ + JSONDecoder::decode_json("name", name, obj); + JSONDecoder::decode_json("endpoints", endpoints, obj); + JSONDecoder::decode_json("master_zone", master_zone, obj); + JSONDecoder::decode_json("zones", zones, obj); +} + + +void RGWRegionMap::dump(Formatter *f) const +{ + encode_json("regions", regions, f); + encode_json("master_region", master_region, f); +} + +static void decode_regions(map& regions, JSONObj *o) +{ + RGWRegion r; + r.decode_json(o); + regions[r.name] = r; +} + + +void RGWRegionMap::decode_json(JSONObj *obj) +{ + JSONDecoder::decode_json("regions", regions, decode_regions, obj); +} diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 6d22a334bebd3..6afbce21e32db 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -75,46 +75,6 @@ void RGWZoneParams::init_default() user_uid_pool = ".users.uid"; } -void RGWZoneParams::dump(Formatter *f) const -{ - f->open_object_section("zone"); - f->dump_string("domain_root", domain_root.pool); - f->dump_string("control_pool", control_pool.pool); - f->dump_string("gc_pool", gc_pool.pool); - f->dump_string("log_pool", log_pool.pool); - f->dump_string("intent_log_pool", intent_log_pool.pool); - f->dump_string("usage_log_pool", usage_log_pool.pool); - f->dump_string("user_keys_pool", user_keys_pool.pool); - f->dump_string("user_email_pool", user_email_pool.pool); - f->dump_string("user_swift_pool", user_swift_pool.pool); - f->dump_string("user_uid_pool ", user_uid_pool.pool); - f->close_section(); -} - -static void decode_json(const char *field, rgw_bucket& bucket, JSONObj *obj) -{ - string pool; - JSONDecoder::decode_json(field, pool, obj); - if (pool[0] != '.') { - pool = string(".") + pool; - } - bucket = rgw_bucket(pool.c_str()); -} - -void RGWZoneParams::decode_json(JSONObj *obj) -{ - ::decode_json("domain_root", domain_root, obj); - ::decode_json("control_pool", control_pool, obj); - ::decode_json("gc_pool", gc_pool, obj); - ::decode_json("log_pool", log_pool, obj); - ::decode_json("intent_log_pool", intent_log_pool, obj); - ::decode_json("usage_log_pool", usage_log_pool, obj); - ::decode_json("user_keys_pool", user_keys_pool, obj); - ::decode_json("user_email_pool", user_email_pool, obj); - ::decode_json("user_swift_pool", user_swift_pool, obj); - ::decode_json("user_uid_pool ", user_uid_pool, obj); -} - int RGWZoneParams::init(CephContext *cct, RGWRados *store) { string pool_name = cct->_conf->rgw_zone_root_pool; @@ -158,74 +118,6 @@ int RGWZoneParams::store_info(CephContext *cct, RGWRados *store) return ret; } -void RGWZone::dump(Formatter *f) const -{ - f->dump_string("name", name); - f->open_array_section("endpoints"); - for (list::const_iterator iter = endpoints.begin(); iter != endpoints.end(); ++iter) { - f->dump_string("endpoint", *iter); - } - f->close_section(); -} - -void RGWZone::decode_json(JSONObj *obj) -{ - JSONDecoder::decode_json("name", name, obj); - JSONDecoder::decode_json("endpoints", endpoints, obj); -} - -void RGWRegion::dump(Formatter *f) const -{ - f->dump_string("name", name); - f->open_array_section("endpoints"); - for (list::const_iterator iter = endpoints.begin(); iter != endpoints.end(); ++iter) { - f->dump_string("endpoint", *iter); - } - f->close_section(); - f->dump_string("master_zone", master_zone); - f->open_array_section("zones"); - for (list::const_iterator iter = zones.begin(); iter != zones.end(); ++iter) { - const RGWZone& zone = *iter; - f->open_object_section("zone"); - zone.dump(f); - f->close_section(); - } - f->close_section(); -} - -void RGWRegion::decode_json(JSONObj *obj) -{ - JSONDecoder::decode_json("name", name, obj); - JSONDecoder::decode_json("endpoints", endpoints, obj); - JSONDecoder::decode_json("master_zone", master_zone, obj); - JSONDecoder::decode_json("zones", zones, obj); -} - - -void RGWRegionMap::dump(Formatter *f) const -{ - f->open_array_section("regions"); - for (map::const_iterator iter = regions.begin(); iter != regions.end(); ++iter) { - const RGWRegion& region = iter->second; - f->open_object_section("region"); - region.dump(f); - f->close_section(); - } - f->close_section(); - f->dump_string("master_region", master_region); -} - -void RGWRegionMap::decode_json(JSONObj *obj) -{ - list regions_list; - JSONDecoder::decode_json("regions", regions_list, obj); - - for (list::iterator iter = regions_list.begin(); iter != regions_list.end(); ++iter) { - RGWRegion& region = *iter; - regions[region.name] = region; - } -} - void RGWObjManifest::append(RGWObjManifest& m) { map::iterator iter; -- 2.39.5