From: Casey Bodley Date: Fri, 7 Jul 2023 17:00:06 +0000 (-0400) Subject: rgw: don't enable all zone features by default X-Git-Tag: v18.1.3~40^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=772e03bfa3889386f2486f1f59258afb2e8caac2;p=ceph-ci.git rgw: don't enable all zone features by default on zonegroup creation, all `supported` features get enabled by default. however, some features should remain opt-in. add a separate list of `enabled` features for the subset of features we want enabled by default on zonegroup creation Signed-off-by: Casey Bodley (cherry picked from commit cdb1be836cc1b8c2e8f178bc00bad24d2b8413bf) Conflicts: src/rgw/driver/rados/rgw_zone.cc no create_default_zonegroup() --- diff --git a/doc/radosgw/multisite.rst b/doc/radosgw/multisite.rst index f497425fd8b..46153a02b94 100644 --- a/doc/radosgw/multisite.rst +++ b/doc/radosgw/multisite.rst @@ -1574,11 +1574,11 @@ On creation of new zones and zonegroups, all known features are supported/enable Supported Features ------------------ -+---------------------------+---------+ -| Feature | Release | -+===========================+=========+ -| :ref:`feature_resharding` | Reef | -+---------------------------+---------+ ++---------------------------+---------+----------+ +| Feature | Release | Default | ++===========================+=========+==========+ +| :ref:`feature_resharding` | Reef | Enabled | ++---------------------------+---------+----------+ .. _feature_resharding: diff --git a/src/rgw/driver/json_config/store.cc b/src/rgw/driver/json_config/store.cc index 330aa344dc5..cf5adda2512 100644 --- a/src/rgw/driver/json_config/store.cc +++ b/src/rgw/driver/json_config/store.cc @@ -149,7 +149,8 @@ void sanity_check_config(const DoutPrefixProvider* dpp, DecodedConfig& config) throw std::system_error(-r, std::system_category()); } - config.zonegroup.enabled_features = std::move(enable_features); + config.zonegroup.enabled_features.insert(rgw::zone_features::enabled.begin(), + rgw::zone_features::enabled.end()); } // insert the default placement target if it doesn't exist diff --git a/src/rgw/driver/rados/rgw_zone.cc b/src/rgw/driver/rados/rgw_zone.cc index 339d337b6d4..ed09f24f6c2 100644 --- a/src/rgw/driver/rados/rgw_zone.cc +++ b/src/rgw/driver/rados/rgw_zone.cc @@ -81,10 +81,12 @@ int RGWZoneGroup::create_default(const DoutPrefixProvider *dpp, optional_yield y default_zone.id = zone_params.get_id(); master_zone = default_zone.id; - // enable all supported features - enabled_features.insert(rgw::zone_features::supported.begin(), - rgw::zone_features::supported.end()); - default_zone.supported_features = enabled_features; + // initialize supported zone features + default_zone.supported_features.insert(rgw::zone_features::supported.begin(), + rgw::zone_features::supported.end()); + // enable default zonegroup features + enabled_features.insert(rgw::zone_features::enabled.begin(), + rgw::zone_features::enabled.end()); r = create(dpp, y); if (r < 0 && r != -EEXIST) { diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 7ce0beb9622..9dbf290f160 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -5150,9 +5150,9 @@ int main(int argc, const char **argv) zonegroup.api_name = (api_name.empty() ? zonegroup_name : api_name); zonegroup.enabled_features = enable_features; - if (zonegroup.enabled_features.empty()) { // enable all features by default - zonegroup.enabled_features.insert(rgw::zone_features::supported.begin(), - rgw::zone_features::supported.end()); + if (zonegroup.enabled_features.empty()) { // enable features by default + zonegroup.enabled_features.insert(rgw::zone_features::enabled.begin(), + rgw::zone_features::enabled.end()); } for (const auto& feature : disable_features) { auto i = zonegroup.enabled_features.find(feature); diff --git a/src/rgw/rgw_zone_features.h b/src/rgw/rgw_zone_features.h index b787ffc5a6b..7e47f8cf4a7 100644 --- a/src/rgw/rgw_zone_features.h +++ b/src/rgw/rgw_zone_features.h @@ -29,6 +29,11 @@ inline constexpr bool supports(std::string_view feature) { return false; } +// static list of features enabled by default on new zonegroups +inline constexpr std::initializer_list enabled = { + resharding, +}; + // enable string_view overloads for find() contains() etc struct feature_less : std::less {