if (sync_policy.empty()) {
RGWSyncPolicyCompat::convert_old_sync_config(zone_svc, sync_modules_svc, &sync_policy);
+ legacy_config = true;
}
}
}
}
}
+ legacy_config = parent->legacy_config;
bucket = _bucket_info.bucket;
zone_svc = parent->zone_svc;
bucket_sync_svc = parent->bucket_sync_svc;
if (_sync_policy) {
sync_policy = *_sync_policy;
}
+ legacy_config = parent->legacy_config;
bucket = _bucket;
zone_svc = parent->zone_svc;
bucket_sync_svc = parent->bucket_sync_svc;
}
class RGWBucketSyncPolicyHandler {
+ bool legacy_config{false};
const RGWBucketSyncPolicyHandler *parent{nullptr};
RGWSI_Zone *zone_svc;
RGWSI_Bucket_Sync *bucket_sync_svc;
const rgw_sync_policy_info& get_sync_policy() const {
return sync_policy;
}
+
+ bool is_legacy_config() const {
+ return legacy_config;
+ }
};
#include "rgw_crypt_sanitize.h"
#include "rgw_rest_user_policy.h"
#include "rgw_zone.h"
+#include "rgw_bucket_sync.h"
#include "services/svc_zone.h"
#include "services/svc_cls.h"
} else if (is_notification_op()) {
return RGWHandler_REST_PSNotifs_S3::create_put_op();
} else if (is_replication_op()) {
+ auto sync_policy_handler = store->svc()->zone->get_sync_policy_handler(nullopt);
+ if (!sync_policy_handler ||
+ sync_policy_handler->is_legacy_config()) {
+ return nullptr;
+ }
+
return new RGWPutBucketReplication_ObjStore_S3;
}
return new RGWCreateBucket_ObjStore_S3;