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; +} + |