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>
(cherry picked from commit
cdb1be836cc1b8c2e8f178bc00bad24d2b8413bf)
Conflicts:
src/rgw/driver/rados/rgw_zone.cc no create_default_zonegroup()
Supported Features
------------------
-+---------------------------+---------+
-| Feature | Release |
-+===========================+=========+
-| :ref:`feature_resharding` | Reef |
-+---------------------------+---------+
++---------------------------+---------+----------+
+| Feature | Release | Default |
++===========================+=========+==========+
+| :ref:`feature_resharding` | Reef | Enabled |
++---------------------------+---------+----------+
.. _feature_resharding:
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
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) {
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);
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> {