From 539bbfad68939601c8666d16d7bc51e89321ebef Mon Sep 17 00:00:00 2001 From: Gaurav Kumar Garg Date: Wed, 15 Apr 2015 12:32:11 +0530 Subject: cli: validate brick while creating replicate volume When user create replicate volume by typing incomplete command "gluster volume create replica replica_count" then cli is crashing. Fix is to validate command properly. If user have not given any brick then it should return proper cli command usage error message. Change-Id: I3d4096a144e20f21ab956049af1dae196217a807 BUG: 1211576 Signed-off-by: Gaurav Kumar Garg Reviewed-on: http://review.gluster.org/10245 Tested-by: Gluster Build System Reviewed-by: Atin Mukherjee Reviewed-by: Ravishankar N Tested-by: NetBSD Build System Reviewed-by: Kaushal M Tested-by: Kaushal M (cherry picked from commit ec6ccda3783e9a3edd5a2e4093e07ee37f266520) Reviewed-on: http://review.gluster.org/10462 Reviewed-by: Krishnan Parthasarathi Reviewed-by: Vijay Bellur --- cli/src/cli-cmd-parser.c | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'cli') diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index e9c8dfa352c..8f61e9634e7 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -533,24 +533,28 @@ cli_cmd_volume_create_parse (struct cli_state *state, const char **words, goto out; index += 2; - if (!strcmp (words[index], "arbiter")) { - ret = gf_string2int (words[index+1], - &arbiter_count); - if (ret == -1 || arbiter_count != 1 || - replica_count != 3) { - cli_err ("For arbiter configuration, " - "replica count must be 3 and " - "arbiter count must be 1. " - "The 3rd brick of the replica " - "will be the arbiter."); - ret = -1; - goto out; + if (words[index]) { + if (!strcmp (words[index], "arbiter")) { + ret = gf_string2int (words[index+1], + &arbiter_count); + if (ret == -1 || arbiter_count != 1 || + replica_count != 3) { + cli_err ("For arbiter " + "configuration, " + "replica count must be" + " 3 and arbiter count " + "must be 1. The 3rd " + "brick of the replica " + "will be the arbiter"); + ret = -1; + goto out; + } + ret = dict_set_int32 (dict, "arbiter-count", + arbiter_count); + if (ret) + goto out; + index += 2; } - ret = dict_set_int32 (dict, "arbiter-count", - arbiter_count); - if (ret) - goto out; - index += 2; } } else if ((strcmp (w, "stripe")) == 0) { -- cgit