Using multisite sync policy, zones within a zonegroup can be configured
not to sync from certain zones. Filter such zones while reading sync
status.
Fixes: https://tracker.ceph.com/issues/62014
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit
094460c26b8fdd9a72667800b54a0cfaa5409c88)
Conflicts:
src/rgw/rgw_admin.cc (trivial: store vs driver)
return;
}
- if (!static_cast<rgw::sal::RadosStore*>(store)->svc()->zone->zone_syncs_from(static_cast<rgw::sal::RadosStore*>(store)->svc()->zone->get_zone(), *sz)) {
+ if (!static_cast<rgw::sal::RadosStore*>(store)->svc()->zone->zone_syncs_from(*sz)) {
push_ss(ss, status, tab) << string("not syncing from zone");
flush_ss(ss, status);
return;
sync_modules_svc->get_manager()->supports_data_export(source_zone.tier_type);
}
+bool RGWSI_Zone::zone_syncs_from(const RGWZone& source_zone) const
+{
+ auto target_zone = get_zone();
+ bool found = false;
+
+ for (auto s : data_sync_source_zones) {
+ if (s->id == source_zone.id) {
+ found = true;
+ break;
+ }
+ }
+ return found && target_zone.syncs_from(source_zone.name) &&
+ sync_modules_svc->get_manager()->supports_data_export(source_zone.tier_type);
+}
+
int RGWSI_Zone::search_realm_with_zone(const DoutPrefixProvider *dpp,
const rgw_zone_id& zid,
RGWRealm *prealm,
bool zone_is_writeable();
bool zone_syncs_from(const RGWZone& target_zone, const RGWZone& source_zone) const;
+ bool zone_syncs_from(const RGWZone& source_zone) const;
bool get_redirect_zone_endpoint(std::string *endpoint);
bool sync_module_supports_writes() const { return writeable_zone; }
bool sync_module_exports_data() const { return exports_data; }