diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2013-06-26 11:28:57 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-06-26 21:31:21 -0700 |
commit | 5c4bb463dca5aa61ea5f02f7592d5a3cc82cf6f4 (patch) | |
tree | f8f6b00b2f84793f0e815f55805f73a3805423da | |
parent | b2fb48762f32279e73feb83b220339fea31275e9 (diff) | |
download | ceph-5c4bb463dca5aa61ea5f02f7592d5a3cc82cf6f4.tar.gz |
rgw: fix radosgw-admin buckets list
Fixes: #5455
Backport: cuttlefish
This commit fixes a regression, where radosgw-admin buckets list
operation wasn't returning any data.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
(cherry picked from commit e1f9fe58d2860fcbb18c92d3eb3946236b49a6ce)
-rw-r--r-- | src/rgw/rgw_bucket.cc | 16 | ||||
-rw-r--r-- | src/rgw/rgw_rados.cc | 4 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index 2f05264778e..99de568d92a 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -863,11 +863,16 @@ int RGWBucketAdminOp::info(RGWRados *store, RGWBucketAdminOpState& op_state, RGWFormatterFlusher& flusher) { RGWBucket bucket; - int ret = bucket.init(store, op_state); - if (ret < 0) - return ret; + int ret; + 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); @@ -911,7 +916,8 @@ int RGWBucketAdminOp::info(RGWRados *store, RGWBucketAdminOpState& op_state, } else { RGWAccessHandle handle; - if (store->list_buckets_init(&handle) > 0) { + formatter->open_array_section("buckets"); + if (store->list_buckets_init(&handle) >= 0) { RGWObjEnt obj; while (store->list_buckets_next(obj, &handle) >= 0) { formatter->dump_string("bucket", obj.name); @@ -919,6 +925,8 @@ int RGWBucketAdminOp::info(RGWRados *store, RGWBucketAdminOpState& op_state, bucket_stats(store, obj.name, formatter); } } + + formatter->close_section(); } flusher.flush(); diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 7d038639a74..5ca27a06a03 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -428,9 +428,7 @@ int RGWRados::list_buckets_next(RGWObjEnt& obj, RGWAccessHandle *handle) obj.name = (*state)->first; (*state)++; - } while (obj.name[0] == '.'); - - /* FIXME: should read mtime/size vals for bucket */ + } while (obj.name[0] == '.'); /* skip all entries starting with '.' */ return 0; } |