From: Adam C. Emerson Date: Tue, 17 May 2022 03:23:40 +0000 (-0400) Subject: rgw: add `bucket object shard` command to radosgw-admin X-Git-Tag: v18.0.0~787^2~8 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=79932fcc19ed80412ab0f3ed1e20cfbec3d37783;p=ceph.git 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 --- diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 97ca51cc8eae4..0c9d26ef8c515 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;