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);
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,
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);
+}
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;
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;