name = id;
}
+ post_process_params();
+
return 0;
}
if (!endpoints.empty()) {
zone.endpoints = endpoints;
}
+
+ post_process_params();
+
return update();
}
+void RGWZoneGroup::post_process_params()
+{
+ bool log_data = zones.size() > 1;
+
+ for (map<string, RGWZone>::iterator iter = zones.begin(); iter != zones.end(); ++iter) {
+ RGWZone& zone = iter->second;
+ zone.log_data = log_data;
+ zone.log_meta = (is_master && zone.name == master_zone);
+
+ RGWZoneParams zone_params(zone.id, zone.name);
+ int ret = zone_params.init(cct, store);
+ if (ret < 0) {
+ ldout(cct, 0) << "WARNING: could not read zone params for zone id=" << zone.id << " name=" << zone.name << dendl;
+ continue;
+ }
+
+ for (map<string, RGWZonePlacementInfo>::iterator iter = zone_params.placement_pools.begin();
+ iter != zone_params.placement_pools.end(); ++iter) {
+ const string& placement_name = iter->first;
+ if (placement_targets.find(placement_name) == placement_targets.end()) {
+ RGWZoneGroupPlacementTarget placement_target;
+ placement_target.name = placement_name;
+ placement_targets[placement_name] = placement_target;
+ }
+ }
+
+ if (default_placement.empty() && !placement_targets.empty()) {
+ default_placement = placement_targets.begin()->first;
+ }
+
+ }
+}
+
int RGWZoneGroup::remove_zone(const RGWZoneParams& zone_params)
{
map<string, RGWZone>::iterator iter = zones.find(zone_params.get_id());
zones.erase(iter);
+ post_process_params();
+
return update();
}
realm_id(_realm_id) {}
bool is_master_zonegroup() const { return is_master;}
- void update_master(bool _is_master) { is_master = _is_master;}
+ void update_master(bool _is_master) {
+ is_master = _is_master;
+ post_process_params();
+ }
+ void post_process_params();
void encode(bufferlist& bl) const {
ENCODE_START(4, 1, bl);