bool DaosStore::is_meta_master() { return true; }
-int DaosStore::forward_request_to_master(const DoutPrefixProvider* dpp,
- User* user, obj_version* objv,
- bufferlist& in_data, JSONParser* jp,
- req_info& info, optional_yield y) {
- return DAOS_NOT_IMPLEMENTED_LOG(dpp);
-}
-
-int DaosStore::forward_iam_request_to_master(const DoutPrefixProvider* dpp,
- const RGWAccessKey& key,
- obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser,
- req_info& info, optional_yield y) {
- return DAOS_NOT_IMPLEMENTED_LOG(dpp);
-}
-
std::string DaosStore::zone_unique_id(uint64_t unique_num) { return ""; }
std::string DaosStore::zone_unique_trans_id(const uint64_t unique_num) {
const rgw_bucket& b, std::unique_ptr<Bucket>* bucket,
optional_yield y) override;
virtual bool is_meta_master() override;
- virtual int forward_request_to_master(const DoutPrefixProvider* dpp,
- User* user, obj_version* objv,
- bufferlist& in_data, JSONParser* jp,
- req_info& info,
- optional_yield y) override;
- virtual int forward_iam_request_to_master(
- const DoutPrefixProvider* dpp, const RGWAccessKey& key, obj_version* objv,
- bufferlist& in_data, RGWXMLDecoder::XMLParser* parser, req_info& info,
- optional_yield y) 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;
return true;
}
-int MotrStore::forward_request_to_master(const DoutPrefixProvider *dpp, User* user, obj_version *objv,
- bufferlist& in_data,
- JSONParser *jp, req_info& info,
- optional_yield y)
-{
- return 0;
-}
-
-int MotrStore::forward_iam_request_to_master(const DoutPrefixProvider *dpp, const RGWAccessKey& key, obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser, req_info& info,
- optional_yield y)
-{
- return 0;
-}
-
std::string MotrStore::zone_unique_id(uint64_t unique_num)
{
return "";
int load_bucket(const DoutPrefixProvider *dpp, User* u, const rgw_bucket& b,
std::unique_ptr<Bucket>* bucket, optional_yield y) override;
virtual bool is_meta_master() override;
- virtual int forward_request_to_master(const DoutPrefixProvider *dpp, User* user, obj_version* objv,
- bufferlist& in_data, JSONParser *jp, req_info& info,
- optional_yield y) override;
- virtual int forward_iam_request_to_master(const DoutPrefixProvider *dpp, const RGWAccessKey& key, obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser, req_info& info,
- optional_yield y) 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;
return svc()->zone->is_meta_master();
}
-int RadosStore::forward_request_to_master(const DoutPrefixProvider *dpp, User* user, obj_version* objv,
- bufferlist& in_data,
- JSONParser* jp, req_info& info,
- optional_yield y)
-{
- if (is_meta_master()) {
- /* We're master, don't forward */
- return 0;
- }
-
- if (!svc()->zone->get_master_conn()) {
- ldpp_dout(dpp, 0) << "rest connection is invalid" << dendl;
- return -EINVAL;
- }
- ldpp_dout(dpp, 0) << "sending request to master zonegroup" << dendl;
- bufferlist response;
- std::string uid_str = user->get_id().to_str();
-#define MAX_REST_RESPONSE (128 * 1024) // we expect a very small response
- int ret = svc()->zone->get_master_conn()->forward(dpp, rgw_user(uid_str), info,
- objv, MAX_REST_RESPONSE,
- &in_data, &response, y);
- if (ret < 0)
- return ret;
-
- ldpp_dout(dpp, 20) << "response: " << response.c_str() << dendl;
- if (jp && !jp->parse(response.c_str(), response.length())) {
- ldpp_dout(dpp, 0) << "failed parsing response from master zonegroup" << dendl;
- return -EINVAL;
- }
-
- return 0;
-}
-
-int RadosStore::forward_iam_request_to_master(const DoutPrefixProvider *dpp, const RGWAccessKey& key, obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser, req_info& info,
- optional_yield y)
-{
- if (is_meta_master()) {
- /* We're master, don't forward */
- return 0;
- }
-
- if (!svc()->zone->get_master_conn()) {
- ldpp_dout(dpp, 0) << "rest connection is invalid" << dendl;
- return -EINVAL;
- }
- ldpp_dout(dpp, 0) << "sending request to master zonegroup" << dendl;
- bufferlist response;
-#define MAX_REST_RESPONSE (128 * 1024) // we expect a very small response
- int ret = svc()->zone->get_master_conn()->forward_iam_request(dpp, key, info,
- objv, MAX_REST_RESPONSE,
- &in_data, &response, y);
- if (ret < 0)
- return ret;
-
- ldpp_dout(dpp, 20) << "response: " << response.c_str() << dendl;
-
- std::string r = response.c_str();
- std::string str_to_search = """;
- std::string str_to_replace = "\"";
- boost::replace_all(r, str_to_search, str_to_replace);
- ldpp_dout(dpp, 20) << "r: " << r.c_str() << dendl;
-
- if (parser && !parser->parse(r.c_str(), r.length(), 1)) {
- ldpp_dout(dpp, 0) << "ERROR: failed to parse response from master zonegroup" << dendl;
- return -EIO;
- }
-
- return 0;
-}
-
std::string RadosStore::zone_unique_id(uint64_t unique_num)
{
return svc()->zone_utils->unique_id(unique_num);
int load_bucket(const DoutPrefixProvider* dpp, User* u, const rgw_bucket& b,
std::unique_ptr<Bucket>* bucket, optional_yield y) override;
virtual bool is_meta_master() override;
- virtual int forward_request_to_master(const DoutPrefixProvider *dpp, User* user, obj_version* objv,
- bufferlist& in_data, JSONParser* jp, req_info& info,
- optional_yield y) override;
- virtual int forward_iam_request_to_master(const DoutPrefixProvider *dpp, const RGWAccessKey& key, obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser, req_info& info,
- optional_yield y) 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;
std::unique_ptr<Bucket>* bucket, optional_yield y) = 0;
/** For multisite, this driver is the zone's master */
virtual bool is_meta_master() = 0;
- /** For multisite, forward an OP to the zone's master */
- virtual int forward_request_to_master(const DoutPrefixProvider *dpp, User* user, obj_version* objv,
- bufferlist& in_data, JSONParser* jp, req_info& info,
- optional_yield y) = 0;
- virtual int forward_iam_request_to_master(const DoutPrefixProvider *dpp, const RGWAccessKey& key, obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser, req_info& info,
- optional_yield y) = 0;
/** Get zone info for this driver */
virtual Zone* get_zone() = 0;
/** Get a unique ID specific to this zone. */
return true;
}
- int DBStore::forward_request_to_master(const DoutPrefixProvider *dpp, User* user, obj_version *objv,
- bufferlist& in_data,
- JSONParser *jp, req_info& info,
- optional_yield y)
- {
- return 0;
- }
-
- int DBStore::forward_iam_request_to_master(const DoutPrefixProvider *dpp, const RGWAccessKey& key, obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser, req_info& info,
- optional_yield y)
- {
- return 0;
- }
-
std::string DBStore::zone_unique_id(uint64_t unique_num)
{
return "";
int load_bucket(const DoutPrefixProvider *dpp, User* u, const rgw_bucket& b,
std::unique_ptr<Bucket>* bucket, optional_yield y) override;
virtual bool is_meta_master() override;
- virtual int forward_request_to_master(const DoutPrefixProvider *dpp, User* user, obj_version* objv,
- bufferlist& in_data, JSONParser *jp, req_info& info,
- optional_yield y) override;
- virtual int forward_iam_request_to_master(const DoutPrefixProvider *dpp, const RGWAccessKey& key, obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser, req_info& info,
- optional_yield y) 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;
return next->is_meta_master();
}
-int FilterDriver::forward_request_to_master(const DoutPrefixProvider *dpp,
- User* user, obj_version* objv,
- bufferlist& in_data,
- JSONParser* jp, req_info& info,
- optional_yield y)
-{
- return next->forward_request_to_master(dpp, user, objv, in_data, jp, info, y);
-}
-
-int FilterDriver::forward_iam_request_to_master(const DoutPrefixProvider *dpp,
- const RGWAccessKey& key,
- obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser,
- req_info& info,
- optional_yield y)
-{
- return next->forward_iam_request_to_master(dpp, key, objv, in_data, parser, info, y);
-}
-
std::string FilterDriver::zone_unique_id(uint64_t unique_num)
{
return next->zone_unique_id(unique_num);
const rgw_bucket& b, std::unique_ptr<Bucket>* bucket,
optional_yield y) override;
virtual bool is_meta_master() override;
- virtual int forward_request_to_master(const DoutPrefixProvider *dpp, User* user,
- obj_version* objv, bufferlist& in_data,
- JSONParser* jp, req_info& info,
- optional_yield y) override;
- virtual int forward_iam_request_to_master(const DoutPrefixProvider *dpp,
- const RGWAccessKey& key,
- obj_version* objv,
- bufferlist& in_data,
- RGWXMLDecoder::XMLParser* parser,
- req_info& info,
- optional_yield y) override;
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;