]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add a system request param to select op bucket instance
authorYehuda Sadeh <yehuda@inktank.com>
Mon, 24 Jun 2013 06:18:44 +0000 (23:18 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Mon, 24 Jun 2013 06:18:44 +0000 (23:18 -0700)
Added rgwx-bucket-instance request param that selects the actual bucket
instance to use for this request.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_common.h
src/rgw/rgw_op.cc

index af70846f87c3c7205e8d459eb212f928924dd26e..847b3f07ec0ca9714a373024d42bc6603324f8ac 100644 (file)
@@ -774,6 +774,8 @@ struct req_state {
    ACLOwner bucket_owner;
    ACLOwner owner;
 
+   string bucket_instance_id;
+
    RGWBucketInfo bucket_info;
    map<string, bufferlist> bucket_attrs;
    bool bucket_exists;
index 202e438af5f563128195cc93eb34779f994a554b..01a2cfeee22c4b2891412798af74d6fc805b5640 100644 (file)
@@ -318,6 +318,8 @@ static int rgw_build_policies(RGWRados *store, struct req_state *s, bool only_bu
   string obj_str;
   RGWUserInfo bucket_owner_info;
 
+  s->bucket_instance_id = s->info.args.get(RGW_SYS_PARAM_PREFIX "bucket-instance");
+
   s->bucket_acl = new RGWAccessControlPolicy(s->cct);
 
   if (s->copy_source) { /* check if copy source is within the current domain */
@@ -342,7 +344,11 @@ static int rgw_build_policies(RGWRados *store, struct req_state *s, bool only_bu
     
   if (s->bucket_name_str.size()) {
     s->bucket_exists = true;
-    ret = store->get_bucket_info(s->obj_ctx, s->bucket_name_str, s->bucket_info, NULL, &s->bucket_attrs);
+    if (s->bucket_instance_id.empty()) {
+      ret = store->get_bucket_info(s->obj_ctx, s->bucket_name_str, s->bucket_info, NULL, &s->bucket_attrs);
+    } else {
+      ret = store->get_bucket_instance_info(s->obj_ctx, s->bucket_instance_id, s->bucket_info, NULL, &s->bucket_attrs);
+    }
     if (ret < 0) {
       if (ret != -ENOENT) {
         ldout(s->cct, 0) << "NOTICE: couldn't get bucket from bucket_name (name=" << s->bucket_name_str << ")" << dendl;