From c46e5ccf006b4c34dcee5651e28a9a4cc8179561 Mon Sep 17 00:00:00 2001 From: Orit Wasserman Date: Tue, 14 Jul 2015 10:53:43 +0200 Subject: [PATCH] rgw: zonegroup json encoding/decoding with backward compatability Signed-off-by: Orit Wasserman --- src/rgw/rgw_json_enc.cc | 24 ++++++++++++++++++------ src/rgw/rgw_rados.cc | 9 +++++++-- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/rgw/rgw_json_enc.cc b/src/rgw/rgw_json_enc.cc index c74de721a8c80..9626fb59088fc 100644 --- a/src/rgw/rgw_json_enc.cc +++ b/src/rgw/rgw_json_enc.cc @@ -625,7 +625,7 @@ void RGWBucketInfo::dump(Formatter *f) const encode_json("creation_time", creation_time, f); encode_json("owner", owner.to_str(), f); encode_json("flags", flags, f); - encode_json("region", zonegroup, f); + encode_json("zonegroup", zonegroup, f); encode_json("placement_rule", placement_rule, f); encode_json("has_instance_obj", has_instance_obj, f); encode_json("quota", quota, f); @@ -643,7 +643,11 @@ void RGWBucketInfo::decode_json(JSONObj *obj) { JSONDecoder::decode_json("creation_time", creation_time, obj); JSONDecoder::decode_json("owner", owner, obj); JSONDecoder::decode_json("flags", flags, obj); - JSONDecoder::decode_json("region", zonegroup, obj); + JSONDecoder::decode_json("zonegroup", zonegroup, obj); + /* backward compatability with region */ + if (zonegroup.empty()) { + JSONDecoder::decode_json("region", zonegroup, obj); + } JSONDecoder::decode_json("placement_rule", placement_rule, obj); JSONDecoder::decode_json("has_instance_obj", has_instance_obj, obj); JSONDecoder::decode_json("quota", quota, obj); @@ -892,16 +896,24 @@ void RGWZoneGroup::decode_json(JSONObj *obj) void RGWZoneGroupMap::dump(Formatter *f) const { - encode_json("regions", zonegroups, f); - encode_json("master_region", master_zonegroup, f); + encode_json("zonegroups", zonegroups, f); + encode_json("master_zonegroup", master_zonegroup, f); encode_json("bucket_quota", bucket_quota, f); encode_json("user_quota", user_quota, f); } void RGWZoneGroupMap::decode_json(JSONObj *obj) { - JSONDecoder::decode_json("regions", zonegroups, obj); - JSONDecoder::decode_json("master_region", master_zonegroup, obj); + JSONDecoder::decode_json("zonegroup", zonegroups, obj); + /* backward compatability with region */ + if (zonegroups.empty()) { + JSONDecoder::decode_json("regions", zonegroups, obj); + } + JSONDecoder::decode_json("master_zonegroup", master_zonegroup, obj); + /* backward compatability with region */ + if (master_zonegroup.empty()) { + JSONDecoder::decode_json("master_region", master_zonegroup, obj); + } JSONDecoder::decode_json("user_quota", user_quota, obj); } diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index a093dd5f15cf0..a058aa22b85dd 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -104,11 +104,16 @@ struct bucket_info_entry { static RGWChainedCacheImpl binfo_cache; void RGWDefaultZoneGroupInfo::dump(Formatter *f) const { - encode_json("default_region", default_zonegroup, f); + encode_json("default_zonegroup", default_zonegroup, f); } void RGWDefaultZoneGroupInfo::decode_json(JSONObj *obj) { - JSONDecoder::decode_json("default_region", default_zonegroup, obj); + + JSONDecoder::decode_json("default_zonegroup", default_zonegroup, obj); + /* backward compatability with region */ + if (default_zonegroup.empty()) { + JSONDecoder::decode_json("default_region", default_zonegroup, obj); + } } int RGWZoneGroup::get_pool_name(CephContext *cct, string *pool_name) -- 2.39.5