]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: region management encoding/decoding changes
authorYehuda Sadeh <yehuda@inktank.com>
Tue, 12 Feb 2013 23:52:16 +0000 (15:52 -0800)
committerYehuda Sadeh <yehuda@inktank.com>
Wed, 8 May 2013 17:54:53 +0000 (10:54 -0700)
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/common/ceph_json.h
src/rgw/rgw_json_enc.cc
src/rgw/rgw_rados.cc

index 4d7c85c44eb38642e3851ac6b3690ae42762d291..ec049e5a2955cd97d202f25d9a4605c605bbff03 100644 (file)
@@ -232,18 +232,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);
@@ -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<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,
index 04dfb67c71d6ad66e3caab0d26698e12258de2ca..cfb8c0de9d2d752471e2d23ca72b6c5935d5e01b 100644 (file)
@@ -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<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);
+}
 
index 6d22a334bebd38c1bb33ea230610b13da55a5d43..6afbce21e32dbe2d599572023762b2cd822569ed 100644 (file)
@@ -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<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;