]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw-admin: properly filtering bucket stats by user_id or bucket_name 19401/head
authorYao Zongyou <yaozongyou@vip.qq.com>
Fri, 8 Dec 2017 13:26:09 +0000 (21:26 +0800)
committerYao Zongyou <yaozongyou@vip.qq.com>
Fri, 8 Dec 2017 13:26:09 +0000 (21:26 +0800)
If both --uid and --bucket args are provided, properly filtering
bucket stats by user_id and bucket_name.

Signed-off-by: Yao Zongyou <yaozongyou@vip.qq.com>
src/rgw/rgw_bucket.cc

index b2ee30078c33ce9d9ef494f323d8fea4815e0824..9a3b20b8a7fcebc100f429f8084aa33da54a1b59 100644 (file)
@@ -1545,17 +1545,8 @@ int RGWBucketAdminOp::limit_check(RGWRados *store,
 int RGWBucketAdminOp::info(RGWRados *store, RGWBucketAdminOpState& op_state,
                   RGWFormatterFlusher& flusher)
 {
-  RGWBucket bucket;
-  int ret;
-
+  int ret = 0;
   string bucket_name = op_state.get_bucket_name();
-
-  if (!bucket_name.empty()) {
-    ret = bucket.init(store, op_state);
-    if (ret < 0)
-      return ret;
-  }
-
   Formatter *formatter = flusher.get_formatter();
   flusher.start(0);
 
@@ -1583,7 +1574,11 @@ int RGWBucketAdminOp::info(RGWRados *store, RGWBucketAdminOpState& op_state,
       map<string, RGWBucketEnt>::iterator iter;
 
       for (iter = m.begin(); iter != m.end(); ++iter) {
-        std::string  obj_name = iter->first;
+        std::string obj_name = iter->first;
+        if (!bucket_name.empty() && bucket_name != obj_name) {
+          continue;
+        }
+
         if (show_stats)
           bucket_stats(store, user_id.tenant, obj_name, formatter);
         else
@@ -1597,7 +1592,10 @@ int RGWBucketAdminOp::info(RGWRados *store, RGWBucketAdminOpState& op_state,
 
     formatter->close_section();
   } else if (!bucket_name.empty()) {
-    bucket_stats(store, user_id.tenant, bucket_name, formatter);
+    ret = bucket_stats(store, user_id.tenant, bucket_name, formatter);
+    if (ret < 0) {
+      return ret;
+    }
   } else {
     RGWAccessHandle handle;