]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add support to zonegroupmap set
authorOrit Wasserman <owasserm@redhat.com>
Tue, 20 Oct 2015 08:19:02 +0000 (10:19 +0200)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 12 Feb 2016 00:13:17 +0000 (16:13 -0800)
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
src/rgw/rgw_admin.cc
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h

index c0fd0316aa936c3d59f69e98b08f3172590406cd..fb865aa0b00e534bddbfa742762d2c1147a1a03a 100644 (file)
@@ -2450,7 +2450,16 @@ int main(int argc, char **argv)
          return ret;
        }
 
-       #warning need to implement for backward compatabilty
+       RGWPeriod period;
+       ret = period.init(g_ceph_context, store);
+       if (ret < 0) {
+         cerr << "ERROR: failed to read current period info: " << cpp_strerror(-ret) << std::endl;
+         return ret;
+       }
+
+       period.fork();
+       period.update(zonegroupmap);
+       period.store_info(false);
 
        encode_json("zonegroup-map", zonegroupmap, formatter);
        formatter->flush(cout);
index da300ee3c83bbe4e7280228fc0faa8a0f8477a47..fb0989a7d44b3e93c4e8ea76d7a20293ae0cdac6 100644 (file)
@@ -1061,6 +1061,19 @@ void RGWPeriod::fork()
   period_map.reset();
 }
 
+void RGWPeriod::update(const RGWZoneGroupMap& map)
+{
+  for (std::map<string, RGWZoneGroup>::const_iterator iter = map.zonegroups.begin();
+       iter != map.zonegroups.end(); iter++) {
+    period_map.zonegroups_by_api[iter->second.api_name] = iter->second;
+    period_map.zonegroups[iter->second.get_name()] = iter->second;
+  }
+
+  period_config.bucket_quota = map.bucket_quota;
+  period_config.user_quota = map.user_quota;
+  period_map.master_zonegroup = map.master_zonegroup;
+}
+
 int RGWZoneParams::create_default(bool old_format)
 {
   name = default_zone_name;
index 8f4124080ac48cb9176fb417048e32572b832510..fce95a364a62390bb009445b72b531ea390a851e 100644 (file)
@@ -1380,6 +1380,8 @@ public:
     sync_status = _sync_status;
   }
 
+  void update(const RGWZoneGroupMap& map);
+
   int get_zonegroup(RGWZoneGroup& zonegroup,
                    const string& zonegroup_id);