diff options
| author | Junaid <junaid@gluster.com> | 2011-05-30 09:18:23 +0000 | 
|---|---|---|
| committer | Anand Avati <avati@gluster.com> | 2011-06-13 22:38:54 -0700 | 
| commit | 1b8376013d2358a50bd7487e1abaa377d51ec4e6 (patch) | |
| tree | bc3fa3d5b200bf159d1cc06ed172b945b50593fc /cli/src | |
| parent | f87ec977c2c6bf8c562c11ad72069648beb6d8cd (diff) | |
cli: Display a warning upon disabling quota.
Signed-off-by: Junaid <junaid@gluster.com>
Signed-off-by: Anand Avati <avati@gluster.com>
BUG: 2912 (Display warning upon disable quota)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2912
Diffstat (limited to 'cli/src')
| -rw-r--r-- | cli/src/cli-cmd-parser.c | 50 | ||||
| -rw-r--r-- | cli/src/cli-cmd-volume.c | 11 | 
2 files changed, 35 insertions, 26 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index d18336e7e28..1ef8e4e3bea 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -408,7 +408,6 @@ cli_cmd_quota_parse (const char **words, int wordcount, dict_t **options)          GF_ASSERT (options);          dict = dict_new (); -          if (!dict)                  goto out; @@ -416,7 +415,6 @@ cli_cmd_quota_parse (const char **words, int wordcount, dict_t **options)                  goto out;          volname = (char *)words[2]; -          if (!volname) {                  ret = -1;                  goto out; @@ -444,7 +442,7 @@ cli_cmd_quota_parse (const char **words, int wordcount, dict_t **options)          }          ret = dict_set_str (dict, "volname", volname); -        if (ret) +        if (ret < 0)                  goto out;          w = str_getunamb (words[3], opwords); @@ -455,11 +453,13 @@ cli_cmd_quota_parse (const char **words, int wordcount, dict_t **options)          if ((strcmp (w, "enable")) == 0 && wordcount == 4) {                  type = GF_QUOTA_OPTION_TYPE_ENABLE; +                ret = 0;                  goto set_type;          }          if (strcmp (w, "disable") == 0 && wordcount == 4) {                  type = GF_QUOTA_OPTION_TYPE_DISABLE; +                ret = 0;                  goto set_type;          } @@ -493,7 +493,7 @@ cli_cmd_quota_parse (const char **words, int wordcount, dict_t **options)                  }                  ret = dict_set_str (dict, "limit", (char *) words[5]); -                if (ret) +                if (ret < 0)                          goto out;                  goto set_type; @@ -513,49 +513,49 @@ cli_cmd_quota_parse (const char **words, int wordcount, dict_t **options)                  }                  ret = dict_set_str (dict, "path", (char *) words[4]); -                if (ret) +                if (ret < 0)                          goto out;                  goto set_type;          }          if (strcmp (w, "list") == 0) { -                        if (wordcount < 4) { -                                ret = -1; -                                goto out; -                        } - -                        type = GF_QUOTA_OPTION_TYPE_LIST; +                if (wordcount < 4) { +                        ret = -1; +                        goto out; +                } -                        i = 4; -                        while (i < wordcount) { -                                snprintf (key, 20, "path%d", i-4); +                type = GF_QUOTA_OPTION_TYPE_LIST; -                                ret = dict_set_str (dict, key, (char *) words [i++]); -                                if (ret < 0) -                                        goto out; -                        } +                i = 4; +                while (i < wordcount) { +                        snprintf (key, 20, "path%d", i-4); -                        ret = dict_set_int32 (dict, "count", i - 4); +                        ret = dict_set_str (dict, key, (char *) words [i++]);                          if (ret < 0)                                  goto out; +                } + +                ret = dict_set_int32 (dict, "count", i - 4); +                if (ret < 0) +                        goto out; -                        goto set_type; +                goto set_type;          }          if (strcmp (w, "version") == 0) {                  type = GF_QUOTA_OPTION_TYPE_VERSION; - -        } else +        } else {                  GF_ASSERT (!"opword mismatch"); +        }  set_type:          ret = dict_set_int32 (dict, "type", type); - -        if (ret) +        if (ret < 0)                  goto out; +          *options = dict;  out: -        if (ret) { +        if (ret < 0) {                  if (dict)                          dict_destroy (dict);          } diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 467623f7320..68ac79878db 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -725,9 +725,13 @@ cli_cmd_quota_cbk (struct cli_state *state, struct cli_cmd_word *word,          int                      ret       = 0;          int                      parse_err = 0; +        int32_t                  type      = 0;          rpc_clnt_procedure_t    *proc      = NULL;          call_frame_t            *frame     = NULL;          dict_t                  *options   = NULL; +        gf_answer_t              answer    = GF_ANSWER_NO; +        const char *question = "Disabling quota will delete all the quota " +                               "configuration. Do you want to continue?";          proc = &cli_rpc_prog->proctable[GLUSTER_CLI_QUOTA];          if (proc == NULL) { @@ -742,10 +746,15 @@ cli_cmd_quota_cbk (struct cli_state *state, struct cli_cmd_word *word,          }          ret = cli_cmd_quota_parse (words, wordcount, &options); -        if (ret) { +        if (ret < 0) {                  cli_usage_out (word->pattern);                  parse_err = 1;                  goto out; +        } else if (dict_get_int32 (options, "type", &type) == 0 && +                   type == GF_QUOTA_OPTION_TYPE_DISABLE) { +                answer = cli_cmd_get_confirmation (state, question); +                if (answer == GF_ANSWER_NO) +                        goto out;          }          if (proc->fn)  | 
