From fe991ba65022a7f70b0b7163fafd960d676a8e5d Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Wed, 3 Mar 2021 16:55:23 -0500 Subject: [PATCH] radosgw-admin: 'sync status' shows enabled/disabled zonegroup features Signed-off-by: Casey Bodley --- src/rgw/rgw_admin.cc | 18 ++++++++++++++++++ src/rgw/rgw_sal_rados.h | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index e5438a0985b64..65c8f4e0b39f6 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -2415,6 +2415,16 @@ static void tab_dump(const string& header, int width, const list& entrie } } +// return features that are supported but not enabled +static auto get_disabled_features(const rgw::zone_features::set& enabled) { + auto features = rgw::zone_features::set{rgw::zone_features::supported.begin(), + rgw::zone_features::supported.end()}; + for (const auto& feature : enabled) { + features.erase(feature); + } + return features; +} + static void sync_status(Formatter *formatter) { @@ -2427,6 +2437,14 @@ static void sync_status(Formatter *formatter) cout << std::setw(width) << "zonegroup" << std::setw(1) << " " << zonegroup.get_id() << " (" << zonegroup.get_name() << ")" << std::endl; cout << std::setw(width) << "zone" << std::setw(1) << " " << zone->get_id() << " (" << zone->get_name() << ")" << std::endl; + const auto& rzg = + static_cast(zonegroup).get_group(); + + cout << std::setw(width) << "zonegroup features enabled: " << rzg.enabled_features << std::endl; + if (auto d = get_disabled_features(rzg.enabled_features); !d.empty()) { + cout << std::setw(width) << " disabled: " << d << std::endl; + } + list md_status; if (store->is_meta_master()) { diff --git a/src/rgw/rgw_sal_rados.h b/src/rgw/rgw_sal_rados.h index 1e92249cea7ea..2640fd5cbfe28 100644 --- a/src/rgw/rgw_sal_rados.h +++ b/src/rgw/rgw_sal_rados.h @@ -85,7 +85,7 @@ public: return group.zones.size(); } virtual int get_placement_tier(const rgw_placement_rule& rule, std::unique_ptr* tier); - const RGWZoneGroup& get_group() { return group; } + const RGWZoneGroup& get_group() const { return group; } }; class RadosZone : public Zone { -- 2.39.5