From: Nick Janus Date: Thu, 30 Apr 2020 16:22:33 +0000 (-0400) Subject: rgw: fixes BucketInfo for missing buckets X-Git-Tag: v16.1.0~732^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d70ca81502d25bd7a76dd2ed2a538bf5e6584822;p=ceph.git 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 --- diff --git a/qa/tasks/radosgw_admin_rest.py b/qa/tasks/radosgw_admin_rest.py index df3fa7a1d173..95fe5b8ac381 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 584829919e8b..0ef697fd07d1 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);