diff options
author | Dawit Alemu <dalemu@redhat.com> | 2013-12-30 22:59:39 -0500 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2014-01-24 02:05:35 -0800 |
commit | 48b8186bdc2f5e45b58aadf849b2bd60c9a77330 (patch) | |
tree | b6c3c49cb40bf14572da45b346a54ab175739859 /cli/src/cli-rpc-ops.c | |
parent | bb63256b7ea1f186bbe3fae9040a6c191c9d6544 (diff) |
cli: Add options to the CLI that let the user control the reset of
stats
"volume profile info" automatically clears incremental stats. There
isn't a command to:
- fetch stats without clearing incremental stats and
- clear cumulative and incremental stats
This change introduces two arguments (i.e. peek and clear). 'clear'
will wipe both incremental and cumulative stats. 'peek' fetches stats
without wiping incremental stats.
'volume profile info peek' - fetches incremental and cumulative stats
without wiping incremental stats
'volume profile info incremental peek' - fetches incremental stats
without wiping incremental stats
'volume profile info clear' - clears both incremental and cumultiave
stats
Change-Id: I91834515ad672eca5f882809941147d7d997c4c9
BUG: 1047416
Signed-off-by: Dawit Alemu <dalemu@redhat.com>
Reviewed-on: http://review.gluster.org/6620
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
-rw-r--r-- | cli/src/cli-rpc-ops.c | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index d1b39014dc9..0b6bcb54b81 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -4775,6 +4775,8 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, char *volname = NULL; char *brick = NULL; char str[1024] = {0,}; + int stats_cleared = 0; + gf1_cli_info_op info_op = GF_CLI_INFO_NONE; if (-1 == req->rpc_status) { goto out; @@ -4840,8 +4842,6 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, (rsp.op_ret) ? "unsuccessful": "successful"); break; case GF_CLI_STATS_INFO: - case GF_CLI_STATS_INFO_INCREMENTAL: - case GF_CLI_STATS_INFO_CUMULATIVE: break; default: cli_out ("volume profile on %s has been %s ", @@ -4856,11 +4856,15 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, goto out; } - if (op < GF_CLI_STATS_INFO || GF_CLI_STATS_INFO_CUMULATIVE < op) { + if (GF_CLI_STATS_INFO != op) { ret = 0; goto out; } + ret = dict_get_int32 (dict, "info-op", (int32_t*)&info_op); + if (ret) + goto out; + ret = dict_get_int32 (dict, "count", &brick_count); if (ret) goto out; @@ -4880,6 +4884,7 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, } ret = dict_get_str_boolean (dict, "nfs", _gf_false); + if (ret) snprintf (str, sizeof (str), "NFS Server : %s", brick); else @@ -4888,15 +4893,25 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, memset (str, '-', strlen (str)); cli_out ("%s", str); - snprintf (key, sizeof (key), "%d-cumulative", i); - ret = dict_get_int32 (dict, key, &interval); - if (ret == 0) { - cmd_profile_volume_brick_out (dict, i, interval); - } - snprintf (key, sizeof (key), "%d-interval", i); - ret = dict_get_int32 (dict, key, &interval); - if (ret == 0) { - cmd_profile_volume_brick_out (dict, i, interval); + if (GF_CLI_INFO_CLEAR == info_op) { + snprintf (key, sizeof (key), "%d-stats-cleared", i); + ret = dict_get_int32 (dict, key, &stats_cleared); + if (ret) + goto out; + cli_out (stats_cleared ? "Cleared stats." : + "Failed to clear stats."); + } else { + snprintf (key, sizeof (key), "%d-cumulative", i); + ret = dict_get_int32 (dict, key, &interval); + if (ret == 0) + cmd_profile_volume_brick_out (dict, i, + interval); + + snprintf (key, sizeof (key), "%d-interval", i); + ret = dict_get_int32 (dict, key, &interval); + if (ret == 0) + cmd_profile_volume_brick_out (dict, i, + interval); } i++; } |