From b993001d38fc43a40f3861d85e1f8448f523a04f Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 8 Feb 2022 14:39:12 -0500 Subject: [PATCH] radosgw-admin: add command to dump 'bucket layout' Signed-off-by: Casey Bodley --- src/rgw/rgw_admin.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 35fd272eda4..17ff55b9bdc 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -629,6 +629,7 @@ enum class OPT { BUCKET_LIMIT_CHECK, BUCKET_LINK, BUCKET_UNLINK, + BUCKET_LAYOUT, BUCKET_STATS, BUCKET_CHECK, BUCKET_SYNC_CHECKPOINT, @@ -843,6 +844,7 @@ static SimpleCmd::Commands all_cmds = { { "bucket limit check", OPT::BUCKET_LIMIT_CHECK }, { "bucket link", OPT::BUCKET_LINK }, { "bucket unlink", OPT::BUCKET_UNLINK }, + { "bucket layout", OPT::BUCKET_LAYOUT }, { "bucket stats", OPT::BUCKET_STATS }, { "bucket check", OPT::BUCKET_CHECK }, { "bucket sync checkpoint", OPT::BUCKET_SYNC_CHECKPOINT }, @@ -4231,6 +4233,7 @@ int main(int argc, const char **argv) OPT::USER_STATS, OPT::BUCKETS_LIST, OPT::BUCKET_LIMIT_CHECK, + OPT::BUCKET_LAYOUT, OPT::BUCKET_STATS, OPT::BUCKET_SYNC_CHECKPOINT, OPT::BUCKET_SYNC_INFO, @@ -6914,6 +6917,22 @@ int main(int argc, const char **argv) } } + if (opt_cmd == OPT::BUCKET_LAYOUT) { + if (bucket_name.empty()) { + cerr << "ERROR: bucket not specified" << std::endl; + return EINVAL; + } + int ret = init_bucket(user.get(), tenant, bucket_name, bucket_id, &bucket); + if (ret < 0) { + return -ret; + } + const auto& bucket_info = bucket->get_info(); + formatter->open_object_section("layout"); + encode_json("layout", bucket_info.layout, formatter.get()); + formatter->close_section(); + formatter->flush(cout); + } + if (opt_cmd == OPT::BUCKET_STATS) { if (bucket_name.empty() && !bucket_id.empty()) { rgw_bucket bucket; -- 2.39.5