Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
return -EPERM;
}
- if (!s->system_request && (required_mask & RGW_OP_TYPE_MODIFY) && store->get_zone().is_read_only()) {
+ if (!s->system_request && (required_mask & RGW_OP_TYPE_MODIFY) && !store->zone_is_writeable()) {
ldout(s->cct, 5) << "NOTICE: modify request to a read-only zone by a non-system user, permission denied" << dendl;
return -EPERM;
}
return ret;
}
+ writeable_zone = (zone_public_config.tier_type.empty() || zone_public_config.tier_type == "rgw");
+
init_unique_trans_id_deps();
finisher = new Finisher(cct);
RGWSyncModulesManager *sync_modules_manager{nullptr};
RGWSyncModuleInstanceRef sync_module;
+ bool writeable_zone{false};
RGWZoneGroup zonegroup;
RGWZone zone_public_config; /* external zone params, e.g., entrypoints, log flags, etc. */
return zone_public_config;
}
+ bool zone_is_writeable() {
+ return writeable_zone && !get_zone().is_read_only();
+ }
+
uint32_t get_zone_short_id() const {
return zone_short_id;
}