diff options
| author | Krutika Dhananjay <kdhananj@redhat.com> | 2013-02-12 17:26:35 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2013-11-26 21:39:16 -0800 | 
| commit | 5b91bef50d834e597f8c62b83419f26d146e631f (patch) | |
| tree | 64772c0f7dae11d1b3e5045ec4b817ccd496d5f0 /cli/src/cli-cmd-parser.c | |
| parent | f73373f1244829d65d001fa3af8fdade192418c9 (diff) | |
glusterd: changes in 'volume create' behaviour
        Backport of http://review.gluster.org/4740
Note: This patch is needed by oVirt's Gluster Integration Project
BUG: 948729
Change-Id: I7a9d7c36b7e15269f95637cd9061abac6f8a97de
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/6355
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 8725b79f6f7..0533b96c3a8 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -174,6 +174,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); @@ -350,7 +352,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; @@ -421,6 +428,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: @@ -909,6 +920,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); @@ -986,7 +999,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; @@ -1000,6 +1019,10 @@ parse_bricks:          if (ret)                  goto out; +        ret = dict_set_int32 (dict, "force", is_force); +        if (ret) +                goto out; +          *options = dict;  out: @@ -1202,6 +1225,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); @@ -1299,12 +1323,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;                  }          } @@ -1318,6 +1347,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; | 
