From ede013f4adc837968b7152e3c76753d85c3df35a Mon Sep 17 00:00:00 2001 From: Seena Fallah Date: Wed, 30 Apr 2025 20:40:13 +0200 Subject: [PATCH] rgw-admin: report correct error code for non-existent bucket on deletion admin api should return the correct error code when the bucket doesn't exist on bucket deletion. apparently a regression by 9ae2d8c4e95807179fc17f84be6754d2b19fe639. Fixes: https://tracker.ceph.com/issues/71159 Signed-off-by: Seena Fallah --- qa/tasks/radosgw_admin_rest.py | 5 +++++ src/rgw/driver/rados/rgw_rest_bucket.cc | 3 +++ 2 files changed, 8 insertions(+) diff --git a/qa/tasks/radosgw_admin_rest.py b/qa/tasks/radosgw_admin_rest.py index 4b07ad330d342..049a7903b1cc8 100644 --- a/qa/tasks/radosgw_admin_rest.py +++ b/qa/tasks/radosgw_admin_rest.py @@ -858,6 +858,11 @@ def task(ctx, config): (ret, out) = rgwadmin_rest(admin_conn, ['bucket', 'rm'], {'bucket' : bucket_name, 'purge-objects' : True}) assert ret == 200 + # TESTCASE 'rm-bucket', 'bucket', 'rm', 'non-existent bucket', 'correct error' + (ret, out) = rgwadmin_rest(admin_conn, ['bucket', 'rm'], {'bucket' : bucket_name}) + assert ret == 404 + assert out['Code'] == 'NoSuchBucket' + # TESTCASE 'caps-add', 'caps', 'add', 'add user cap', 'succeeds' caps = 'usage=read' (ret, out) = rgwadmin_rest(admin_conn, ['caps', 'add'], {'uid' : user1, 'user-caps' : caps}) diff --git a/src/rgw/driver/rados/rgw_rest_bucket.cc b/src/rgw/driver/rados/rgw_rest_bucket.cc index bdbafe2d1ebed..3468aa0de7bc0 100644 --- a/src/rgw/driver/rados/rgw_rest_bucket.cc +++ b/src/rgw/driver/rados/rgw_rest_bucket.cc @@ -234,6 +234,9 @@ void RGWOp_Bucket_Remove::execute(optional_yield y) const bool is_forwarded = s->info.args.exists(RGW_SYS_PARAM_PREFIX "zonegroup"); op_ret = RGWBucketAdminOp::remove_bucket(driver, *s->penv.site, op_state, y, s, bypass_gc, true, is_forwarded); + if (op_ret == -ENOENT) { + op_ret = -ERR_NO_SUCH_BUCKET; + } } class RGWOp_Set_Bucket_Quota : public RGWRESTOp { -- 2.39.5