summaryrefslogtreecommitdiffstats
path: root/cli/src
diff options
context:
space:
mode:
authorAtin Mukherjee <amukherj@redhat.com>2016-07-01 11:47:48 +0530
committerAtin Mukherjee <amukherj@redhat.com>2016-07-08 10:18:05 -0700
commitbe03507d5224cf44c0e8ca4120c02ce409f5b08c (patch)
tree321f4171acd2443d61bafe59a729d62399d34943 /cli/src
parent754e2658ba58743bc4ef2d843410334e639a96e1 (diff)
cli: print volume status client output for partial bricks
Backport of http://review.gluster.org/14842 In cli the response dictionary is parsed assuming all the bricks to be up. If in a given cluster one of the node is down client details for the bricks hosted by the same node are not available in the dictionary resulting into a blank output for 'gluster volume status <volname> clients' Fix is to ignore the ret value for dict_get for those keys. Change-Id: If4fb65b8807ea3ac71b3ed1a754ea75f599e3613 BUG: 1352926 Signed-off-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-on: http://review.gluster.org/14842 Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Jeff Darcy <jdarcy@redhat.com> Reviewed-on: http://review.gluster.org/14865 Reviewed-by: Kaushal M <kaushal@redhat.com>
Diffstat (limited to 'cli/src')
-rw-r--r--cli/src/cli-rpc-ops.c37
1 files changed, 17 insertions, 20 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index 4adf34fd608..d5d98542203 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -6952,29 +6952,33 @@ cli_print_volume_status_clients (dict_t *dict, gf_boolean_t notbrick)
index_max = brick_index_max + other_count;
for (i = 0; i <= index_max; i++) {
+ hostname = NULL;
+ path = NULL;
+ online = -1;
+ client_count = 0;
+ clientname = NULL;
+ bytesread = 0;
+ byteswrite = 0;
+
cli_out ("----------------------------------------------");
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.hostname", i);
ret = dict_get_str (dict, key, &hostname);
- if (ret)
- goto out;
+
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.path", i);
ret = dict_get_str (dict, key, &path);
- if (ret)
- goto out;
-
- if (notbrick)
- cli_out ("%s : %s", hostname, path);
- else
- cli_out ("Brick : %s:%s", hostname, path);
+ if (hostname && path) {
+ if (notbrick)
+ cli_out ("%s : %s", hostname, path);
+ else
+ cli_out ("Brick : %s:%s", hostname, path);
+ }
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.status", i);
ret = dict_get_int32 (dict, key, &online);
- if (ret)
- goto out;
if (!online) {
if (notbrick)
cli_out ("%s is offline", hostname);
@@ -6986,10 +6990,9 @@ cli_print_volume_status_clients (dict_t *dict, gf_boolean_t notbrick)
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "brick%d.clientcount", i);
ret = dict_get_int32 (dict, key, &client_count);
- if (ret)
- goto out;
- cli_out ("Clients connected : %d", client_count);
+ if (hostname && path)
+ cli_out ("Clients connected : %d", client_count);
if (client_count == 0)
continue;
@@ -7002,22 +7005,16 @@ cli_print_volume_status_clients (dict_t *dict, gf_boolean_t notbrick)
snprintf (key, sizeof (key),
"brick%d.client%d.hostname", i, j);
ret = dict_get_str (dict, key, &clientname);
- if (ret)
- goto out;
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key),
"brick%d.client%d.bytesread", i, j);
ret = dict_get_uint64 (dict, key, &bytesread);
- if (ret)
- goto out;
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key),
"brick%d.client%d.byteswrite", i, j);
ret = dict_get_uint64 (dict, key, &byteswrite);
- if (ret)
- goto out;
cli_out ("%-48s %15"PRIu64" %15"PRIu64,
clientname, bytesread, byteswrite);