s->bucket_owner = s->bucket_acl->get_owner();
std::unique_ptr<rgw::sal::ZoneGroup> zonegroup;
- int r = store->get_zone()->get_zonegroup(s->bucket->get_info().zonegroup, &zonegroup);
+ int r = store->get_zonegroup(s->bucket->get_info().zonegroup, &zonegroup);
if (!r) {
s->zonegroup_endpoint = zonegroup->get_endpoint();
s->zonegroup_name = zonegroup->get_name();
std::unique_ptr<rgw::sal::ZoneGroup> zonegroup;
string api_name;
- int ret = store->get_zone()->get_zonegroup(s->bucket->get_info().zonegroup, &zonegroup);
+ int ret = store->get_zonegroup(s->bucket->get_info().zonegroup, &zonegroup);
if (ret >= 0) {
api_name = zonegroup->get_api_name();
} else {
virtual std::string zone_unique_id(uint64_t unique_num) = 0;
/** Get a unique Swift transaction ID specific to this zone */
virtual std::string zone_unique_trans_id(const uint64_t unique_num) = 0;
+ /** Lookup a zonegroup by ID */
+ virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) = 0;
/** Get statistics about the cluster represented by this Store */
virtual int cluster_stat(RGWClusterStat& stats) = 0;
/** Get a @a Lifecycle object. Used to manage/run lifecycle transitions */
virtual std::unique_ptr<Zone> clone() = 0;
/** Get info about the zonegroup containing this zone */
virtual ZoneGroup& get_zonegroup() = 0;
- /** Get info about a zonegroup by ID */
- virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) = 0;
/** Get the ID of this zone */
virtual const rgw_zone_id& get_id() = 0;
/** Get the name of this zone */
return *zonegroup;
}
- int DBZone::get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zg)
- {
- /* XXX: for now only one zonegroup supported */
- ZoneGroup* group = new DBZoneGroup(store, std::make_unique<RGWZoneGroup>());
- if (!group)
- return -ENOMEM;
-
- zg->reset(group);
- return 0;
- }
-
const RGWZoneParams& DBZone::get_rgw_params()
{
return *zone_params;
return "";
}
+ int DBStore::get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zg)
+ {
+ /* XXX: for now only one zonegroup supported */
+ ZoneGroup* group = new DBZoneGroup(this, std::make_unique<RGWZoneGroup>());
+ if (!group)
+ return -ENOMEM;
+
+ zg->reset(group);
+ return 0;
+ }
+
int DBStore::cluster_stat(RGWClusterStat& stats)
{
return 0;
return std::make_unique<DBZone>(store);
}
virtual ZoneGroup& get_zonegroup() override;
- virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) override;
const RGWZoneParams& get_rgw_params();
virtual const rgw_zone_id& get_id() override;
virtual const std::string& get_name() const override;
virtual Zone* get_zone() { return &zone; }
virtual std::string zone_unique_id(uint64_t unique_num) override;
virtual std::string zone_unique_trans_id(const uint64_t unique_num) override;
+ virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) override;
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
virtual std::unique_ptr<Completions> get_completions(void) override;
return 0;
}
-int FilterZone::get_zonegroup(const std::string& id,
- std::unique_ptr<ZoneGroup>* zonegroup)
-{
- std::unique_ptr<ZoneGroup> ngz;
- int ret;
-
- ret = next->get_zonegroup(id, &ngz);
- if (ret != 0)
- return ret;
-
- ZoneGroup* zg = new FilterZoneGroup(std::move(ngz));
- zonegroup->reset(zg);
- return 0;
-}
-
int FilterStore::initialize(CephContext *cct, const DoutPrefixProvider *dpp)
{
zone = std::make_unique<FilterZone>(next->get_zone()->clone());
return next->zone_unique_trans_id(unique_num);
}
+int FilterStore::get_zonegroup(const std::string& id,
+ std::unique_ptr<ZoneGroup>* zonegroup)
+{
+ std::unique_ptr<ZoneGroup> ngz;
+ int ret;
+
+ ret = next->get_zonegroup(id, &ngz);
+ if (ret != 0)
+ return ret;
+
+ ZoneGroup* zg = new FilterZoneGroup(std::move(ngz));
+ zonegroup->reset(zg);
+ return 0;
+}
+
int FilterStore::cluster_stat(RGWClusterStat& stats)
{
return next->cluster_stat(stats);
virtual ZoneGroup& get_zonegroup() override {
return *group.get();
}
- virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) override;
virtual const rgw_zone_id& get_id() override {
return next->get_id();
}
virtual Zone* get_zone() override { return zone.get(); }
virtual std::string zone_unique_id(uint64_t unique_num) override;
virtual std::string zone_unique_trans_id(const uint64_t unique_num) override;
+ virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) override;
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
virtual std::unique_ptr<Completions> get_completions(void) override;
return zonegroup;
}
-int MotrZone::get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* group)
-{
- /* XXX: for now only one zonegroup supported */
- ZoneGroup* zg;
- zg = new MotrZoneGroup(store, zonegroup.get_group());
-
- group->reset(zg);
- return 0;
-}
-
const rgw_zone_id& MotrZone::get_id()
{
return cur_zone_id;
return "";
}
+int MotrStore::get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* group)
+{
+ /* XXX: for now only one zonegroup supported */
+ ZoneGroup* zg;
+ zg = new MotrZoneGroup(this, zone.zonegroup.get_group());
+
+ group->reset(zg);
+ return 0;
+}
+
int MotrStore::cluster_stat(RGWClusterStat& stats)
{
return 0;
return std::make_unique<MotrZone>(store);
}
virtual ZoneGroup& get_zonegroup() override;
- virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) override;
virtual const rgw_zone_id& get_id() override;
virtual const std::string& get_name() const override;
virtual bool is_writeable() override;
virtual Zone* get_zone() { return &zone; }
virtual std::string zone_unique_id(uint64_t unique_num) override;
virtual std::string zone_unique_trans_id(const uint64_t unique_num) override;
+ virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) override;
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
virtual std::unique_ptr<Completions> get_completions(void) override;
return svc()->zone_utils->unique_trans_id(unique_num);
}
+int RadosStore::get_zonegroup(const std::string& id,
+ std::unique_ptr<ZoneGroup>* zonegroup)
+{
+ ZoneGroup* zg;
+ RGWZoneGroup rzg;
+ int r = svc()->zone->get_zonegroup(id, rzg);
+ if (r < 0)
+ return r;
+
+ zg = new RadosZoneGroup(this, rzg);
+ if (!zg)
+ return -ENOMEM;
+
+ zonegroup->reset(zg);
+ return 0;
+}
+
int RadosStore::cluster_stat(RGWClusterStat& stats)
{
rados_cluster_stat_t rados_stats;
return 0;
}
-int RadosZone::get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup)
-{
- ZoneGroup* zg;
- RGWZoneGroup rzg;
- int r = store->svc()->zone->get_zonegroup(id, rzg);
- if (r < 0)
- return r;
-
- zg = new RadosZoneGroup(store, rzg);
- if (!zg)
- return -ENOMEM;
-
- zonegroup->reset(zg);
- return 0;
-}
-
const rgw_zone_id& RadosZone::get_id()
{
return store->svc()->zone->zone_id();
return std::make_unique<RadosZone>(store, group->clone());
}
virtual ZoneGroup& get_zonegroup() override { return *(group.get()); }
- virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) override;
virtual const rgw_zone_id& get_id() override;
virtual const std::string& get_name() const override;
virtual bool is_writeable() override;
virtual Zone* get_zone() { return zone.get(); }
virtual std::string zone_unique_id(uint64_t unique_num) override;
virtual std::string zone_unique_trans_id(const uint64_t unique_num) override;
+ virtual int get_zonegroup(const std::string& id, std::unique_ptr<ZoneGroup>* zonegroup) override;
virtual int cluster_stat(RGWClusterStat& stats) override;
virtual std::unique_ptr<Lifecycle> get_lifecycle(void) override;
virtual std::unique_ptr<Completions> get_completions(void) override;