From: Yehuda Sadeh Date: Fri, 1 Feb 2013 01:13:06 +0000 (-0800) Subject: rgw: zone info is configurable X-Git-Tag: v0.62~159^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=78d8faf4ed75b212dc61ce19237efabe77b06e04;p=ceph.git rgw: zone info is configurable Also rename RadosParams to ZoneParams Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index d940dbc08d9b..4bbbb8615226 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -6,6 +6,8 @@ using namespace std; +#include "common/ceph_json.h" + #include "common/config.h" #include "common/ceph_argparse.h" #include "common/Formatter.h" @@ -163,6 +165,7 @@ enum { OPT_GC_LIST, OPT_GC_PROCESS, OPT_ZONE_INFO, + OPT_ZONE_SET, OPT_CAPS_ADD, OPT_CAPS_RM, }; @@ -291,6 +294,8 @@ static int get_cmd(const char *cmd, const char *prev_cmd, bool *need_more) } else if (strcmp(prev_cmd, "zone") == 0) { if (strcmp(cmd, "info") == 0) return OPT_ZONE_INFO; + if (strcmp(cmd, "set") == 0) + return OPT_ZONE_SET; } else if (strcmp(prev_cmd, "gc") == 0) { if (strcmp(cmd, "list") == 0) return OPT_GC_LIST; @@ -640,7 +645,7 @@ static int remove_bucket(RGWRados *store, rgw_bucket& bucket, bool delete_childr obj.bucket = bucket; int max = 1000; - ret = rgw_get_obj(store, NULL, store->params.domain_root, bucket.name, bl, NULL); + ret = rgw_get_obj(store, NULL, store->zone.domain_root, bucket.name, bl, NULL); bufferlist::iterator iter = bl.begin(); try { @@ -694,6 +699,65 @@ static bool bucket_object_check_filter(const string& name) return rgw_obj::translate_raw_obj_to_obj_in_ns(obj, ns); } +static int read_input(const string& infile, bufferlist& bl) +{ + int fd = 0; + if (infile.size()) { + fd = open(infile.c_str(), O_RDONLY); + if (fd < 0) { + int err = -errno; + cerr << "error reading input file " << infile << std::endl; + return err; + } + } + +#define READ_CHUNK 8196 + int r; + + do { + char buf[READ_CHUNK]; + + r = read(fd, buf, READ_CHUNK); + if (r < 0) { + int err = -errno; + cerr << "error while reading input" << std::endl; + return err; + } + bl.append(buf, r); + } while (r > 0); + + if (infile.size()) { + close(fd); + } + + return 0; +} + +template +static int read_decode_json(const string& infile, T& t) +{ + bufferlist bl; + int ret = read_input(infile, bl); + if (ret < 0) { + cerr << "ERROR: failed to read input: " << cpp_strerror(-ret) << std::endl; + return ret; + } + JSONParser p; + ret = p.parse(bl.c_str(), bl.length()); + if (ret < 0) { + cout << "failed to parse JSON" << std::endl; + return ret; + } + + try { + t.decode_json(&p); + } catch (JSONDecoder::err& e) { + cout << "failed to decode JSON input: " << e.message << std::endl; + return -EINVAL; + } + return 0; +} + class StoreDestructor { RGWRados *store; public: @@ -747,6 +811,7 @@ int main(int argc, char **argv) map categories; string caps; int check_objects = false; + string infile; std::string val; std::ostringstream errs; @@ -846,6 +911,8 @@ int main(int argc, char **argv) // do nothing } else if (ceph_argparse_witharg(args, i, &val, "--caps", (char*)NULL)) { caps = val; + } else if (ceph_argparse_witharg(args, i, &val, "-i", "--infile", (char*)NULL)) { + infile = val; } else { ++i; } @@ -1801,7 +1868,25 @@ next: } if (opt_cmd == OPT_ZONE_INFO) { - store->params.dump(formatter); + store->zone.dump(formatter); + formatter->flush(cout); + } + + if (opt_cmd == OPT_ZONE_SET) { + RGWZoneParams zone; + zone.init_default(); + int ret = read_decode_json(infile, zone); + if (ret < 0) { + return 1; + } + + ret = zone.store_info(g_ceph_context, store); + if (ret < 0) { + cerr << "ERROR: couldn't store zone info: " << cpp_strerror(-ret) << std::endl; + return 1; + } + + zone.dump(formatter); formatter->flush(cout); } diff --git a/src/rgw/rgw_cache.h b/src/rgw/rgw_cache.h index e4002f6af25d..4de16384f1a2 100644 --- a/src/rgw/rgw_cache.h +++ b/src/rgw/rgw_cache.h @@ -211,7 +211,7 @@ void RGWCache::normalize_bucket_and_obj(rgw_bucket& src_bucket, string& src_o dst_bucket = src_bucket; dst_obj = src_obj; } else { - dst_bucket = T::params.domain_root; + dst_bucket = T::zone.domain_root; dst_obj = src_bucket.name; } } diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index b79cf30bbe31..09fdacf4f2f8 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -340,11 +340,11 @@ int rgw_log_op(RGWRados *store, struct req_state *s, const string& op_name, OpsL string oid = render_log_object_name(s->cct->_conf->rgw_log_object_name, &bdt, s->bucket.bucket_id, entry.bucket); - rgw_obj obj(store->params.log_pool, oid); + rgw_obj obj(store->zone.log_pool, oid); ret = store->append_async(obj, bl.length(), bl); if (ret == -ENOENT) { - ret = store->create_pool(store->params.log_pool); + ret = store->create_pool(store->zone.log_pool); if (ret < 0) goto done; // retry @@ -364,7 +364,7 @@ done: int rgw_log_intent(RGWRados *store, rgw_obj& obj, RGWIntentEvent intent, const utime_t& timestamp, bool utc) { - rgw_bucket intent_log_bucket(store->params.intent_log_pool); + rgw_bucket intent_log_bucket(store->zone.intent_log_pool); rgw_intent_log_entry entry; entry.obj = obj; diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index f118f04304c5..ecceb06c5fb4 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -804,7 +804,7 @@ void RGWCreateBucket::execute() bufferlist aclbl; bool existed; int r; - rgw_obj obj(store->params.domain_root, s->bucket_name_str); + rgw_obj obj(store->zone.domain_root, s->bucket_name_str); ret = get_params(); if (ret < 0) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index b79dd84873d3..ea905f8c55bb 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -2,6 +2,8 @@ #include #include +#include "common/ceph_json.h" + #include "common/errno.h" #include "common/Formatter.h" #include "common/Throttle.h" @@ -54,12 +56,12 @@ static RGWObjCategory main_category = RGW_OBJ_CATEGORY_MAIN; #define RGW_USAGE_OBJ_PREFIX "usage." -#define RGW_DEFAULT_zone_ROOT_POOL ".rgw.root" +#define RGW_DEFAULT_ZONE_ROOT_POOL ".rgw.root" #define dout_subsys ceph_subsys_rgw -void RGWRadosParams::init_default() +void RGWZoneParams::init_default() { domain_root = ".rgw"; control_pool = ".rgw.control"; @@ -73,7 +75,7 @@ void RGWRadosParams::init_default() user_uid_pool = ".users.uid"; } -void RGWRadosParams::dump(Formatter *f) const +void RGWZoneParams::dump(Formatter *f) const { f->open_object_section("zone"); f->dump_string("domain_root", domain_root.pool); @@ -89,11 +91,35 @@ void RGWRadosParams::dump(Formatter *f) const f->close_section(); } -int RGWRadosParams::init(CephContext *cct, RGWRados *store) +static void decode_json(const char *field, rgw_bucket& bucket, JSONObj *obj) +{ + string pool; + JSONDecoder::decode_json(field, pool, obj); + if (pool[0] != '.') { + pool = string(".") + pool; + } + bucket = rgw_bucket(pool.c_str()); +} + +void RGWZoneParams::decode_json(JSONObj *obj) +{ + ::decode_json("domain_root", domain_root, obj); + ::decode_json("control_pool", control_pool, obj); + ::decode_json("gc_pool", gc_pool, obj); + ::decode_json("log_pool", log_pool, obj); + ::decode_json("intent_log_pool", intent_log_pool, obj); + ::decode_json("usage_log_pool", usage_log_pool, obj); + ::decode_json("user_keys_pool", user_keys_pool, obj); + ::decode_json("user_email_pool", user_email_pool, obj); + ::decode_json("user_swift_pool", user_swift_pool, obj); + ::decode_json("user_uid_pool ", user_uid_pool, obj); +} + +int RGWZoneParams::init(CephContext *cct, RGWRados *store) { string pool_name = cct->_conf->rgw_zone_root_pool; if (pool_name.empty()) - pool_name = RGW_DEFAULT_zone_ROOT_POOL; + pool_name = RGW_DEFAULT_ZONE_ROOT_POOL; rgw_bucket pool(pool_name.c_str()); bufferlist bl; @@ -117,6 +143,21 @@ int RGWRadosParams::init(CephContext *cct, RGWRados *store) return 0; } +int RGWZoneParams::store_info(CephContext *cct, RGWRados *store) +{ + string pool_name = cct->_conf->rgw_zone_root_pool; + if (pool_name.empty()) + pool_name = RGW_DEFAULT_ZONE_ROOT_POOL; + + rgw_bucket pool(pool_name.c_str()); + + bufferlist bl; + ::encode(*this, bl); + int ret = rgw_put_system_obj(store, pool, zone_info_oid, bl.c_str(), bl.length(), false, NULL); + + return ret; +} + void RGWObjManifest::append(RGWObjManifest& m) { map::iterator iter; @@ -142,7 +183,7 @@ RGWObjState *RGWRadosCtx::get_state(rgw_obj& obj) { if (obj.object.size()) { return &objs_state[obj]; } else { - rgw_obj new_obj(store->params.domain_root, obj.bucket.name); + rgw_obj new_obj(store->zone.domain_root, obj.bucket.name); return &objs_state[new_obj]; } } @@ -151,7 +192,7 @@ void RGWRadosCtx::set_atomic(rgw_obj& obj) { if (obj.object.size()) { objs_state[obj].is_atomic = true; } else { - rgw_obj new_obj(store->params.domain_root, obj.bucket.name); + rgw_obj new_obj(store->zone.domain_root, obj.bucket.name); objs_state[new_obj].is_atomic = true; } } @@ -160,7 +201,7 @@ void RGWRadosCtx::set_prefetch_data(rgw_obj& obj) { if (obj.object.size()) { objs_state[obj].prefetch_data = true; } else { - rgw_obj new_obj(store->params.domain_root, obj.bucket.name); + rgw_obj new_obj(store->zone.domain_root, obj.bucket.name); objs_state[new_obj].prefetch_data = true; } } @@ -194,7 +235,7 @@ int RGWRados::initialize() if (ret < 0) return ret; - params.init(cct, this); + zone.init(cct, this); ret = open_root_pool_ctx(); if (ret < 0) @@ -239,7 +280,7 @@ void RGWRados::finalize_watch() */ int RGWRados::open_root_pool_ctx() { - const string& pool = params.domain_root.name; + const string& pool = zone.domain_root.name; const char *pool_str = pool.c_str(); int r = rados->ioctx_create(pool_str, root_pool_ctx); if (r == -ENOENT) { @@ -257,7 +298,7 @@ int RGWRados::open_root_pool_ctx() int RGWRados::open_gc_pool_ctx() { - const char *gc_pool = params.gc_pool.name.c_str(); + const char *gc_pool = zone.gc_pool.name.c_str(); int r = rados->ioctx_create(gc_pool, gc_pool_ctx); if (r == -ENOENT) { r = rados->pool_create(gc_pool); @@ -274,7 +315,7 @@ int RGWRados::open_gc_pool_ctx() int RGWRados::init_watch() { - const char *control_pool = params.control_pool.name.c_str(); + const char *control_pool = zone.control_pool.name.c_str(); int r = rados->ioctx_create(control_pool, control_pool_ctx); if (r == -ENOENT) { r = rados->pool_create(control_pool); @@ -406,7 +447,7 @@ struct log_list_state { int RGWRados::log_list_init(const string& prefix, RGWAccessHandle *handle) { log_list_state *state = new log_list_state; - const char *log_pool = params.log_pool.name.c_str(); + const char *log_pool = zone.log_pool.name.c_str(); int r = rados->ioctx_create(log_pool, state->io_ctx); if (r < 0) { delete state; @@ -441,7 +482,7 @@ int RGWRados::log_list_next(RGWAccessHandle handle, string *name) int RGWRados::log_remove(const string& name) { librados::IoCtx io_ctx; - const char *log_pool = params.log_pool.name.c_str(); + const char *log_pool = zone.log_pool.name.c_str(); int r = rados->ioctx_create(log_pool, io_ctx); if (r < 0) return r; @@ -461,7 +502,7 @@ struct log_show_state { int RGWRados::log_show_init(const string& name, RGWAccessHandle *handle) { log_show_state *state = new log_show_state; - const char *log_pool = params.log_pool.name.c_str(); + const char *log_pool = zone.log_pool.name.c_str(); int r = rados->ioctx_create(log_pool, state->io_ctx); if (r < 0) { delete state; @@ -799,7 +840,7 @@ int RGWRados::create_bucket(string& owner, rgw_bucket& bucket, uint32_t nop = 0; ::encode(nop, bl); - const string& pool = params.domain_root.name; + const string& pool = zone.domain_root.name; const char *pool_str = pool.c_str(); librados::IoCtx id_io_ctx; r = rados->ioctx_create(pool_str, id_io_ctx); @@ -838,7 +879,7 @@ int RGWRados::store_bucket_info(RGWBucketInfo& info, map *pa bufferlist bl; ::encode(info, bl); - int ret = rgw_put_system_obj(this, params.domain_root, info.bucket.name, bl.c_str(), bl.length(), exclusive, pattrs); + int ret = rgw_put_system_obj(this, zone.domain_root, info.bucket.name, bl.c_str(), bl.length(), exclusive, pattrs); if (ret < 0) return ret; @@ -854,9 +895,9 @@ int RGWRados::select_bucket_placement(string& bucket_name, rgw_bucket& bucket) string pool_name; bool write_map = false; - rgw_obj obj(params.domain_root, avail_pools); + rgw_obj obj(zone.domain_root, avail_pools); - int ret = rgw_get_obj(this, NULL, params.domain_root, avail_pools, map_bl); + int ret = rgw_get_obj(this, NULL, zone.domain_root, avail_pools, map_bl); if (ret < 0) { goto read_omap; } @@ -928,7 +969,7 @@ int RGWRados::update_placement_map() { bufferlist header; map m; - rgw_obj obj(params.domain_root, avail_pools); + rgw_obj obj(zone.domain_root, avail_pools); int ret = omap_get_all(obj, header, m); if (ret < 0) return ret; @@ -949,7 +990,7 @@ int RGWRados::add_bucket_placement(std::string& new_pool) if (ret < 0) // DNE, or something return ret; - rgw_obj obj(params.domain_root, avail_pools); + rgw_obj obj(zone.domain_root, avail_pools); bufferlist empty_bl; ret = omap_set(obj, new_pool, empty_bl); @@ -961,7 +1002,7 @@ int RGWRados::add_bucket_placement(std::string& new_pool) int RGWRados::remove_bucket_placement(std::string& old_pool) { - rgw_obj obj(params.domain_root, avail_pools); + rgw_obj obj(zone.domain_root, avail_pools); int ret = omap_del(obj, old_pool); // don't care about return value @@ -975,7 +1016,7 @@ int RGWRados::list_placement_set(set& names) bufferlist header; map m; - rgw_obj obj(params.domain_root, avail_pools); + rgw_obj obj(zone.domain_root, avail_pools); int ret = omap_get_all(obj, header, m); if (ret < 0) return ret; @@ -1514,7 +1555,7 @@ int RGWRados::delete_bucket(rgw_bucket& bucket) } } while (is_truncated); - rgw_obj obj(params.domain_root, bucket.name); + rgw_obj obj(zone.domain_root, bucket.name); r = delete_obj(NULL, obj); if (r < 0) return r; @@ -1908,7 +1949,7 @@ int RGWRados::get_attr(void *ctx, rgw_obj& obj, const char *name, bufferlist& de if (actual_obj.size() == 0) { actual_obj = bucket.name; - actual_bucket = params.domain_root; + actual_bucket = zone.domain_root; } int r = open_bucket_ctx(actual_bucket, io_ctx); @@ -2094,7 +2135,7 @@ int RGWRados::set_attr(void *ctx, rgw_obj& obj, const char *name, bufferlist& bl if (actual_obj.size() == 0) { actual_obj = bucket.name; - actual_bucket = params.domain_root; + actual_bucket = zone.domain_root; } int r = open_bucket_ctx(actual_bucket, io_ctx); @@ -2144,7 +2185,7 @@ int RGWRados::set_attrs(void *ctx, rgw_obj& obj, if (actual_obj.size() == 0) { actual_obj = bucket.name; - actual_bucket = params.domain_root; + actual_bucket = zone.domain_root; } int r = open_bucket_ctx(actual_bucket, io_ctx); @@ -3202,7 +3243,7 @@ int RGWRados::get_bucket_info(void *ctx, string& bucket_name, RGWBucketInfo& inf { bufferlist bl; - int ret = rgw_get_obj(this, ctx, params.domain_root, bucket_name, bl, pattrs); + int ret = rgw_get_obj(this, ctx, zone.domain_root, bucket_name, bl, pattrs); if (ret < 0) { if (ret != -ENOENT) return ret; @@ -3231,7 +3272,7 @@ int RGWRados::put_bucket_info(string& bucket_name, RGWBucketInfo& info, bool exc ::encode(info, bl); - int ret = rgw_put_system_obj(this, params.domain_root, bucket_name, bl.c_str(), bl.length(), exclusive, pattrs); + int ret = rgw_put_system_obj(this, zone.domain_root, bucket_name, bl.c_str(), bl.length(), exclusive, pattrs); return ret; } @@ -3612,7 +3653,7 @@ int RGWRados::cls_obj_usage_log_add(const string& oid, rgw_usage_log_info& info) { librados::IoCtx io_ctx; - const char *usage_log_pool = params.usage_log_pool.name.c_str(); + const char *usage_log_pool = zone.usage_log_pool.name.c_str(); int r = rados->ioctx_create(usage_log_pool, io_ctx); if (r == -ENOENT) { rgw_bucket pool(usage_log_pool); @@ -3640,7 +3681,7 @@ int RGWRados::cls_obj_usage_log_read(string& oid, string& user, uint64_t start_e *is_truncated = false; - const char *usage_log_pool = params.usage_log_pool.name.c_str(); + const char *usage_log_pool = zone.usage_log_pool.name.c_str(); int r = rados->ioctx_create(usage_log_pool, io_ctx); if (r < 0) return r; @@ -3655,7 +3696,7 @@ int RGWRados::cls_obj_usage_log_trim(string& oid, string& user, uint64_t start_e { librados::IoCtx io_ctx; - const char *usage_log_pool = params.usage_log_pool.name.c_str(); + const char *usage_log_pool = zone.usage_log_pool.name.c_str(); int r = rados->ioctx_create(usage_log_pool, io_ctx); if (r < 0) return r; @@ -3872,7 +3913,7 @@ int RGWRados::remove_temp_objects(string date, string time) bool is_truncated; IntentLogNameFilter filter(date.c_str(), &tm); RGWPoolIterCtx iter_ctx; - int r = pool_iterate_begin(params.intent_log_pool, iter_ctx); + int r = pool_iterate_begin(zone.intent_log_pool, iter_ctx); if (r < 0) { cerr << "failed to list objects" << std::endl; return r; @@ -3887,7 +3928,7 @@ int RGWRados::remove_temp_objects(string date, string time) } vector::iterator iter; for (iter = objs.begin(); iter != objs.end(); ++iter) { - process_intent_log(params.intent_log_pool, (*iter).name, epoch, I_DEL_OBJ | I_DEL_DIR, true); + process_intent_log(zone.intent_log_pool, (*iter).name, epoch, I_DEL_OBJ | I_DEL_DIR, true); } } while (is_truncated); diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index ed6f35eca72c..30cd3a80dfc0 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -238,7 +238,7 @@ struct RGWPoolIterCtx { librados::ObjectIterator iter; }; -struct RGWRadosParams { +struct RGWZoneParams { rgw_bucket domain_root; rgw_bucket control_pool; rgw_bucket gc_pool; @@ -253,6 +253,7 @@ struct RGWRadosParams { int init(CephContext *cct, RGWRados *store); void init_default(); + int store_info(CephContext *cct, RGWRados *store); void encode(bufferlist& bl) const { ENCODE_START(1, 1, bl); @@ -284,8 +285,9 @@ struct RGWRadosParams { DECODE_FINISH(bl); } void dump(Formatter *f) const; + void decode_json(JSONObj *obj); }; -WRITE_CLASS_ENCODER(RGWRadosParams); +WRITE_CLASS_ENCODER(RGWZoneParams); class RGWRados { @@ -390,7 +392,7 @@ public: cct(NULL), rados(NULL), pools_initialized(false) {} - RGWRadosParams params; + RGWZoneParams zone; virtual ~RGWRados() { if (rados) { diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc index 5602fd4345dc..3798c19fb3a7 100644 --- a/src/rgw/rgw_user.cc +++ b/src/rgw/rgw_user.cc @@ -80,14 +80,14 @@ int rgw_store_user_info(RGWRados *store, RGWUserInfo& info, RGWUserInfo *old_inf ::encode(ui, data_bl); ::encode(info, data_bl); - ret = rgw_put_system_obj(store, store->params.user_uid_pool, info.user_id, data_bl.c_str(), data_bl.length(), exclusive); + ret = rgw_put_system_obj(store, store->zone.user_uid_pool, info.user_id, data_bl.c_str(), data_bl.length(), exclusive); if (ret < 0) return ret; if (info.user_email.size()) { if (!old_info || old_info->user_email.compare(info.user_email) != 0) { /* only if new index changed */ - ret = rgw_put_system_obj(store, store->params.user_email_pool, info.user_email, link_bl.c_str(), link_bl.length(), exclusive); + ret = rgw_put_system_obj(store, store->zone.user_email_pool, info.user_email, link_bl.c_str(), link_bl.length(), exclusive); if (ret < 0) return ret; } @@ -100,7 +100,7 @@ int rgw_store_user_info(RGWRados *store, RGWUserInfo& info, RGWUserInfo *old_inf if (old_info && old_info->access_keys.count(iter->first) != 0) continue; - ret = rgw_put_system_obj(store, store->params.user_keys_pool, k.id, link_bl.c_str(), link_bl.length(), exclusive); + ret = rgw_put_system_obj(store, store->zone.user_keys_pool, k.id, link_bl.c_str(), link_bl.length(), exclusive); if (ret < 0) return ret; } @@ -112,7 +112,7 @@ int rgw_store_user_info(RGWRados *store, RGWUserInfo& info, RGWUserInfo *old_inf if (old_info && old_info->swift_keys.count(siter->first) != 0) continue; - ret = rgw_put_system_obj(store, store->params.user_swift_pool, k.id, link_bl.c_str(), link_bl.length(), exclusive); + ret = rgw_put_system_obj(store, store->zone.user_swift_pool, k.id, link_bl.c_str(), link_bl.length(), exclusive); if (ret < 0) return ret; } @@ -150,7 +150,7 @@ int rgw_get_user_info_by_uid(RGWRados *store, string& uid, RGWUserInfo& info) bufferlist bl; RGWUID user_id; - int ret = rgw_get_obj(store, NULL, store->params.user_uid_pool, uid, bl); + int ret = rgw_get_obj(store, NULL, store->zone.user_uid_pool, uid, bl); if (ret < 0) return ret; @@ -178,7 +178,7 @@ int rgw_get_user_info_by_uid(RGWRados *store, string& uid, RGWUserInfo& info) */ int rgw_get_user_info_by_email(RGWRados *store, string& email, RGWUserInfo& info) { - return rgw_get_user_info_from_index(store, email, store->params.user_email_pool, info); + return rgw_get_user_info_from_index(store, email, store->zone.user_email_pool, info); } /** @@ -187,7 +187,7 @@ int rgw_get_user_info_by_email(RGWRados *store, string& email, RGWUserInfo& info */ extern int rgw_get_user_info_by_swift(RGWRados *store, string& swift_name, RGWUserInfo& info) { - return rgw_get_user_info_from_index(store, swift_name, store->params.user_swift_pool, info); + return rgw_get_user_info_from_index(store, swift_name, store->zone.user_swift_pool, info); } /** @@ -196,7 +196,7 @@ extern int rgw_get_user_info_by_swift(RGWRados *store, string& swift_name, RGWUs */ extern int rgw_get_user_info_by_access_key(RGWRados *store, string& access_key, RGWUserInfo& info) { - return rgw_get_user_info_from_index(store, access_key, store->params.user_keys_pool, info); + return rgw_get_user_info_from_index(store, access_key, store->zone.user_keys_pool, info); } static void get_buckets_obj(string& user_id, string& buckets_obj_id) @@ -208,7 +208,7 @@ static void get_buckets_obj(string& user_id, string& buckets_obj_id) static int rgw_read_buckets_from_attr(RGWRados *store, string& user_id, RGWUserBuckets& buckets) { bufferlist bl; - rgw_obj obj(store->params.user_uid_pool, user_id); + rgw_obj obj(store->zone.user_uid_pool, user_id); int ret = store->get_attr(NULL, obj, RGW_ATTR_BUCKETS, bl); if (ret) return ret; @@ -235,7 +235,7 @@ int rgw_read_user_buckets(RGWRados *store, string user_id, RGWUserBuckets& bucke string buckets_obj_id; get_buckets_obj(user_id, buckets_obj_id); bufferlist bl; - rgw_obj obj(store->params.user_uid_pool, buckets_obj_id); + rgw_obj obj(store->zone.user_uid_pool, buckets_obj_id); bufferlist header; map m; @@ -286,7 +286,7 @@ int rgw_write_buckets_attr(RGWRados *store, string user_id, RGWUserBuckets& buck bufferlist bl; buckets.encode(bl); - rgw_obj obj(store->params.user_uid_pool, user_id); + rgw_obj obj(store->zone.user_uid_pool, user_id); int ret = store->set_attr(NULL, obj, RGW_ATTR_BUCKETS, bl); @@ -310,7 +310,7 @@ int rgw_add_bucket(RGWRados *store, string user_id, rgw_bucket& bucket) string buckets_obj_id; get_buckets_obj(user_id, buckets_obj_id); - rgw_obj obj(store->params.user_uid_pool, buckets_obj_id); + rgw_obj obj(store->zone.user_uid_pool, buckets_obj_id); ret = store->omap_set(obj, bucket_name, bl); if (ret < 0) { ldout(store->ctx(), 0) << "ERROR: error adding bucket to directory: " @@ -351,7 +351,7 @@ int rgw_remove_user_bucket_info(RGWRados *store, string user_id, rgw_bucket& buc string buckets_obj_id; get_buckets_obj(user_id, buckets_obj_id); - rgw_obj obj(store->params.user_uid_pool, buckets_obj_id); + rgw_obj obj(store->zone.user_uid_pool, buckets_obj_id); ret = store->omap_del(obj, bucket.name); if (ret < 0) { ldout(store->ctx(), 0) << "ERROR: error removing bucket from directory: " @@ -373,28 +373,28 @@ int rgw_remove_user_bucket_info(RGWRados *store, string user_id, rgw_bucket& buc int rgw_remove_key_index(RGWRados *store, RGWAccessKey& access_key) { - rgw_obj obj(store->params.user_keys_pool, access_key.id); + rgw_obj obj(store->zone.user_keys_pool, access_key.id); int ret = store->delete_obj(NULL, obj); return ret; } int rgw_remove_uid_index(RGWRados *store, string& uid) { - rgw_obj obj(store->params.user_uid_pool, uid); + rgw_obj obj(store->zone.user_uid_pool, uid); int ret = store->delete_obj(NULL, obj); return ret; } int rgw_remove_email_index(RGWRados *store, string& email) { - rgw_obj obj(store->params.user_email_pool, email); + rgw_obj obj(store->zone.user_email_pool, email); int ret = store->delete_obj(NULL, obj); return ret; } int rgw_remove_swift_name_index(RGWRados *store, string& swift_name) { - rgw_obj obj(store->params.user_swift_pool, swift_name); + rgw_obj obj(store->zone.user_swift_pool, swift_name); int ret = store->delete_obj(NULL, obj); return ret; } @@ -441,7 +441,7 @@ int rgw_delete_user(RGWRados *store, RGWUserInfo& info) { } } - rgw_obj email_obj(store->params.user_email_pool, info.user_email); + rgw_obj email_obj(store->zone.user_email_pool, info.user_email); ldout(store->ctx(), 10) << "removing email index: " << info.user_email << dendl; ret = store->delete_obj(NULL, email_obj); if (ret < 0 && ret != -ENOENT) { @@ -451,7 +451,7 @@ int rgw_delete_user(RGWRados *store, RGWUserInfo& info) { string buckets_obj_id; get_buckets_obj(info.user_id, buckets_obj_id); - rgw_obj uid_bucks(store->params.user_uid_pool, buckets_obj_id); + rgw_obj uid_bucks(store->zone.user_uid_pool, buckets_obj_id); ldout(store->ctx(), 10) << "removing user buckets index" << dendl; ret = store->delete_obj(NULL, uid_bucks); if (ret < 0 && ret != -ENOENT) { @@ -459,7 +459,7 @@ int rgw_delete_user(RGWRados *store, RGWUserInfo& info) { return ret; } - rgw_obj uid_obj(store->params.user_uid_pool, info.user_id); + rgw_obj uid_obj(store->zone.user_uid_pool, info.user_id); ldout(store->ctx(), 10) << "removing user index: " << info.user_id << dendl; ret = store->delete_obj(NULL, uid_obj); if (ret < 0 && ret != -ENOENT) {