]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: RGWRados internal zone should be protected and not accessed directly
authorOrit Wasserman <owasserm@redhat.com>
Wed, 21 Oct 2015 14:39:29 +0000 (16:39 +0200)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 12 Feb 2016 00:13:18 +0000 (16:13 -0800)
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
src/rgw/rgw_bucket.cc
src/rgw/rgw_bucket.h
src/rgw/rgw_cache.h
src/rgw/rgw_common.h
src/rgw/rgw_log.cc
src/rgw/rgw_metadata.cc
src/rgw/rgw_op.cc
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h
src/rgw/rgw_rest_conn.cc
src/rgw/rgw_user.cc

index 740ecfe5f44c0e4f515f6abb4fb4b642b8ddcc7a..6f39e8ad1ee1728b47dc89c740a6f5174573e5be 100644 (file)
@@ -109,7 +109,7 @@ int rgw_read_user_buckets(RGWRados * store,
   string buckets_obj_id;
   rgw_get_buckets_obj(user_id, buckets_obj_id);
   bufferlist bl;
-  rgw_obj obj(store->zone.user_uid_pool, buckets_obj_id);
+  rgw_obj obj(store->get_zone_params().user_uid_pool, buckets_obj_id);
   bufferlist header;
   list<cls_user_bucket_entry> entries;
 
@@ -153,7 +153,7 @@ int rgw_bucket_sync_user_stats(RGWRados *store, const rgw_user& user_id, rgw_buc
 {
   string buckets_obj_id;
   rgw_get_buckets_obj(user_id, buckets_obj_id);
-  rgw_obj obj(store->zone.user_uid_pool, buckets_obj_id);
+  rgw_obj obj(store->get_zone_params().user_uid_pool, buckets_obj_id);
 
   return store->cls_user_sync_bucket_stats(obj, bucket);
 }
@@ -211,7 +211,7 @@ int rgw_link_bucket(RGWRados *store, const rgw_user& user_id, rgw_bucket& bucket
   string buckets_obj_id;
   rgw_get_buckets_obj(user_id, buckets_obj_id);
 
-  rgw_obj obj(store->zone.user_uid_pool, buckets_obj_id);
+  rgw_obj obj(store->get_zone_params().user_uid_pool, buckets_obj_id);
   ret = store->cls_user_add_bucket(obj, new_bucket);
   if (ret < 0) {
     ldout(store->ctx(), 0) << "ERROR: error adding bucket to directory: "
@@ -248,7 +248,7 @@ int rgw_unlink_bucket(RGWRados *store, const rgw_user& user_id, const string& te
 
   cls_user_bucket bucket;
   bucket.name = bucket_name;
-  rgw_obj obj(store->zone.user_uid_pool, buckets_obj_id);
+  rgw_obj obj(store->get_zone_params().user_uid_pool, buckets_obj_id);
   ret = store->cls_user_remove_bucket(obj, bucket);
   if (ret < 0) {
     ldout(store->ctx(), 0) << "ERROR: error removing bucket from directory: "
@@ -343,7 +343,7 @@ int rgw_bucket_set_attrs(RGWRados *store, RGWBucketInfo& bucket_info,
   }
   string oid;
   store->get_bucket_meta_oid(bucket, oid);
-  rgw_obj obj(store->zone.domain_root, oid);
+  rgw_obj obj(store->get_zone_params().domain_root, oid);
 
   string key;
   store->get_bucket_instance_entry(bucket, key); /* we want the bucket instance name without
@@ -1724,7 +1724,7 @@ public:
 
   void get_pool_and_oid(RGWRados *store, const string& key, rgw_bucket& bucket, string& oid) {
     oid = key;
-    bucket = store->zone.domain_root;
+    bucket = store->get_zone_params().domain_root;
   }
 
   int list_keys_init(RGWRados *store, void **phandle)
@@ -1749,7 +1749,7 @@ public:
 
     list<string> unfiltered_keys;
 
-    int ret = store->list_raw_objects(store->zone.domain_root, no_filter,
+    int ret = store->list_raw_objects(store->get_zone_params().domain_root, no_filter,
                                       max, info->ctx, unfiltered_keys, truncated);
     if (ret < 0 && ret != -ENOENT)
       return ret;
@@ -1882,7 +1882,7 @@ public:
 
   void get_pool_and_oid(RGWRados *store, const string& key, rgw_bucket& bucket, string& oid) {
     oid = RGW_BUCKET_INSTANCE_MD_PREFIX + key;
-    bucket = store->zone.domain_root;
+    bucket = store->get_zone_params().domain_root;
   }
 
   int list_keys_init(RGWRados *store, void **phandle)
@@ -1907,7 +1907,7 @@ public:
 
     list<string> unfiltered_keys;
 
-    int ret = store->list_raw_objects(store->zone.domain_root, no_filter,
+    int ret = store->list_raw_objects(store->get_zone_params().domain_root, no_filter,
                                       max, info->ctx, unfiltered_keys, truncated);
     if (ret < 0 && ret != -ENOENT)
       return ret;
index 8391fc618403c430e7ab113416de25802e4bb811..238a07dd1a07f7e469105337e3bc969597fa724f 100644 (file)
@@ -467,10 +467,10 @@ public:
                    const string& start_marker, const string& end_marker);
   int get_info(int shard_id, RGWDataChangesLogInfo *info);
   int lock_exclusive(int shard_id, utime_t& duration, string& zone_id, string& owner_id) {
-    return store->lock_exclusive(store->zone.log_pool, oids[shard_id], duration, zone_id, owner_id);
+    return store->lock_exclusive(store->get_zone_params().log_pool, oids[shard_id], duration, zone_id, owner_id);
   }
   int unlock(int shard_id, string& zone_id, string& owner_id) {
-    return store->unlock(store->zone.log_pool, oids[shard_id], zone_id, owner_id);
+    return store->unlock(store->get_zone_params().log_pool, oids[shard_id], zone_id, owner_id);
   }
   struct LogMarker {
     int shard;
index 46449ca10153373286ad7cd52e44b94b338ebb68..9cdc53d2616780d44fdb59d49f68bdb4f8725c0f 100644 (file)
@@ -261,7 +261,7 @@ void RGWCache<T>::normalize_bucket_and_obj(rgw_bucket& src_bucket, const string&
     dst_bucket = src_bucket;
     dst_obj = src_obj;
   } else {
-    dst_bucket = T::zone.domain_root;
+    dst_bucket = T::get_zone_params().domain_root;
     dst_obj = src_bucket.name;
   }
 }
index 58a6ba98d99a85e85f02218417550fedda607653..efc55d7eaced6da61ca8c43846ee612f8c5e6e70 100644 (file)
@@ -624,19 +624,10 @@ struct rgw_bucket {
 
   rgw_bucket() { }
   // cppcheck-suppress noExplicitConstructor
-  rgw_bucket(const cls_user_bucket& b) : tenant(b.tenant), name(b.name), data_pool(b.data_pool),
+  rgw_bucket(const cls_user_bucket& b) : name(b.name), data_pool(b.data_pool),
                                         data_extra_pool(b.data_extra_pool),
                                         index_pool(b.index_pool), marker(b.marker),
-                                        bucket_id(b.bucket_id), oid(b.oid) {}
-  // cppcheck-suppress noExplicitConstructor
-  rgw_bucket(const cls_user_bucket& b) {
-    name = b.name;
-    data_pool = b.data_pool;
-    data_extra_pool = b.data_extra_pool;
-    index_pool = b.index_pool;
-    marker = b.marker;
-    bucket_id = b.bucket_id;
-  }
+                                        bucket_id(b.bucket_id) {}
   rgw_bucket(const string& s) : name(s) {
     data_pool = index_pool = s;
     marker = "";
index c600386f4b32f63eeb317da7c948da222ddc44b2..da9bd5ba37eeffebc30f7f7487fe2d32ecf2f1ad 100644 (file)
@@ -352,11 +352,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->zone.log_pool, oid);
+    rgw_obj obj(store->get_zone_params().log_pool, oid);
 
     ret = store->append_async(obj, bl.length(), bl);
     if (ret == -ENOENT) {
-      ret = store->create_pool(store->zone.log_pool);
+      ret = store->create_pool(store->get_zone_params().log_pool);
       if (ret < 0)
         goto done;
       // retry
index 41fef021a6a7e20b3a67e1a1cb834f3bb2bb1a6b..94dd7e6588985cff09c518a4ddab57a6aa96de7d 100644 (file)
@@ -255,14 +255,14 @@ int RGWMetadataLog::lock_exclusive(int shard_id, utime_t& duration, string& zone
   string oid;
   get_shard_oid(shard_id, oid);
 
-  return store->lock_exclusive(store->zone.log_pool, oid, duration, zone_id, owner_id);
+  return store->lock_exclusive(store->get_zone_params().log_pool, oid, duration, zone_id, owner_id);
 }
 
 int RGWMetadataLog::unlock(int shard_id, string& zone_id, string& owner_id) {
   string oid;
   get_shard_oid(shard_id, oid);
 
-  return store->unlock(store->zone.log_pool, oid, zone_id, owner_id);
+  return store->unlock(store->get_zone_params().log_pool, oid, zone_id, owner_id);
 }
 
 void RGWMetadataLog::mark_modified(int shard_id)
@@ -689,7 +689,7 @@ int RGWMetadataManager::store_in_heap(RGWMetadataHandler *handler, const string&
     return -EINVAL;
   }
 
-  rgw_bucket heap_pool(store->zone.metadata_heap);
+  rgw_bucket heap_pool(store->get_zone_params().metadata_heap);
 
   RGWObjVersionTracker otracker;
   otracker.write_version = objv_tracker->write_version;
@@ -711,7 +711,7 @@ int RGWMetadataManager::remove_from_heap(RGWMetadataHandler *handler, const stri
     return -EINVAL;
   }
 
-  rgw_bucket heap_pool(store->zone.metadata_heap);
+  rgw_bucket heap_pool(store->get_zone_params().metadata_heap);
 
   string oid = heap_oid(handler, key, objv_tracker->write_version);
   rgw_obj obj(heap_pool, oid);
index a4be37f08a73b4cb85ddf8130b3f3f8ee516f329..53f21d06e3aafa177a42a822a75252660d872f3d 100644 (file)
@@ -1712,7 +1712,7 @@ void RGWCreateBucket::execute()
   bool existed;
   string bucket_name;
   rgw_make_bucket_entry_name(s->bucket_tenant, s->bucket_name, bucket_name);
-  rgw_obj obj(store->zone.domain_root, bucket_name);
+  rgw_obj obj(store->get_zone_params().domain_root, bucket_name);
   obj_version objv, *pobjv = NULL;
 
   op_ret = get_params();
@@ -4305,7 +4305,7 @@ bool RGWBulkDelete::Deleter::delete_single(const acct_path_t& path)
       goto delop_fail;
     }
 
-    if (!store->zonegroup.is_master) {
+    if (!store->get_zonegroup().is_master) {
       bufferlist in_data;
       JSONParser jp;
       ret = forward_request_to_master(s, &ot.read_version, store, in_data,
index 35d9557375e3e2bc4b45b24877f08b8000e7b0b2..04f4ddb698612e7e1385a5523cbc42ae49e2eca9 100644 (file)
@@ -2147,7 +2147,7 @@ RGWObjState *RGWObjectCtx::get_state(rgw_obj& obj) {
     }
     return result;
   } else {
-    rgw_obj new_obj(store->zone.domain_root, obj.bucket.name);
+    rgw_obj new_obj(store->get_zone_params().domain_root, obj.bucket.name);
     iter = objs_state.find(new_obj);
     if (iter != objs_state.end()) {
       result = &iter->second;
@@ -2173,7 +2173,7 @@ void RGWObjectCtx::set_atomic(rgw_obj& obj) {
   if (!obj.get_object().empty()) {
     objs_state[obj].is_atomic = true;
   } else {
-    rgw_obj new_obj(store->zone.domain_root, obj.bucket.name);
+    rgw_obj new_obj(store->get_zone_params().domain_root, obj.bucket.name);
     objs_state[new_obj].is_atomic = true;
   }
 }
@@ -2183,7 +2183,7 @@ void RGWObjectCtx::set_prefetch_data(rgw_obj& obj) {
   if (!obj.get_object().empty()) {
     objs_state[obj].prefetch_data = true;
   } else {
-    rgw_obj new_obj(store->zone.domain_root, obj.bucket.name);
+    rgw_obj new_obj(store->get_zone_params().domain_root, obj.bucket.name);
     objs_state[new_obj].prefetch_data = true;
   }
 }
@@ -2287,7 +2287,7 @@ public:
   int notify_all(map<string, RGWRESTConn *>& conn_map, map<int, set<string> >& shards) {
     rgw_http_param_pair pairs[] = { { "type", "data" },
                                     { "notify", NULL },
-                                    { "source-zone", store->zone.get_name().c_str() },
+                                    { "source-zone", store->get_zone_params().get_name().c_str() },
                                     { NULL, NULL } };
 
     list<RGWCoroutinesStack *> stacks;
@@ -2946,12 +2946,12 @@ int RGWRados::init_complete()
        period_zonegroup = iter->second;
        has_period_zonegroup = true;
        map<string, RGWZone>::iterator zone_iter =
-         period_zonegroup.zones.find(zone.get_predefined_name(cct));
+         period_zonegroup.zones.find(zone_params.get_predefined_name(cct));
        if (zone_iter != zonegroup.zones.end()) {
-         period_zone= zone_iter->second;
+         period_zone = zone_iter->second;
          has_period_zone = true;
        } else {
-         lderr(cct) << "Cannot find zone " << zone.get_predefined_name(cct) <<
+         lderr(cct) << "Cannot find zone " << zone_params.get_predefined_name(cct) <<
            " in current period using local" << dendl;
        }
       } else {
@@ -2993,7 +2993,7 @@ int RGWRados::init_complete()
   }
 
   if (!has_period_zone) {
-    ret = zone.init(cct, this);
+    ret = zone_params.init(cct, this);
     if (ret < 0 && ret != -ENOENT) {
       lderr(cct) << "failed reading zone info: ret "<< ret << " " << cpp_strerror(-ret) << dendl;
       return ret;
@@ -3017,7 +3017,7 @@ int RGWRados::init_complete()
   for (ziter = zonegroup.zones.begin(); ziter != zonegroup.zones.end(); ++ziter) {
     const string& id = ziter->first;
     RGWZone& z = ziter->second;
-    if (id != zone.get_id()) {
+    if (id != zone_id()) {
       if (!z.endpoints.empty()) {
         ldout(cct, 20) << "generating connection object for zone " << z.name << " id " << z.id << dendl;
         zone_conn_map[id] = new RGWRESTConn(cct, this, z.endpoints);
@@ -3221,7 +3221,7 @@ int RGWRados::list_periods(const string& current_period, list<string>& periods)
  */
 int RGWRados::open_root_pool_ctx()
 {
-  const string& pool = zone.domain_root.name;
+  const string& pool = get_zone_params().domain_root.name;
   const char *pool_str = pool.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(pool_str, root_pool_ctx);
@@ -3240,7 +3240,7 @@ int RGWRados::open_root_pool_ctx()
 
 int RGWRados::open_gc_pool_ctx()
 {
-  const char *gc_pool = zone.gc_pool.name.c_str();
+  const char *gc_pool = get_zone_params().gc_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(gc_pool, gc_pool_ctx);
   if (r == -ENOENT) {
@@ -3258,7 +3258,7 @@ int RGWRados::open_gc_pool_ctx()
 
 int RGWRados::open_objexp_pool_ctx()
 {
-  const char * const pool_name = zone.log_pool.name.c_str();
+  const char * const pool_name = get_zone_params().log_pool.name.c_str();
   librados::Rados * const rad = get_rados_handle();
   int r = rad->ioctx_create(pool_name, objexp_pool_ctx);
   if (r == -ENOENT) {
@@ -3277,7 +3277,7 @@ int RGWRados::open_objexp_pool_ctx()
 
 int RGWRados::init_watch()
 {
-  const char *control_pool = zone.control_pool.name.c_str();
+  const char *control_pool = get_zone_params().control_pool.name.c_str();
 
   librados::Rados *rad = rados[0];
   int r = rad->ioctx_create(control_pool, control_pool_ctx);
@@ -3448,7 +3448,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 = zone.log_pool.name.c_str();
+  const char *log_pool = get_zone_params().log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(log_pool, state->io_ctx);
   if (r < 0) {
@@ -3484,7 +3484,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 = zone.log_pool.name.c_str();
+  const char *log_pool = get_zone_params().log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(log_pool, io_ctx);
   if (r < 0)
@@ -3505,7 +3505,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 = zone.log_pool.name.c_str();
+  const char *log_pool = get_zone_params().log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(log_pool, state->io_ctx);
   if (r < 0) {
@@ -3744,7 +3744,7 @@ void RGWRados::time_log_prepare_entry(cls_log_entry& entry, const utime_t& ut, c
 
 int RGWRados::time_log_add_init(librados::IoCtx& io_ctx)
 {
-  const char *log_pool = zone.log_pool.name.c_str();
+  const char *log_pool = get_zone_params().log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(log_pool, io_ctx);
   if (r == -ENOENT) {
@@ -3808,7 +3808,7 @@ int RGWRados::time_log_list(const string& oid, utime_t& start_time, utime_t& end
 {
   librados::IoCtx io_ctx;
 
-  const char *log_pool = zone.log_pool.name.c_str();
+  const char *log_pool = get_zone_params().log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(log_pool, io_ctx);
   if (r < 0)
@@ -3831,7 +3831,7 @@ int RGWRados::time_log_info(const string& oid, cls_log_header *header)
 {
   librados::IoCtx io_ctx;
 
-  const char *log_pool = zone.log_pool.name.c_str();
+  const char *log_pool = get_zone_params().log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(log_pool, io_ctx);
   if (r < 0)
@@ -3851,7 +3851,7 @@ int RGWRados::time_log_info(const string& oid, cls_log_header *header)
 
 int RGWRados::time_log_info_async(librados::IoCtx& io_ctx, const string& oid, cls_log_header *header, librados::AioCompletion *completion)
 {
-  const char *log_pool = zone.log_pool.name.c_str();
+  const char *log_pool = get_zone_params().log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(log_pool, io_ctx);
   if (r < 0)
@@ -3873,7 +3873,7 @@ int RGWRados::time_log_trim(const string& oid, const utime_t& start_time, const
 {
   librados::IoCtx io_ctx;
 
-  const char *log_pool = zone.log_pool.name.c_str();
+  const char *log_pool = get_zone_params().log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(log_pool, io_ctx);
   if (r < 0)
@@ -4325,7 +4325,7 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket,
     uint32_t nop = 0;
     ::encode(nop, bl);
 
-    const string& pool = zone.domain_root.name;
+    const string& pool = get_zone_params().domain_root.name;
     const char *pool_str = pool.c_str();
     librados::IoCtx id_io_ctx;
     librados::Rados *rad = get_rados_handle();
@@ -4336,8 +4336,8 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket,
     if (!pmaster_bucket) {
       uint64_t iid = instance_id();
       uint64_t bid = next_bucket_id();
-      char buf[zone.get_id().size() + 48];
-      snprintf(buf, sizeof(buf), "%s.%llu.%llu", zone.get_id().c_str(), (long long)iid, (long long)bid);
+      char buf[get_zone_params().get_id().size() + 48];
+      snprintf(buf, sizeof(buf), "%s.%llu.%llu", get_zone_params().get_id().c_str(), (long long)iid, (long long)bid);
       bucket.marker = buf;
       bucket.bucket_id = bucket.marker;
     } else {
@@ -4478,8 +4478,8 @@ int RGWRados::set_bucket_location_by_rule(const string& location_rule, const str
    * checking it for the local zone, because that's where this bucket object is going to
    * reside.
    */
-  map<string, RGWZonePlacementInfo>::iterator piter = zone.placement_pools.find(location_rule);
-  if (piter == zone.placement_pools.end()) {
+  map<string, RGWZonePlacementInfo>::iterator piter = get_zone_params().placement_pools.find(location_rule);
+  if (piter == get_zone_params().placement_pools.end()) {
     /* couldn't find, means we cannot really place data for this bucket in this zone */
     if (zonegroup.equals(zonegroup_id)) {
       /* that's a configuration error, zone should have that rule, as we're within the requested
@@ -4504,7 +4504,7 @@ int RGWRados::select_bucket_placement(RGWUserInfo& user_info, const string& zone
                                       const string& tenant_name, const string& bucket_name, rgw_bucket& bucket,
                                       string *pselected_rule)
 {
-  if (!zone.placement_pools.empty()) {
+  if (!get_zone_params().placement_pools.empty()) {
     return select_new_bucket_location(user_info, zonegroup_id, placement_rule,
                                       tenant_name, bucket_name, bucket, pselected_rule);
   }
@@ -4522,10 +4522,10 @@ int RGWRados::select_legacy_bucket_placement(const string& tenant_name, const st
   string pool_name;
   bool write_map = false;
 
-  rgw_obj obj(zone.domain_root, avail_pools);
+  rgw_obj obj(get_zone_params().domain_root, avail_pools);
 
   RGWObjectCtx obj_ctx(this);
-  int ret = rgw_get_system_obj(this, obj_ctx, zone.domain_root, avail_pools, map_bl, NULL, NULL);
+  int ret = rgw_get_system_obj(this, obj_ctx, get_zone_params().domain_root, avail_pools, map_bl, NULL, NULL);
   if (ret < 0) {
     goto read_omap;
   }
@@ -4598,7 +4598,7 @@ int RGWRados::update_placement_map()
 {
   bufferlist header;
   map<string, bufferlist> m;
-  rgw_obj obj(zone.domain_root, avail_pools);
+  rgw_obj obj(get_zone_params().domain_root, avail_pools);
   int ret = omap_get_all(obj, header, m);
   if (ret < 0)
     return ret;
@@ -4620,7 +4620,7 @@ int RGWRados::add_bucket_placement(std::string& new_pool)
   if (ret < 0) // DNE, or something
     return ret;
 
-  rgw_obj obj(zone.domain_root, avail_pools);
+  rgw_obj obj(get_zone_params().domain_root, avail_pools);
   bufferlist empty_bl;
   ret = omap_set(obj, new_pool, empty_bl);
 
@@ -4632,7 +4632,7 @@ int RGWRados::add_bucket_placement(std::string& new_pool)
 
 int RGWRados::remove_bucket_placement(std::string& old_pool)
 {
-  rgw_obj obj(zone.domain_root, avail_pools);
+  rgw_obj obj(get_zone_params().domain_root, avail_pools);
   int ret = omap_del(obj, old_pool);
 
   // don't care about return value
@@ -4646,7 +4646,7 @@ int RGWRados::list_placement_set(set<string>& names)
   bufferlist header;
   map<string, bufferlist> m;
 
-  rgw_obj obj(zone.domain_root, avail_pools);
+  rgw_obj obj(get_zone_params().domain_root, avail_pools);
   int ret = omap_get_all(obj, header, m);
   if (ret < 0)
     return ret;
@@ -4744,7 +4744,7 @@ int RGWRados::get_system_obj_ref(const rgw_obj& obj, rgw_rados_ref *ref, rgw_buc
 
   if (ref->oid.empty()) {
     ref->oid = bucket->name;
-    *bucket = zone.domain_root;
+    *bucket = get_zone_params().domain_root;
   }
   r = open_pool_ctx(bucket->name, ref->ioctx);
   if (r < 0)
@@ -9230,11 +9230,11 @@ void RGWRados::get_bucket_meta_oid(rgw_bucket& bucket, string& oid)
 void RGWRados::get_bucket_instance_obj(rgw_bucket& bucket, rgw_obj& obj)
 {
   if (!bucket.oid.empty()) {
-    obj.init(zone.domain_root, bucket.oid);
+    obj.init(get_zone_params().domain_root, bucket.oid);
   } else {
     string oid;
     get_bucket_meta_oid(bucket, oid);
-    obj.init(zone.domain_root, oid);
+    obj.init(get_zone_params().domain_root, oid);
   }
 }
 
@@ -9267,11 +9267,11 @@ int RGWRados::get_bucket_instance_from_oid(RGWObjectCtx& obj_ctx, string& oid, R
                                            time_t *pmtime, map<string, bufferlist> *pattrs,
                                            rgw_cache_entry_info *cache_info)
 {
-  ldout(cct, 20) << "reading from " << zone.domain_root << ":" << oid << dendl;
+  ldout(cct, 20) << "reading from " << get_zone_params().domain_root << ":" << oid << dendl;
 
   bufferlist epbl;
 
-  int ret = rgw_get_system_obj(this, obj_ctx, zone.domain_root, oid, epbl, &info.objv_tracker, pmtime, pattrs, cache_info);
+  int ret = rgw_get_system_obj(this, obj_ctx, get_zone_params().domain_root, oid, epbl, &info.objv_tracker, pmtime, pattrs, cache_info);
   if (ret < 0) {
     return ret;
   }
@@ -9300,7 +9300,7 @@ int RGWRados::get_bucket_entrypoint_info(RGWObjectCtx& obj_ctx,
   string bucket_entry;
 
   rgw_make_bucket_entry_name(tenant_name, bucket_name, bucket_entry);
-  int ret = rgw_get_system_obj(this, obj_ctx, zone.domain_root, bucket_entry, bl, objv_tracker, pmtime, pattrs, cache_info);
+  int ret = rgw_get_system_obj(this, obj_ctx, get_zone_params().domain_root, bucket_entry, bl, objv_tracker, pmtime, pattrs, cache_info);
   if (ret < 0) {
     return ret;
   }
@@ -10165,7 +10165,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 = zone.usage_log_pool.name.c_str();
+  const char *usage_log_pool = get_zone_params().usage_log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(usage_log_pool, io_ctx);
   if (r == -ENOENT) {
@@ -10194,7 +10194,7 @@ int RGWRados::cls_obj_usage_log_read(string& oid, string& user, uint64_t start_e
 
   *is_truncated = false;
 
-  const char *usage_log_pool = zone.usage_log_pool.name.c_str();
+  const char *usage_log_pool = get_zone_params().usage_log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(usage_log_pool, io_ctx);
   if (r < 0)
@@ -10210,7 +10210,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 = zone.usage_log_pool.name.c_str();
+  const char *usage_log_pool = get_zone_params().usage_log_pool.name.c_str();
   librados::Rados *rad = get_rados_handle();
   int r = rad->ioctx_create(usage_log_pool, io_ctx);
   if (r < 0)
@@ -10404,7 +10404,7 @@ int RGWRados::cls_user_get_header(const string& user_id, cls_user_header *header
 {
   string buckets_obj_id;
   rgw_get_buckets_obj(user_id, buckets_obj_id);
-  rgw_obj obj(zone.user_uid_pool, buckets_obj_id);
+  rgw_obj obj(get_zone_params().user_uid_pool, buckets_obj_id);
 
   rgw_rados_ref ref;
   rgw_bucket bucket;
@@ -10430,7 +10430,7 @@ int RGWRados::cls_user_get_header_async(const string& user_id, RGWGetUserHeader_
 {
   string buckets_obj_id;
   rgw_get_buckets_obj(user_id, buckets_obj_id);
-  rgw_obj obj(zone.user_uid_pool, buckets_obj_id);
+  rgw_obj obj(get_zone_params().user_uid_pool, buckets_obj_id);
 
   rgw_rados_ref ref;
   rgw_bucket bucket;
@@ -10495,7 +10495,7 @@ int RGWRados::update_user_bucket_stats(const string& user_id, rgw_bucket& bucket
 
   string buckets_obj_id;
   rgw_get_buckets_obj(user_id, buckets_obj_id);
-  rgw_obj obj(zone.user_uid_pool, buckets_obj_id);
+  rgw_obj obj(get_zone_params().user_uid_pool, buckets_obj_id);
 
   int r = cls_user_update_buckets(obj, entries, false);
   if (r < 0) {
@@ -10557,7 +10557,7 @@ int RGWRados::complete_sync_user_stats(const rgw_user& user_id)
 {
   string buckets_obj_id;
   rgw_get_buckets_obj(user_id, buckets_obj_id);
-  rgw_obj obj(zone.user_uid_pool, buckets_obj_id);
+  rgw_obj obj(get_zone_params().user_uid_pool, buckets_obj_id);
   return cls_user_complete_stats_sync(obj);
 }
 
index d942a1674cd0a65f53a4414d1634003e7b2c6957..d701db7918b8a39ccf797f4d8d2ce78a6d89a9e9 100644 (file)
@@ -1735,6 +1735,7 @@ protected:
 
   RGWZoneGroup zonegroup;
   RGWZone zone_public_config; /* external zone params, e.g., entrypoints, log flags, etc. */  
+  RGWZoneParams zone_params; /* internal zone params, e.g., rados pools */
 
   RGWZoneGroup period_zonegroup;
   RGWZone period_zone; /* external zone params, e.g., entrypoints, log flags, etc. */  
@@ -1775,7 +1776,7 @@ public:
    */
   void init_host_id() {
     /* uint64_t needs 16, two '-' separators and a trailing null */
-    const string& zone_name = zone.get_name();
+    const string& zone_name = get_zone().name;
     const string& zonegroup_name = zonegroup.get_name();
     char charbuf[16 + zone_name.size() + zonegroup_name.size() + 2 + 1];
     snprintf(charbuf, sizeof(charbuf), "%llx-%s-%s", (unsigned long long)instance_id(), zone_name.c_str(), zonegroup_name.c_str());
@@ -1787,12 +1788,11 @@ public:
 
   RGWRealm realm;
   RGWPeriod current_period;
-  RGWZoneParams zone; /* internal zone params, e.g., rados pools */
   RGWRESTConn *rest_master_conn;
   map<string, RGWRESTConn *> zone_conn_map;
   map<string, RGWRESTConn *> zonegroup_conn_map;
 
-  RGWZoneParams& get_zone_params() { return zone; }
+  RGWZoneParams& get_zone_params() { return zone_params; }
   RGWZoneGroup& get_zonegroup() {
     if (has_period_zonegroup) {
       return period_zonegroup;
@@ -2705,12 +2705,12 @@ public:
 
   uint64_t instance_id();
   const string& zone_id() {
-    return zone.get_id();
+    return get_zone_params().get_id();
   }
   string unique_id(uint64_t unique_num) {
     char buf[32];
     snprintf(buf, sizeof(buf), ".%llu.%llu", (unsigned long long)instance_id(), (unsigned long long)unique_num);
-    string s = zone.get_id() + buf;
+    string s = get_zone_params().get_id() + buf;
     return s;
   }
 
@@ -2718,7 +2718,7 @@ public:
     char buf[16 + 2 + 1]; /* uint64_t needs 16, 2 hyphens add further 2 */
 
     snprintf(buf, sizeof(buf), "-%llx-", (unsigned long long)instance_id());
-    url_encode(string(buf) + zone.get_name(), trans_id_suffix);
+    url_encode(string(buf) + get_zone_params().get_name(), trans_id_suffix);
   }
 
   /* In order to preserve compability with Swift API, transaction ID
@@ -2744,7 +2744,7 @@ public:
   }
 
   void get_log_pool_name(string& name) {
-    name = zone.log_pool.name;
+    name = get_zone_params().log_pool.name;
   }
 
   bool need_to_log_data() {
index 1ab561e9cb7cc08b1d6013b87bb368828ccf8875..e555ca3935e058e53be2f6b056fdd30384646aa7 100644 (file)
@@ -13,7 +13,7 @@ RGWRESTConn::RGWRESTConn(CephContext *_cct, RGWRados *store, const list<string>&
   for (i = 0, iter = remote_endpoints.begin(); iter != remote_endpoints.end(); ++iter, ++i) {
     endpoints[i] = *iter;
   }
-  key = store->zone.system_key;
+  key = store->get_zone_params().system_key;
   zone_group = store->get_zonegroup().get_id();
 }
 
index 72e4768d616c3304f0c97ffbec19fa916326a93e..f367ba2c4a29e3f1546eb1d0f270ed89c0734622 100644 (file)
@@ -195,7 +195,7 @@ int rgw_store_user_info(RGWRados *store,
     if (old_info && old_info->swift_keys.count(siter->first) != 0)
       continue;
 
-    ret = rgw_put_system_obj(store, store->zone.user_swift_pool, k.id,
+    ret = rgw_put_system_obj(store, store->get_zone_params().user_swift_pool, k.id,
                              link_bl.c_str(), link_bl.length(), exclusive,
                              NULL, 0);
     if (ret < 0)
@@ -279,7 +279,7 @@ int rgw_get_user_info_by_uid(RGWRados *store,
 
   RGWObjectCtx obj_ctx(store);
   string oid = uid.to_str();
-  int ret = rgw_get_system_obj(store, obj_ctx, store->zone.user_uid_pool, oid, bl, objv_tracker, pmtime, pattrs, cache_info);
+  int ret = rgw_get_system_obj(store, obj_ctx, store->get_zone_params().user_uid_pool, oid, bl, objv_tracker, pmtime, pattrs, cache_info);
   if (ret < 0) {
     return ret;
   }
@@ -338,7 +338,7 @@ int rgw_get_user_attrs_by_uid(RGWRados *store,
                               RGWObjVersionTracker *objv_tracker)
 {
   RGWObjectCtx obj_ctx(store);
-  rgw_obj obj(store->zone.user_uid_pool, user_id.to_str());
+  rgw_obj obj(store->get_zone_params().user_uid_pool, user_id.to_str());
   RGWRados::SystemObject src(store, obj_ctx, obj);
   RGWRados::SystemObject::Read rop(&src);
 
@@ -348,7 +348,7 @@ int rgw_get_user_attrs_by_uid(RGWRados *store,
 
 int rgw_remove_key_index(RGWRados *store, RGWAccessKey& access_key)
 {
-  rgw_obj obj(store->zone.user_keys_pool, access_key.id);
+  rgw_obj obj(store->get_zone_params().user_keys_pool, access_key.id);
   int ret = store->delete_system_obj(obj);
   return ret;
 }
@@ -371,14 +371,14 @@ int rgw_remove_uid_index(RGWRados *store, rgw_user& uid)
 
 int rgw_remove_email_index(RGWRados *store, string& email)
 {
-  rgw_obj obj(store->zone.user_email_pool, email);
+  rgw_obj obj(store->get_zone_params().user_email_pool, email);
   int ret = store->delete_system_obj(obj);
   return ret;
 }
 
 int rgw_remove_swift_name_index(RGWRados *store, string& swift_name)
 {
-  rgw_obj obj(store->zone.user_swift_pool, swift_name);
+  rgw_obj obj(store->get_zone_params().user_swift_pool, swift_name);
   int ret = store->delete_system_obj(obj);
   return ret;
 }
@@ -440,7 +440,7 @@ int rgw_delete_user(RGWRados *store, RGWUserInfo& info, RGWObjVersionTracker& ob
     }
   }
 
-  rgw_obj email_obj(store->zone.user_email_pool, info.user_email);
+  rgw_obj email_obj(store->get_zone_params().user_email_pool, info.user_email);
   ldout(store->ctx(), 10) << "removing email index: " << info.user_email << dendl;
   ret = store->delete_system_obj(email_obj);
   if (ret < 0 && ret != -ENOENT) {
@@ -450,7 +450,7 @@ int rgw_delete_user(RGWRados *store, RGWUserInfo& info, RGWObjVersionTracker& ob
 
   string buckets_obj_id;
   rgw_get_buckets_obj(info.user_id, buckets_obj_id);
-  rgw_obj uid_bucks(store->zone.user_uid_pool, buckets_obj_id);
+  rgw_obj uid_bucks(store->get_zone_params().user_uid_pool, buckets_obj_id);
   ldout(store->ctx(), 10) << "removing user buckets index" << dendl;
   ret = store->delete_system_obj(uid_bucks);
   if (ret < 0 && ret != -ENOENT) {
@@ -461,7 +461,7 @@ int rgw_delete_user(RGWRados *store, RGWUserInfo& info, RGWObjVersionTracker& ob
   string key;
   info.user_id.to_str(key);
   
-  rgw_obj uid_obj(store->zone.user_uid_pool, key);
+  rgw_obj uid_obj(store->get_zone_params().user_uid_pool, key);
   ldout(store->ctx(), 10) << "removing user index: " << info.user_id << dendl;
   ret = store->meta_mgr->remove_entry(user_meta_handler, key, &objv_tracker);
   if (ret < 0 && ret != -ENOENT && ret  != -ECANCELED) {
@@ -2656,7 +2656,7 @@ public:
 
   void get_pool_and_oid(RGWRados *store, const string& key, rgw_bucket& bucket, string& oid) {
     oid = key;
-    bucket = store->zone.user_uid_pool;
+    bucket = store->get_zone_params().user_uid_pool;
   }
 
   int list_keys_init(RGWRados *store, void **phandle)
@@ -2681,7 +2681,7 @@ public:
 
     list<string> unfiltered_keys;
 
-    int ret = store->list_raw_objects(store->zone.user_uid_pool, no_filter,
+    int ret = store->list_raw_objects(store->get_zone_params().user_uid_pool, no_filter,
                                       max, info->ctx, unfiltered_keys, truncated);
     if (ret < 0 && ret != -ENOENT)
       return ret;