summaryrefslogtreecommitdiffstats
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/src/Makefile.am2
-rw-r--r--cli/src/cli-cmd-global.c131
-rw-r--r--cli/src/cli-cmd-misc.c3
-rw-r--r--cli/src/cli-cmd-parser.c12
-rw-r--r--cli/src/cli-cmd-volume.c52
-rw-r--r--cli/src/cli-cmd.c6
-rw-r--r--cli/src/cli-cmd.h2
7 files changed, 147 insertions, 61 deletions
diff --git a/cli/src/Makefile.am b/cli/src/Makefile.am
index db1d089b8f9..92cf35a581c 100644
--- a/cli/src/Makefile.am
+++ b/cli/src/Makefile.am
@@ -1,6 +1,6 @@
sbin_PROGRAMS = gluster
-gluster_SOURCES = cli.c registry.c input.c cli-cmd.c cli-rl.c \
+gluster_SOURCES = cli.c registry.c input.c cli-cmd.c cli-rl.c cli-cmd-global.c \
cli-cmd-volume.c cli-cmd-peer.c cli-rpc-ops.c cli-cmd-parser.c\
cli-cmd-system.c cli-cmd-misc.c cli-xml-output.c cli-quotad-client.c cli-cmd-snapshot.c
diff --git a/cli/src/cli-cmd-global.c b/cli/src/cli-cmd-global.c
new file mode 100644
index 00000000000..9b71821b00c
--- /dev/null
+++ b/cli/src/cli-cmd-global.c
@@ -0,0 +1,131 @@
+/*
+ Copyright (c) 2015 Red Hat, Inc. <http://www.redhat.com>
+ This file is part of GlusterFS.
+
+ This file is licensed to you under your choice of the GNU Lesser
+ General Public License, version 3 or any later version (LGPLv3 or
+ later), or the GNU General Public License, version 2 (GPLv2), in all
+ cases as published by the Free Software Foundation.
+*/
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <pthread.h>
+
+#include <sys/socket.h>
+#include <netdb.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+
+#ifndef _CONFIG_H
+#define _CONFIG_H
+#include "config.h"
+#endif
+
+#include "cli.h"
+#include "cli-cmd.h"
+#include "cli-mem-types.h"
+#include "cli1-xdr.h"
+#include "run.h"
+#include "syscall.h"
+#include "common-utils.h"
+
+extern rpc_clnt_prog_t *cli_rpc_prog;
+
+int
+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);
+
+
+struct cli_cmd global_cmds[] = {
+ { "global help",
+ cli_cmd_global_help_cbk,
+ "list global commands",
+ },
+ { "nfs-ganesha {enable| disable} ",
+ cli_cmd_ganesha_cbk,
+ "Enable/disable NFS-Ganesha support",
+ },
+ {NULL, NULL, NULL}
+};
+
+int
+cli_cmd_global_help_cbk (struct cli_state *state, struct cli_cmd_word *in_word,
+ const char **words, int wordcount)
+{
+ struct cli_cmd *cmd = NULL;
+
+ for (cmd = global_cmds; cmd->pattern; cmd++)
+ if (_gf_false == cmd->disable)
+ cli_out ("%s - %s", cmd->pattern, cmd->desc);
+
+ return 0;
+}
+
+int
+cli_cmd_global_register (struct cli_state *state)
+{
+ int ret = 0;
+ struct cli_cmd *cmd = NULL;
+ for (cmd = global_cmds; cmd->pattern; cmd++) {
+ ret = cli_cmd_register (&state->tree, cmd);
+ if (ret)
+ goto out;
+ }
+out:
+ return ret;
+
+}
+
+int cli_cmd_ganesha_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;
+
+ proc = &cli_rpc_prog->proctable[GLUSTER_CLI_GANESHA];
+
+ frame = create_frame (THIS, THIS->ctx->pool);
+ if (!frame)
+ goto out;
+
+ ret = cli_cmd_ganesha_parse (state, words, wordcount,
+ &options, &op_errstr);
+ if (ret) {
+ if (op_errstr) {
+ cli_err ("%s", op_errstr);
+ GF_FREE (op_errstr);
+ } else
+ cli_usage_out (word->pattern);
+ parse_error = 1;
+ goto out;
+ }
+
+ CLI_LOCAL_INIT (local, words, frame, options);
+
+ 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 ("Setting global option failed");
+ }
+
+ CLI_STACK_DESTROY (frame);
+ return ret;
+}
+
diff --git a/cli/src/cli-cmd-misc.c b/cli/src/cli-cmd-misc.c
index 566d7c978d9..ccfeb6d87f1 100644
--- a/cli/src/cli-cmd-misc.c
+++ b/cli/src/cli-cmd-misc.c
@@ -33,6 +33,7 @@ extern struct cli_cmd cli_log_cmds[];
extern struct cli_cmd cli_system_cmds[];
extern struct cli_cmd cli_bd_cmds[];
extern struct cli_cmd snapshot_cmds[];
+extern struct cli_cmd global_cmds[];
struct cli_cmd cli_misc_cmds[];
int
@@ -48,7 +49,7 @@ cli_cmd_display_help (struct cli_state *state, struct cli_cmd_word *in_word,
{
struct cli_cmd *cmd[] = {volume_cmds, cli_probe_cmds,
cli_misc_cmds, snapshot_cmds,
- NULL};
+ global_cmds, NULL};
struct cli_cmd *cmd_ind = NULL;
int i = 0;
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c
index bb0af2fc383..b30306b2584 100644
--- a/cli/src/cli-cmd-parser.c
+++ b/cli/src/cli-cmd-parser.c
@@ -819,7 +819,7 @@ out:
}
/* Parsing global option for NFS-Ganesha config
- * gluster features.ganesha enable/disable */
+ * gluster nfs-ganesha enable/disable */
int32_t
cli_cmd_ganesha_parse (struct cli_state *state,
@@ -833,7 +833,7 @@ cli_cmd_ganesha_parse (struct cli_state *state,
char *value = NULL;
int i = 0;
char *w = NULL;
- char *opwords[] = { "enable", "disable" };
+ char *opwords[] = { "enable", "disable", NULL };
const char *question = NULL;
gf_answer_t answer = GF_ANSWER_NO;
@@ -853,7 +853,7 @@ cli_cmd_ganesha_parse (struct cli_state *state,
value = (char *) words[1];
if (!key || !value) {
- cli_out ("Usage : features.ganesha <enable/disable>");
+ cli_out ("Usage : nfs-ganesha <enable/disable>");
ret = -1;
goto out;
}
@@ -862,7 +862,7 @@ cli_cmd_ganesha_parse (struct cli_state *state,
if (ret == -1)
goto out;
- if (strcmp (key, "features.ganesha")) {
+ if (strcmp (key, "nfs-ganesha")) {
gf_asprintf (op_errstr, "Global option: error: ' %s '"
"is not a valid global option.", key);
ret = -1;
@@ -872,13 +872,13 @@ cli_cmd_ganesha_parse (struct cli_state *state,
w = str_getunamb (value, opwords);
if (!w) {
cli_out ("Invalid global option \n"
- "Usage : features.ganesha <enable/disable>");
+ "Usage : nfs-ganesha <enable/disable>");
ret = -1;
goto out;
}
question = "Enabling NFS-Ganesha requires Gluster-NFS to be"
- "disabled across the trusted pool. Do you "
+ " disabled across the trusted pool. Do you "
"still want to continue?";
if (strcmp (value, "enable") == 0) {
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c
index 30df22ff199..b5d5920bebc 100644
--- a/cli/src/cli-cmd-volume.c
+++ b/cli/src/cli-cmd-volume.c
@@ -1372,54 +1372,6 @@ out:
return ret;
}
-int cli_cmd_ganesha_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;
-
- proc = &cli_rpc_prog->proctable[GLUSTER_CLI_GANESHA];
-
- frame = create_frame (THIS, THIS->ctx->pool);
- if (!frame)
- goto out;
-
- ret = cli_cmd_ganesha_parse (state, words, wordcount,
- &options, &op_errstr);
- if (ret) {
- if (op_errstr) {
- cli_err ("%s", op_errstr);
- GF_FREE (op_errstr);
- } else
- cli_usage_out (word->pattern);
- parse_error = 1;
- goto out;
- }
-
- CLI_LOCAL_INIT (local, words, frame, options);
-
- 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 ("Setting global option failed");
- }
-
- CLI_STACK_DESTROY (frame);
- return ret;
-}
-
int
cli_cmd_bitrot_cbk (struct cli_state *state, struct cli_cmd_word *word,
const char **words, int wordcount)
@@ -2625,10 +2577,6 @@ struct cli_cmd volume_cmds[] = {
cli_cmd_quota_cbk,
"quota translator specific operations"},
- { "features.ganesha { enable| disable } ",
- cli_cmd_ganesha_cbk,
- "global ganesha operations" },
-
{ "volume top <VOLNAME> {open|read|write|opendir|readdir|clear} [nfs|brick <brick>] [list-cnt <value>] |\n"
"volume top <VOLNAME> {read-perf|write-perf} [bs <size> count <count>] [brick <brick>] [list-cnt <value>]",
cli_cmd_volume_top_cbk,
diff --git a/cli/src/cli-cmd.c b/cli/src/cli-cmd.c
index cc9072246d3..5ea1edc9cac 100644
--- a/cli/src/cli-cmd.c
+++ b/cli/src/cli-cmd.c
@@ -234,6 +234,9 @@ cli_cmds_register (struct cli_state *state)
ret = cli_cmd_snapshot_register (state);
if (ret)
goto out;
+ ret = cli_cmd_global_register (state);
+ if (ret)
+ goto out;
out:
return ret;
}
@@ -371,7 +374,8 @@ cli_cmd_submit (struct rpc_clnt* rpc, void *req, call_frame_t *frame,
unsigned timeout = 0;
if ((GLUSTER_CLI_PROFILE_VOLUME == procnum) ||
- (GLUSTER_CLI_HEAL_VOLUME == procnum))
+ (GLUSTER_CLI_HEAL_VOLUME == procnum) ||
+ (GLUSTER_CLI_GANESHA == procnum))
timeout = CLI_TEN_MINUTES_TIMEOUT;
else
timeout = CLI_DEFAULT_CMD_TIMEOUT;
diff --git a/cli/src/cli-cmd.h b/cli/src/cli-cmd.h
index cf036928ddf..d39c8b38f7f 100644
--- a/cli/src/cli-cmd.h
+++ b/cli/src/cli-cmd.h
@@ -84,6 +84,8 @@ int cli_cmd_system_register (struct cli_state *state);
int cli_cmd_snapshot_register (struct cli_state *state);
+int cli_cmd_global_register (struct cli_state *state);
+
int cli_cmd_misc_register (struct cli_state *state);
struct cli_cmd_word *cli_cmd_nextword (struct cli_cmd_word *word,