diff options
| author | Gaurav Kumar Garg <ggarg@redhat.com> | 2015-04-15 12:32:11 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2015-05-01 00:19:14 -0700 | 
| commit | 539bbfad68939601c8666d16d7bc51e89321ebef (patch) | |
| tree | df7432c3ee558b91ce89639f3fd1c7edd5f6bc14 | |
| parent | 7aeae002277ccf58cd6fd26750d83d2f344ee953 (diff) | |
cli: validate brick while creating replicate volume
When user create replicate volume by typing incomplete command
"gluster volume create <VOLNAME> 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 <ggarg@redhat.com>
Reviewed-on: http://review.gluster.org/10245
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-by: Ravishankar N <ravishankar@redhat.com>
Tested-by: NetBSD Build System
Reviewed-by: Kaushal M <kaushal@redhat.com>
Tested-by: Kaushal M <kaushal@redhat.com>
(cherry picked from commit ec6ccda3783e9a3edd5a2e4093e07ee37f266520)
Reviewed-on: http://review.gluster.org/10462
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 38 | 
1 files changed, 21 insertions, 17 deletions
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) {  | 
