From: Yao Zongyou Date: Fri, 8 Dec 2017 13:26:09 +0000 (+0800) Subject: rgw-admin: properly filtering bucket stats by user_id or bucket_name X-Git-Tag: v13.0.2~737^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4586cfbf992d296c94534df66d1964650e406c00;p=ceph.git rgw-admin: properly filtering bucket stats by user_id or bucket_name If both --uid and --bucket args are provided, properly filtering bucket stats by user_id and bucket_name. Signed-off-by: Yao Zongyou --- diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index b2ee30078c33..9a3b20b8a7fc 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -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::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;