From: Yehuda Sadeh Date: Thu, 23 Jan 2020 02:45:26 +0000 (-0800) Subject: rgw: bucket sync: don't allow replication api on legacy config X-Git-Tag: v15.1.0~22^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=36e0c75e2f609de7d2e4a98ada7809f0225e99da;p=ceph.git rgw: bucket sync: don't allow replication api on legacy config Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_bucket_sync.cc b/src/rgw/rgw_bucket_sync.cc index 2c7efc22920e..377bd8f05668 100644 --- a/src/rgw/rgw_bucket_sync.cc +++ b/src/rgw/rgw_bucket_sync.cc @@ -675,6 +675,7 @@ RGWBucketSyncPolicyHandler::RGWBucketSyncPolicyHandler(RGWSI_Zone *_zone_svc, if (sync_policy.empty()) { RGWSyncPolicyCompat::convert_old_sync_config(zone_svc, sync_modules_svc, &sync_policy); + legacy_config = true; } } @@ -695,6 +696,7 @@ RGWBucketSyncPolicyHandler::RGWBucketSyncPolicyHandler(const RGWBucketSyncPolicy } } } + legacy_config = parent->legacy_config; bucket = _bucket_info.bucket; zone_svc = parent->zone_svc; bucket_sync_svc = parent->bucket_sync_svc; @@ -710,6 +712,7 @@ RGWBucketSyncPolicyHandler::RGWBucketSyncPolicyHandler(const RGWBucketSyncPolicy 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; diff --git a/src/rgw/rgw_bucket_sync.h b/src/rgw/rgw_bucket_sync.h index 8ded9d623795..488060b7a60a 100644 --- a/src/rgw/rgw_bucket_sync.h +++ b/src/rgw/rgw_bucket_sync.h @@ -279,6 +279,7 @@ static inline ostream& operator<<(ostream& os, const RGWBucketSyncFlowManager::e } class RGWBucketSyncPolicyHandler { + bool legacy_config{false}; const RGWBucketSyncPolicyHandler *parent{nullptr}; RGWSI_Zone *zone_svc; RGWSI_Bucket_Sync *bucket_sync_svc; @@ -403,5 +404,9 @@ public: const rgw_sync_policy_info& get_sync_policy() const { return sync_policy; } + + bool is_legacy_config() const { + return legacy_config; + } }; diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index def86793e02d..8b63fa80ef42 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -48,6 +48,7 @@ #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" @@ -4321,6 +4322,12 @@ RGWOp *RGWHandler_REST_Bucket_S3::op_put() } 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;