From d669a7e70c1ec8fb9b66a9ea2fbfd20f017d6617 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 9 Sep 2014 14:05:40 -0700 Subject: [PATCH] rgw-admin: add olh readlog command Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_admin.cc | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index e3d11f6d4a8d8..1d55a7c6f5a16 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -223,6 +223,7 @@ enum { OPT_OBJECT_STAT, OPT_OBJECT_REWRITE, OPT_OLH_GET, + OPT_OLH_READLOG, OPT_QUOTA_SET, OPT_QUOTA_ENABLE, OPT_QUOTA_DISABLE, @@ -387,6 +388,8 @@ static int get_cmd(const char *cmd, const char *prev_cmd, bool *need_more) } else if (strcmp(prev_cmd, "olh") == 0) { if (strcmp(cmd, "get") == 0) return OPT_OLH_GET; + if (strcmp(cmd, "readlog") == 0) + return OPT_OLH_READLOG; } else if (strcmp(prev_cmd, "region") == 0) { if (strcmp(cmd, "get") == 0) return OPT_REGION_GET; @@ -1896,8 +1899,7 @@ next: } } - if (opt_cmd == OPT_OLH_GET /* || opt_cmd == OPT_OLH_SET */) { -#warning clean up + if (opt_cmd == OPT_OLH_GET || opt_cmd == OPT_OLH_READLOG) { if (bucket_name.empty()) { cerr << "ERROR: bucket not specified" << std::endl; return EINVAL; @@ -1919,10 +1921,27 @@ next: rgw_obj obj(bucket, object); int ret = store->get_olh(obj, &olh); if (ret < 0) { - cerr << "ERROR: failed reading olh: " << cpp_strerror(-ret) << dendl; + cerr << "ERROR: failed reading olh: " << cpp_strerror(-ret) << std::endl; return -ret; } - encode_json("olh", olg, formatter); + encode_json("olh", olh, formatter); + formatter->flush(cout); + } + + if (opt_cmd == OPT_OLH_READLOG) { + map log; + bool is_truncated; + + rgw_obj obj(bucket, object); + int ret = store->bucket_index_read_olh_log(NULL, obj, 0, &log, &is_truncated); + if (ret < 0) { + cerr << "ERROR: failed reading olh: " << cpp_strerror(-ret) << std::endl; + return -ret; + } + formatter->open_object_section("result"); + encode_json("is_truncated", is_truncated, formatter); + encode_json("log", log, formatter); + formatter->close_section(); formatter->flush(cout); } -- 2.39.5