From f723f0a51d193f130d8040c8de593e4104409a6d Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Tue, 4 Oct 2011 13:42:19 -0700 Subject: [PATCH] rgw: remove the rgw_get_bucket_info functions Push them down into the RGWAccess layers. Signed-off-by: Greg Farnum --- src/rgw/rgw_access.h | 4 ++++ src/rgw/rgw_admin.cc | 13 +++++++++---- src/rgw/rgw_bucket.cc | 37 ------------------------------------- src/rgw/rgw_fs.cc | 4 ++++ src/rgw/rgw_fs.h | 2 ++ src/rgw/rgw_op.cc | 4 ++-- src/rgw/rgw_rados.cc | 28 ++++++++++++++++++++++++++++ src/rgw/rgw_rados.h | 1 + 8 files changed, 50 insertions(+), 43 deletions(-) diff --git a/src/rgw/rgw_access.h b/src/rgw/rgw_access.h index 0008432f41aa5..03d0a66229f52 100644 --- a/src/rgw/rgw_access.h +++ b/src/rgw/rgw_access.h @@ -263,6 +263,10 @@ public: virtual void set_intent_cb(void *ctx, int (*cb)(void *user_ctx, rgw_obj& obj, RGWIntentEvent intent)) {} virtual int get_bucket_stats(rgw_bucket& bucket, map& stats) { return -ENOTSUP; } + + /* The bucket here can either be the bucket name identifier, or the ID + * in period format: ".123" */ + virtual int get_bucket_info(string& bucket, RGWBucketInfo& info) = 0; }; class RGWStoreManager { diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index b14247d7ef0d3..402515f3ab08f 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -342,7 +342,7 @@ static int create_bucket(string bucket_str, string& user_id, string& display_nam policy.create_default(user_id, display_name); policy.encode(aclbl); - ret = rgw_get_bucket_info(bucket_str, bucket_info); + ret = rgwstore->get_bucket_info(bucket_str, bucket_info); if (ret < 0) return ret; @@ -515,7 +515,7 @@ int process_intent_log(rgw_bucket& bucket, string& oid, time_t epoch, int flags, int bucket_stats(rgw_bucket& bucket, Formatter *formatter) { RGWBucketInfo bucket_info; - int r = rgw_get_bucket_info(bucket.name, bucket_info); + int r = rgwstore->get_bucket_info(bucket.name, bucket_info); if (r < 0) return r; @@ -828,7 +828,12 @@ int main(int argc, char **argv) if ((!bucket_name.empty()) || bucket_id >= 0) { if (bucket_id >= 0) { - int ret = rgw_get_bucket_info_id(bucket_id, bucket_info); + char bucket_char[16]; + snprintf(bucket_char, sizeof(bucket_char), ".%lld", + (long long unsigned)bucket_id); + string bucket_string(bucket_char); + int ret = rgwstore->get_bucket_info(bucket_string, bucket_info); + if (ret < 0) { cerr << "could not retrieve bucket info for bucket_id=" << bucket_id << std::endl; return ret; @@ -841,7 +846,7 @@ int main(int argc, char **argv) } else { string bucket_name_str = bucket_name; RGWBucketInfo bucket_info; - int r = rgw_get_bucket_info(bucket_name_str, bucket_info); + int r = rgwstore->get_bucket_info(bucket_name_str, bucket_info); if (r < 0) { cerr << "could not get bucket info for bucket=" << bucket_name_str << std::endl; return r; diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index db8251bc94ff0..8a5346daae05d 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -11,40 +11,3 @@ static rgw_bucket pi_buckets(BUCKETS_POOL_NAME); static string pool_name_prefix = "p"; - -int rgw_get_bucket_info(string& bucket_name, RGWBucketInfo& info) -{ - bufferlist bl; - - int ret = rgw_get_obj(pi_buckets, bucket_name, bl); - if (ret < 0) { - if (ret != -ENOENT) - return ret; - - info.bucket.name = bucket_name; - info.bucket.pool = bucket_name; // for now - return 0; - } - - bufferlist::iterator iter = bl.begin(); - try { - ::decode(info, iter); - } catch (buffer::error& err) { - RGW_LOG(0) << "ERROR: could not decode buffer info, caught buffer::error" << dendl; - return -EIO; - } - - RGW_LOG(0) << "rgw_get_bucket_info: bucket=" << info.bucket << " owner " << info.owner << dendl; - - return 0; -} - -int rgw_get_bucket_info_id(uint64_t bucket_id, RGWBucketInfo& info) -{ - char bucket_char[16]; - snprintf(bucket_char, sizeof(bucket_char), ".%lld", - (long long unsigned)bucket_id); - string bucket_string(bucket_char); - - return rgw_get_bucket_info(bucket_string, info); -} diff --git a/src/rgw/rgw_fs.cc b/src/rgw/rgw_fs.cc index a43991db0ff1f..d687651509302 100644 --- a/src/rgw/rgw_fs.cc +++ b/src/rgw/rgw_fs.cc @@ -660,3 +660,7 @@ done: return r; } +int RGWFS::get_bucket_info(string& bucket_name, RGWBucketInfo& info) +{ + return -ENOTSUP; +} diff --git a/src/rgw/rgw_fs.h b/src/rgw/rgw_fs.h index e3a9009a4a9a3..0260c72052927 100644 --- a/src/rgw/rgw_fs.h +++ b/src/rgw/rgw_fs.h @@ -64,6 +64,8 @@ public: void finish_get_obj(void **handle); int read(void *ctx, rgw_obj& obj, off_t ofs, size_t size, bufferlist& bl); int obj_stat(void *ctx, rgw_obj& obj, uint64_t *psize, time_t *pmtime); + + virtual int get_bucket_info(string& bucket_name, RGWBucketInfo& info); }; #endif diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 0edd2fc389c46..17ba579da1df8 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -235,7 +235,7 @@ int read_acls(struct req_state *s, bool only_bucket) if (s->bucket_name_str.size()) { RGWBucketInfo bucket_info; - ret = rgw_get_bucket_info(s->bucket_name_str, bucket_info); + ret = rgwstore->get_bucket_info(s->bucket_name_str, bucket_info); if (ret < 0) { RGW_LOG(0) << "couldn't get bucket from bucket_name (name=" << s->bucket_name_str << ")" << dendl; return ret; @@ -834,7 +834,7 @@ int RGWCopyObj::verify_permission() RGWBucketInfo bucket_info; - ret = rgw_get_bucket_info(src_bucket_name, bucket_info); + ret = rgwstore->get_bucket_info(src_bucket_name, bucket_info); if (ret < 0) return ret; diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 2e335746d6c71..2064f9a9aada8 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -1715,6 +1715,34 @@ int RGWRados::get_bucket_stats(rgw_bucket& bucket, map& m) { bufferlist bl; diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index 71330c7fe8a7e..0df2a52aa2502 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -291,6 +291,7 @@ public: int decode_policy(bufferlist& bl, ACLOwner *owner); int get_bucket_stats(rgw_bucket& bucket, map& stats); + virtual int get_bucket_info(string& bucket_name, RGWBucketInfo& info); int cls_rgw_init_index(rgw_bucket& bucket, string& oid); int cls_obj_prepare_op(rgw_bucket& bucket, uint8_t op, string& tag, string& name); -- 2.39.5