From: Nick Janus Date: Thu, 30 Apr 2020 16:22:33 +0000 (-0400) Subject: rgw: fixes BucketInfo for missing buckets X-Git-Tag: v14.2.17~81^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ea8c67487d5dfb5f8e60244b197848fc63458322;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 (cherry picked from commit d70ca81502d25bd7a76dd2ed2a538bf5e6584822) Conflicts: src/rgw/rgw_bucket.cc - omitted null_yield parameter from bucket.init() call for nautilus purposes --- diff --git a/qa/tasks/radosgw_admin_rest.py b/qa/tasks/radosgw_admin_rest.py index 8902ca15c6e2..24330ad3bb91 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 e7ebfeefa2ce..830efa60e58b 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -1644,8 +1644,15 @@ int RGWBucketAdminOp::limit_check(RGWRados *store, int RGWBucketAdminOp::info(RGWRados *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); + if (ret < 0) + return ret; + } + Formatter *formatter = flusher.get_formatter(); flusher.start(0);