BUCKET_LIMIT_CHECK,
BUCKET_LINK,
BUCKET_UNLINK,
+ BUCKET_LAYOUT,
BUCKET_STATS,
BUCKET_CHECK,
BUCKET_SYNC_CHECKPOINT,
{ "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 },
OPT::USER_STATS,
OPT::BUCKETS_LIST,
OPT::BUCKET_LIMIT_CHECK,
+ OPT::BUCKET_LAYOUT,
OPT::BUCKET_STATS,
OPT::BUCKET_SYNC_CHECKPOINT,
OPT::BUCKET_SYNC_INFO,
}
}
+ 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;