diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2013-02-12 15:52:16 -0800 |
---|---|---|
committer | Yehuda Sadeh <yehuda@inktank.com> | 2013-02-25 14:59:37 -0800 |
commit | 52309648b0d7bf94ba2fa2f3cf78b53624377f4d (patch) | |
tree | 33d4655901702ebe2be1397f6a6281d3710dc992 | |
parent | c0f64730cb133e27c65b51046fe874184cc4687c (diff) | |
download | ceph-52309648b0d7bf94ba2fa2f3cf78b53624377f4d.tar.gz |
rgw: region management encoding/decoding changes
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r-- | src/common/ceph_json.h | 33 | ||||
-rw-r--r-- | src/rgw/rgw_json_enc.cc | 75 | ||||
-rw-r--r-- | src/rgw/rgw_rados.cc | 98 |
3 files changed, 96 insertions, 110 deletions
diff --git a/src/common/ceph_json.h b/src/common/ceph_json.h index 53a2aefbf80..324aa9f52c0 100644 --- a/src/common/ceph_json.h +++ b/src/common/ceph_json.h @@ -230,18 +230,6 @@ static void encode_json(const char *name, const T& val, Formatter *f) f->close_section(); } -template<class T> -static void encode_json(const char *name, const std::list<T>& l, Formatter *f) -{ - f->open_array_section(name); - for (typename std::list<T>::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); @@ -253,6 +241,27 @@ void encode_json(const char *name, unsigned long val, Formatter *f); void encode_json(const char *name, const utime_t& val, Formatter *f); void encode_json(const char *name, const bufferlist& bl, Formatter *f); +template<class T> +static void encode_json(const char *name, const std::list<T>& l, Formatter *f) +{ + f->open_array_section(name); + for (typename std::list<T>::const_iterator iter = l.begin(); iter != l.end(); ++iter) { + encode_json("obj", *iter, f); + } + f->close_section(); +} + +template<class K, class V> +void encode_json(const char *name, const map<K, V>& m, Formatter *f) +{ + f->open_array_section(name); + typename map<K,V>::const_iterator iter; + for (iter = m.begin(); iter != m.end(); ++iter) { + encode_json("obj", iter->second, f); + } + f->close_section(); +} + template<class K, class V> 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 b9e52c44260..77e7a83cf72 100644 --- a/src/rgw/rgw_json_enc.cc +++ b/src/rgw/rgw_json_enc.cc @@ -422,4 +422,79 @@ 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); +} + +void RGWZoneParams::decode_json(JSONObj *obj) +{ + JSONDecoder::decode_json("domain_root", domain_root.pool, obj); + JSONDecoder::decode_json("control_pool", control_pool.pool, obj); + JSONDecoder::decode_json("gc_pool", gc_pool.pool, obj); + JSONDecoder::decode_json("log_pool", log_pool.pool, obj); + JSONDecoder::decode_json("intent_log_pool", intent_log_pool.pool, obj); + JSONDecoder::decode_json("usage_log_pool", usage_log_pool.pool, obj); + JSONDecoder::decode_json("user_keys_pool", user_keys_pool.pool, obj); + JSONDecoder::decode_json("user_email_pool", user_email_pool.pool, obj); + JSONDecoder::decode_json("user_swift_pool", user_swift_pool.pool, obj); + JSONDecoder::decode_json("user_uid_pool ", user_uid_pool.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<string, RGWRegion>& 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 f8fe3848a41..865a6497452 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -75,36 +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(); -} - -void RGWZoneParams::decode_json(JSONObj *obj) -{ - JSONDecoder::decode_json("domain_root", domain_root.pool, obj); - JSONDecoder::decode_json("control_pool", control_pool.pool, obj); - JSONDecoder::decode_json("gc_pool", gc_pool.pool, obj); - JSONDecoder::decode_json("log_pool", log_pool.pool, obj); - JSONDecoder::decode_json("intent_log_pool", intent_log_pool.pool, obj); - JSONDecoder::decode_json("usage_log_pool", usage_log_pool.pool, obj); - JSONDecoder::decode_json("user_keys_pool", user_keys_pool.pool, obj); - JSONDecoder::decode_json("user_email_pool", user_email_pool.pool, obj); - JSONDecoder::decode_json("user_swift_pool", user_swift_pool.pool, obj); - JSONDecoder::decode_json("user_uid_pool ", user_uid_pool.pool, obj); -} - int RGWZoneParams::init(CephContext *cct, RGWRados *store) { string pool_name = cct->_conf->rgw_zone_root_pool; @@ -148,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<string>::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<string>::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<RGWZone>::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<string, RGWRegion>::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<RGWRegion> regions_list; - JSONDecoder::decode_json("regions", regions_list, obj); - - for (list<RGWRegion>::iterator iter = regions_list.begin(); iter != regions_list.end(); ++iter) { - RGWRegion& region = *iter; - regions[region.name] = region; - } -} - void RGWObjManifest::append(RGWObjManifest& m) { map<uint64_t, RGWObjManifestPart>::iterator iter; |