]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librgw: fixes for RGWListBucketRequest callback
authorMatt Benjamin <mbenjamin@redhat.com>
Mon, 5 Oct 2015 15:13:19 +0000 (11:13 -0400)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 12 Feb 2016 17:04:41 +0000 (12:04 -0500)
The cached req_state is still not correct at RGWOp::execute().

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/librgw.cc
src/rgw/rgw_file.cc
src/rgw/rgw_file.h
src/rgw/rgw_rest_lib.cc
src/test/librgw_file.cc

index b4bd1c8001cf188173602ca22d9e12e77a71dae3..3e42d2b10c4dfb00591638ec7192a525bf138565 100644 (file)
@@ -265,6 +265,8 @@ int RGWLibProcess::process_request(RGWLibRequest* req, RGWLibIO* io)
     goto done;
   }
 
+#warning authorize step disabled (no cached perms)
+#if 0
   req->log(s, "verifying op permissions");
   ret = op->verify_permission();
   if (ret < 0) {
@@ -275,6 +277,7 @@ int RGWLibProcess::process_request(RGWLibRequest* req, RGWLibIO* io)
       goto done;
     }
   }
+#endif
 
   req->log(s, "verifying op params");
   ret = op->verify_params();
index 1f67bdf0a0278b1c2392cae617ace8f9e669605b..f438ba0fd7fbf632c36439ce297f3912eaa9e643 100644 (file)
@@ -309,9 +309,10 @@ int rgw_readdir(struct rgw_fs *rgw_fs,
     (void) librgw.get_fe()->execute_req(&req);
   } else {
     /*
-      RGWListBucketRequest req(cct, rgw_fs->user_id, uri, rcb, cb_arg, offset);
-      ...
-    */
+     * bucket?
+     */
+    uri += "/";
+
     RGWListBucketRequest req(cct, rgw_fs->user_id, uri, rcb, cb_arg, offset);
     (void) librgw.get_fe()->execute_req(&req);
 
index b9fa8023583869b3cd025126f86b36b656e0570b..4ee4f415714d54c9b6b30f734fd62bd2f6f9f10b 100644 (file)
@@ -116,9 +116,10 @@ public:
     s->info.request_params = "";
     s->info.domain = ""; /* XXX ? */
 
-    /* XXX fake user_id (will fix) */
+    /* XXX fake user_id and perms (will fix) */
     s->user.user_id = user_id;
     s->user.display_name = user_id;
+    s->perm_mask = RGW_PERM_READ;
 
     return 0;
   }
index 76132fd8423a4e78c582c3b6cad4b71bd4aff0a0..718ae9da157fa23e4822c8993d147b9d50c2c539 100644 (file)
@@ -71,7 +71,7 @@ void RGWListBuckets_ObjStore_Lib::send_response_data(RGWUserBuckets& buckets)
   if (!sent_data)
     return;
 
-  // XXX we can improve this
+  // XXX if necessary, we can remove the need for dynamic_cast
   RGWListBucketsRequest* req
     = dynamic_cast<RGWListBucketsRequest*>(this);
 
@@ -114,7 +114,12 @@ int RGWListBucket_ObjStore_Lib::get_params()
 
 void RGWListBucket_ObjStore_Lib::send_response()
 {
+  // XXX if necessary, we can remove the need for dynamic_cast
+  RGWListBucketRequest* req
+    = dynamic_cast<RGWListBucketRequest*>(this);
+
   for (const auto& iter : objs) {
-    // XXXX cb(iter.key.name, iter.key.name); // XXX marker, attributes
+    /* call me maybe */
+    req->operator()(iter.key.name, iter.key.name); // XXX attributes
   }
 }
index 3769de8c4063a12f059ea436862925bf2d4c83cb..08890d2924d435e367f701f7cc884341ed359586 100644 (file)
@@ -98,7 +98,8 @@ TEST(LibRGW, LIST_OBJECTS) {
   for (auto& fid : fids1) {
     std::cout << "readdir in bucket " << get<0>(fid) << std::endl;
     bool eof = false;
-    int ret = rgw_readdir(fs, get<2>(fid), 0 /* offset */, r2_cb, &fids2,
+    uint64_t offset = 0;
+    int ret = rgw_readdir(fs, get<2>(fid), &offset, r2_cb, &fids2,
                          &eof);
     for (auto& fid2 : fids2) {
       std::cout << "fname: " << get<0>(fid2) << " fid: " << get<1>(fid2)