diff options
| author | Krutika Dhananjay <kdhananj@redhat.com> | 2013-02-12 17:26:35 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2013-04-09 17:39:30 -0700 | 
| commit | c9800f0986a10bbde9121239590e3cb25b94c5f8 (patch) | |
| tree | ee6045c86cae871472131c96fef90003e395575f /cli/src/cli-cmd-parser.c | |
| parent | f364d542aaf272c14b1d6ef7c9ac805db0fdb45c (diff) | |
glusterd: changes in 'volume create' behaviour
This patch incorporates all the changes suggested on the behaviour of
'volume create' command in http://review.gluster.org/#change,4214
(comment #14, to be precise).
Change-Id: Iaac524a59738b177415595b18aa8a136090d3d25
BUG: 948729
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/4740
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'cli/src/cli-cmd-parser.c')
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 40 | 
1 files changed, 36 insertions, 4 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index c09aa6260fa..484c4a34b47 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -175,6 +175,8 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options  #ifdef HAVE_BD_XLATOR          char     *dev_type = NULL;  #endif +        gf_boolean_t is_force = _gf_false; +        int wc = wordcount;          GF_ASSERT (words);          GF_ASSERT (options); @@ -351,7 +353,12 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options          brick_index = index; -        ret = cli_cmd_bricks_parse (words, wordcount, brick_index, &bricks, +        if (strcmp (words[wordcount - 1], "force") == 0) { +                is_force = _gf_true; +                wc = wordcount - 1; +        } + +        ret = cli_cmd_bricks_parse (words, wc, brick_index, &bricks,                                      &brick_count);          if (ret)                  goto out; @@ -422,6 +429,10 @@ cli_cmd_volume_create_parse (const char **words, int wordcount, dict_t **options          if (ret)                  goto out; +        ret = dict_set_int32 (dict, "force", is_force); +        if (ret) +                goto out; +          *options = dict;  out: @@ -910,6 +921,8 @@ cli_cmd_volume_add_brick_parse (const char **words, int wordcount,          int     count = 1;          char    *w = NULL;          int     index; +        gf_boolean_t is_force = _gf_false; +        int wc = wordcount;          GF_ASSERT (words);          GF_ASSERT (options); @@ -987,7 +1000,13 @@ cli_cmd_volume_add_brick_parse (const char **words, int wordcount,          brick_index = index;  parse_bricks: -        ret = cli_cmd_bricks_parse (words, wordcount, brick_index, &bricks, + +        if (strcmp (words[wordcount - 1], "force") == 0) { +                is_force = _gf_true; +                wc = wordcount - 1; +        } + +        ret = cli_cmd_bricks_parse (words, wc, brick_index, &bricks,                                      &brick_count);          if (ret)                  goto out; @@ -1001,6 +1020,10 @@ parse_bricks:          if (ret)                  goto out; +        ret = dict_set_int32 (dict, "force", is_force); +        if (ret) +                goto out; +          *options = dict;  out: @@ -1203,6 +1226,7 @@ cli_cmd_volume_replace_brick_parse (const char **words, int wordcount,          char    *opwords[] = { "start", "commit", "pause", "abort", "status",                                  NULL };          char    *w = NULL; +        gf_boolean_t is_force = _gf_false;          GF_ASSERT (words);          GF_ASSERT (options); @@ -1300,12 +1324,17 @@ cli_cmd_volume_replace_brick_parse (const char **words, int wordcount,          }          if (wordcount == (op_index + 1)) { -                if (replace_op != GF_REPLACE_OP_COMMIT) { +                if ((replace_op != GF_REPLACE_OP_COMMIT) && +                    (replace_op != GF_REPLACE_OP_START)) {                          ret = -1;                          goto out;                  }                  if (!strcmp ("force", words[op_index])) { -                        replace_op = GF_REPLACE_OP_COMMIT_FORCE; +                        if (replace_op == GF_REPLACE_OP_COMMIT) +                                replace_op = GF_REPLACE_OP_COMMIT_FORCE; + +                        else if (replace_op == GF_REPLACE_OP_START) +                                is_force = _gf_true;                  }          } @@ -1319,6 +1348,9 @@ cli_cmd_volume_replace_brick_parse (const char **words, int wordcount,          if (ret)                  goto out; +        ret = dict_set_int32 (dict, "force", is_force); +        if (ret) +                goto out;          *options = dict;  | 
