]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: don't enable all zone features by default
authorCasey Bodley <cbodley@redhat.com>
Fri, 7 Jul 2023 17:00:06 +0000 (13:00 -0400)
committerCasey Bodley <cbodley@redhat.com>
Fri, 7 Jul 2023 18:00:36 +0000 (14:00 -0400)
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 <cbodley@redhat.com>
doc/radosgw/multisite.rst
src/rgw/driver/json_config/store.cc
src/rgw/driver/rados/rgw_zone.cc
src/rgw/rgw_admin.cc
src/rgw/rgw_zone_features.h

index 4c3722a603d532425fefd072826107af13b80b69..20dd32071cb72c53f57032dcbafe85f8f01977c0 100644 (file)
@@ -1595,11 +1595,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:
 
index 330aa344dc522b98678598e0116b90a6e7408d51..cf5adda2512c20fd5b87ac2855b58fa89113b255 100644 (file)
@@ -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
index 9afd62a75ae44b8a16a6e0a304a4a58c63cd91e4..5ece0984dae10aa76288664b6332594c98000b05 100644 (file)
@@ -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) {
@@ -886,8 +888,8 @@ static int create_default_zonegroup(const DoutPrefixProvider* dpp,
   info.is_master = true;
 
   // enable all supported features
-  info.enabled_features.insert(rgw::zone_features::supported.begin(),
-                               rgw::zone_features::supported.end());
+  info.enabled_features.insert(rgw::zone_features::enabled.begin(),
+                               rgw::zone_features::enabled.end());
 
   // add the zone to the zonegroup
   bool is_master = true;
index dbf28c5a22a29538e5c73ed6d9f25e9765141382..4f8ae4e1cff33bcbdfae1d7eb2f68ad2d88508da 100644 (file)
@@ -5152,9 +5152,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);
index b787ffc5a6bfa63a692e1ef6077a13f26cdda546..7e47f8cf4a749d261bc09976cef5ef5ad5b54f25 100644 (file)
@@ -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<std::string_view> enabled = {
+  resharding,
+};
+
 
 // enable string_view overloads for find() contains() etc
 struct feature_less : std::less<std::string_view> {