diff options
Diffstat (limited to 'cli/src/cli-cmd-global.c')
| -rw-r--r-- | cli/src/cli-cmd-global.c | 57 | 
1 files changed, 56 insertions, 1 deletions
diff --git a/cli/src/cli-cmd-global.c b/cli/src/cli-cmd-global.c index 53ee0ab2517..f4544da367c 100644 --- a/cli/src/cli-cmd-global.c +++ b/cli/src/cli-cmd-global.c @@ -34,7 +34,9 @@ cli_cmd_global_help_cbk (struct cli_state *state, struct cli_cmd_word *in_word,                           const char **words, int wordcount);  int cli_cmd_ganesha_cbk (struct cli_state *state, struct cli_cmd_word *word,                                           const char **words, int wordcount); - +int +cli_cmd_get_state_cbk (struct cli_state *state, struct cli_cmd_word *word, +                              const char **words, int wordcount);  struct cli_cmd global_cmds[] = {          { "global help", @@ -45,6 +47,10 @@ struct cli_cmd global_cmds[] = {             cli_cmd_ganesha_cbk,            "Enable/disable NFS-Ganesha support",          }, +        { "get-state [<daemon>] [odir </path/to/output/dir/>] [file <filename>]", +          cli_cmd_get_state_cbk, +          "Get local state representation of mentioned daemon", +        },          {NULL,  NULL,  NULL}  }; @@ -133,3 +139,52 @@ out:          return ret;  } +int +cli_cmd_get_state_cbk (struct cli_state *state, struct cli_cmd_word *word, +                       const char **words, int wordcount) +{ +        int                     sent        =   0; +        int                     parse_error =   0; +        int                     ret         =  -1; +        rpc_clnt_procedure_t    *proc       =  NULL; +        call_frame_t            *frame      =  NULL; +        dict_t                  *options    =  NULL; +        cli_local_t             *local      =  NULL; +        char                    *op_errstr  =  NULL; + +        frame = create_frame (THIS, THIS->ctx->pool); +        if (!frame) +                goto out; + +        ret = cli_cmd_get_state_parse (state, words, wordcount, &options, +                                       &op_errstr); + +        if (ret) { +                if (op_errstr) { +                        cli_err ("%s", op_errstr); +                        cli_usage_out (word->pattern); +                        GF_FREE (op_errstr); +                } else +                        cli_usage_out (word->pattern); + +                parse_error = 1; +                goto out; +        } + +        CLI_LOCAL_INIT (local, words, frame, options); + +        proc = &cli_rpc_prog->proctable[GLUSTER_CLI_GET_STATE]; +        if (proc->fn) +                ret = proc->fn (frame, THIS, options); +out: +        if (ret) { +                cli_cmd_sent_status_get (&sent); +                if ((sent == 0) && (parse_error == 0)) +                        cli_out ("Getting daemon state failed"); +        } + +        CLI_STACK_DESTROY (frame); + +        return ret; +} +  | 
