summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@inktank.com>2013-02-12 15:52:16 -0800
committerYehuda Sadeh <yehuda@inktank.com>2013-03-22 11:23:57 -0700
commitc59d08a8790ee191f1eb43cec653f82ba875e25d (patch)
tree4639609ebbae67dcb55535eb034ae6a086672420
parent75c413c3e9e52006137faaf2f4ccf56e306e0c80 (diff)
downloadceph-c59d08a8790ee191f1eb43cec653f82ba875e25d.tar.gz
rgw: region management encoding/decoding changes
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r--src/common/ceph_json.h33
-rw-r--r--src/rgw/rgw_json_enc.cc75
-rw-r--r--src/rgw/rgw_rados.cc98
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 96f6b3b255c..6a17f683cc4 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;