From d70ca81502d25bd7a76dd2ed2a538bf5e6584822 Mon Sep 17 00:00:00 2001 From: Nick Janus Date: Thu, 30 Apr 2020 12:22:33 -0400 Subject: [PATCH] rgw: fixes BucketInfo for missing buckets The admin api BucketInfo endpoint should now return 404 for buckets that are not found where only the bucket name is passed as a parameter. Fixes: https://tracker.ceph.com/issues/45193 Signed-off-by: Nick Janus --- qa/tasks/radosgw_admin_rest.py | 5 +++++ src/rgw/rgw_bucket.cc | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/qa/tasks/radosgw_admin_rest.py b/qa/tasks/radosgw_admin_rest.py index df3fa7a1d1737..95fe5b8ac3819 100644 --- a/qa/tasks/radosgw_admin_rest.py +++ b/qa/tasks/radosgw_admin_rest.py @@ -464,6 +464,11 @@ def task(ctx, config): assert out['usage']['rgw.main']['num_objects'] == 1 assert out['usage']['rgw.main']['size_kb'] > 0 + # TESTCASE 'bucket-stats6', 'bucket', 'stats', 'non-existent bucket', 'fails, 'bucket not found error' + (ret, out) = rgwadmin_rest(admin_conn, ['bucket', 'info'], {'bucket' : 'doesnotexist'}) + assert ret == 404 + assert out['Code'] == 'NoSuchBucket' + # reclaim it key.delete() diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index 584829919e8b6..0ef697fd07d1e 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -1490,8 +1490,15 @@ int RGWBucketAdminOp::info(rgw::sal::RGWRadosStore *store, RGWBucketAdminOpState& op_state, RGWFormatterFlusher& flusher) { + RGWBucket bucket; int ret = 0; const std::string& bucket_name = op_state.get_bucket_name(); + if (!bucket_name.empty()) { + ret = bucket.init(store, op_state, null_yield); + if (ret < 0) + return ret; + } + Formatter *formatter = flusher.get_formatter(); flusher.start(0); -- 2.39.5