From 79932fcc19ed80412ab0f3ed1e20cfbec3d37783 Mon Sep 17 00:00:00 2001 From: "Adam C. Emerson" Date: Mon, 16 May 2022 23:23:40 -0400 Subject: [PATCH] rgw: add `bucket object shard` command to radosgw-admin Given an object, return the bucket shard appropriate to it. Signed-off-by: Adam C. Emerson --- src/rgw/rgw_admin.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 97ca51cc8ea..0c9d26ef8c5 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -650,6 +650,7 @@ enum class OPT { BUCKET_CHOWN, BUCKET_RADOS_LIST, BUCKET_SHARD_OBJECTS, + BUCKET_OBJECT_SHARD, POLICY, POOL_ADD, POOL_RM, @@ -868,6 +869,7 @@ static SimpleCmd::Commands all_cmds = { { "bucket rados list", OPT::BUCKET_RADOS_LIST }, { "bucket shard objects", OPT::BUCKET_SHARD_OBJECTS }, { "bucket shard object", OPT::BUCKET_SHARD_OBJECTS }, + { "bucket object shard", OPT::BUCKET_OBJECT_SHARD }, { "policy", OPT::POLICY }, { "pool add", OPT::POOL_ADD }, { "pool rm", OPT::POOL_RM }, @@ -4255,6 +4257,7 @@ int main(int argc, const char **argv) OPT::BUCKET_SYNC_STATUS, OPT::BUCKET_SYNC_MARKERS, OPT::BUCKET_SHARD_OBJECTS, + OPT::BUCKET_OBJECT_SHARD, OPT::LOG_LIST, OPT::LOG_SHOW, OPT::USAGE_SHOW, @@ -7032,6 +7035,19 @@ int main(int argc, const char **argv) } } + if (opt_cmd == OPT::BUCKET_OBJECT_SHARD) { + if (!num_shards_specified || object.empty()) { + cerr << "ERROR: num-shards and object must be specified." + << std::endl; + return EINVAL; + } + auto shard = RGWSI_BucketIndex_RADOS::bucket_shard_index(object, num_shards); + formatter->open_object_section("obj_shard"); + encode_json("shard", shard, formatter.get()); + formatter->close_section(); + formatter->flush(cout); + } + if (opt_cmd == OPT::BUCKET_CHOWN) { if (bucket_name.empty()) { cerr << "ERROR: bucket name not specified" << std::endl; -- 2.39.5