]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/sal: add ZoneGroup::supports()
authorCasey Bodley <cbodley@redhat.com>
Tue, 11 Jul 2023 14:00:24 +0000 (10:00 -0400)
committerCasey Bodley <cbodley@redhat.com>
Tue, 11 Jul 2023 14:02:06 +0000 (10:02 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/driver/rados/rgw_sal_rados.h
src/rgw/rgw_sal.h
src/rgw/rgw_sal_daos.h
src/rgw/rgw_sal_dbstore.h
src/rgw/rgw_sal_filter.h
src/rgw/rgw_sal_motr.h

index 7f8a7e7b5722091446dbf67948743ace73ab45aa..d2ba6300e814194455f34072465510f8954c3bf5 100644 (file)
@@ -88,6 +88,9 @@ public:
   virtual int get_zone_by_id(const std::string& id, std::unique_ptr<Zone>* zone) override;
   virtual int get_zone_by_name(const std::string& name, std::unique_ptr<Zone>* zone) override;
   virtual int list_zones(std::list<std::string>& zone_ids) override;
+  bool supports(std::string_view feature) const override {
+    return group.supports(feature);
+  }
   virtual std::unique_ptr<ZoneGroup> clone() override {
     return std::make_unique<RadosZoneGroup>(store, group);
   }
index 9d2efccc70a3c5c524bcb0985de3c68666e09536..9b379572d8c2b80cffb7c31aa30cd429caedd0d5 100644 (file)
@@ -1500,6 +1500,8 @@ public:
   virtual int get_zone_by_name(const std::string& name, std::unique_ptr<Zone>* zone) = 0;
   /** List zones in zone group by ID */
   virtual int list_zones(std::list<std::string>& zone_ids) = 0;
+  /// Return true if the given feature is enabled in the zonegroup.
+  virtual bool supports(std::string_view feature) const = 0;
   /** Clone a copy of this zonegroup. */
   virtual std::unique_ptr<ZoneGroup> clone() = 0;
 };
index 3403b30a488fecc63201d2464d1957ec15eda043..b381156f99318f34175986ad0c779a668098e5e8 100644 (file)
@@ -431,6 +431,9 @@ class DaosZoneGroup : public StoreZoneGroup {
   virtual int get_zone_count() const override { return group.zones.size(); }
   virtual int get_placement_tier(const rgw_placement_rule& rule,
                                  std::unique_ptr<PlacementTier>* tier);
+  bool supports(std::string_view feature) const override {
+    return group.supports(feature);
+  }
   virtual std::unique_ptr<ZoneGroup> clone() override {
     return std::make_unique<DaosZoneGroup>(store, group);
   }
index b2dd3d71e93e27fe2d409407d13becbf930d57be..7fefd20afbdfaade01492c7401504a58ff50f6d2 100644 (file)
@@ -300,6 +300,9 @@ protected:
       zone_ids.clear();
       return 0;
     }
+    bool supports(std::string_view feature) const override {
+      return group->supports(feature);
+    }
     virtual std::unique_ptr<ZoneGroup> clone() override {
       std::unique_ptr<RGWZoneGroup>zg = std::make_unique<RGWZoneGroup>(*group.get());
       return std::make_unique<DBZoneGroup>(store, std::move(zg));
index b1a4ecbd92340c4a36843410608f6ac454a71040..a01c1e56c6ed4c510a40403d68eeba7a382b61cd 100644 (file)
@@ -83,6 +83,9 @@ public:
   virtual int get_zone_by_name(const std::string& name, std::unique_ptr<Zone>* zone) override;
   virtual int list_zones(std::list<std::string>& zone_ids) override
     { return next->list_zones(zone_ids); }
+  bool supports(std::string_view feature) const override {
+    return next->supports(feature);
+  }
   virtual std::unique_ptr<ZoneGroup> clone() override {
     std::unique_ptr<ZoneGroup> nzg = next->clone();
     return std::make_unique<FilterZoneGroup>(std::move(nzg));
index 91f67a20b638b34c209bdba3bc3a1ac872453fda..f2dfda2c510cb3983de94a981136fb8ea83d3402 100644 (file)
@@ -471,6 +471,9 @@ public:
     return 0;
   }
   const RGWZoneGroup& get_group() { return group; }
+  bool supports(std::string_view feature) const override {
+    return group.supports(features);
+  }
   virtual std::unique_ptr<ZoneGroup> clone() override {
     return std::make_unique<MotrZoneGroup>(store, group);
   }