diff options
Diffstat (limited to 'cli/src/cli.h')
| -rw-r--r-- | cli/src/cli.h | 158 |
1 files changed, 129 insertions, 29 deletions
diff --git a/cli/src/cli.h b/cli/src/cli.h index 8080e42d6..8daa4b741 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -1,22 +1,12 @@ /* - Copyright (c) 2006-2011 Gluster, Inc. <http://www.gluster.com> + Copyright (c) 2006-2012 Red Hat, Inc. <http://www.redhat.com> This file is part of GlusterFS. - GlusterFS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 3 of the License, - or (at your option) any later version. - - GlusterFS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see - <http://www.gnu.org/licenses/>. + 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. */ - #ifndef __CLI_H__ #define __CLI_H__ @@ -28,12 +18,20 @@ #include "rpc-clnt.h" #include "glusterfs.h" #include "protocol-common.h" +#include "logging.h" + +#include "cli1-xdr.h" + +#if (HAVE_LIB_XML) +#include <libxml/encoding.h> +#include <libxml/xmlwriter.h> +#endif #define DEFAULT_EVENT_POOL_SIZE 16384 #define CLI_GLUSTERD_PORT 24007 #define CLI_DEFAULT_CONN_TIMEOUT 120 #define CLI_DEFAULT_CMD_TIMEOUT 120 -#define CLI_TOP_CMD_TIMEOUT 600 //Longer timeout for volume top +#define CLI_TEN_MINUTES_TIMEOUT 600 //Longer timeout for volume top #define DEFAULT_CLI_LOG_FILE_DIRECTORY DATADIR "/log/glusterfs" #define CLI_VOL_STATUS_BRICK_LEN 55 #define CLI_TAB_LENGTH 8 @@ -52,6 +50,10 @@ struct cli_cmd_word; struct cli_cmd_tree; struct cli_cmd; +extern char *cli_vol_type_str[]; +extern char *cli_vol_status_str[]; +extern char *cli_vol_task_status_str[]; + typedef int (cli_cmd_cbk_t)(struct cli_state *state, struct cli_cmd_word *word, const char **words, @@ -113,6 +115,8 @@ struct cli_state { char *log_file; gf_loglevel_t log_level; + + char *glusterd_sock; }; struct cli_local { @@ -122,6 +126,26 @@ struct cli_local { } get_vol; dict_t *dict; + const char **words; + /* Marker for volume status all */ + gf_boolean_t all; +#if (HAVE_LIB_XML) + xmlTextWriterPtr writer; + xmlDocPtr doc; + int vol_count; +#endif +}; + +struct gf_cli_gsync_detailed_status_ { + char *node; + char *master; + char *slave; + char *health; + char *uptime; + char *files_syncd; + char *files_pending; + char *bytes_pending; + char *deletes_pending; }; struct cli_volume_status { @@ -142,6 +166,13 @@ struct cli_volume_status { #endif }; +struct snap_config_opt_vals_ { + char *op_name; + char *question; +}; + +typedef struct gf_cli_gsync_detailed_status_ gf_cli_gsync_status_t; + typedef struct cli_volume_status cli_volume_status_t; typedef struct cli_local cli_local_t; @@ -164,10 +195,12 @@ int cli_cmd_process_line (struct cli_state *state, const char *line); int cli_rl_enable (struct cli_state *state); int cli_rl_out (struct cli_state *state, const char *fmt, va_list ap); +int cli_rl_err (struct cli_state *state, const char *fmt, va_list ap); int cli_usage_out (const char *usage); int _cli_out (const char *fmt, ...); +int _cli_err (const char *fmt, ...); #define cli_out(fmt...) do { \ FMT_WARN (fmt); \ @@ -176,6 +209,13 @@ int _cli_out (const char *fmt, ...); \ } while (0) +#define cli_err(fmt...) do { \ + FMT_WARN (fmt); \ + \ + _cli_err(fmt); \ + \ + } while (0) + int cli_submit_request (void *req, call_frame_t *frame, rpc_clnt_prog_t *prog, @@ -197,7 +237,7 @@ cli_cmd_quota_parse (const char **words, int wordcount, dict_t **opt); int32_t cli_cmd_volume_set_parse (const char **words, int wordcount, - dict_t **options); + dict_t **options, char **op_errstr); int32_t cli_cmd_volume_add_brick_parse (const char **words, int wordcount, @@ -240,9 +280,6 @@ int cli_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event, void *data); -int -cli_canonicalize_path (char *path); - int32_t cli_cmd_volume_profile_parse (const char **words, int wordcount, dict_t **options); @@ -263,6 +300,10 @@ cli_cmd_volume_heal_options_parse (const char **words, int wordcount, dict_t **options); int +cli_cmd_volume_defrag_parse (const char **words, int wordcount, + dict_t **options); + +int cli_print_brick_status (cli_volume_status_t *status); void @@ -274,27 +315,86 @@ cli_get_detail_status (dict_t *dict, int i, cli_volume_status_t *status); void cli_print_line (int len); -#if (HAVE_LIB_XML) int -cli_xml_output_str (char *op, char *str, int op_ret, int op_errno, char *op_errstr); +cli_xml_output_str (char *op, char *str, int op_ret, int op_errno, + char *op_errstr); int -cli_xml_output_dict (char *op, dict_t *dict, int op_ret, int op_errno, char *op_errstr); +cli_xml_output_dict (char *op, dict_t *dict, int op_ret, int op_errno, + char *op_errstr); int -cli_xml_output_vol_top (dict_t *dict, int op_ret, int op_errno, char *op_errstr); +cli_xml_output_vol_top (dict_t *dict, int op_ret, int op_errno, + char *op_errstr); int -cli_xml_output_vol_profile (dict_t *dict, int op_ret, int op_errno, char *op_errstr); +cli_xml_output_vol_profile (dict_t *dict, int op_ret, int op_errno, + char *op_errstr); int -cli_xml_output_vol_status (dict_t *dict, int op_ret, int op_errno, char *op_errstr); +cli_xml_output_vol_status_begin (cli_local_t *local, int op_ret, int op_errno, + char *op_errstr); int -cli_xml_output_vol_list (dict_t *dict, int op_ret, int op_errno, char *op_errstr); +cli_xml_output_vol_status_end (cli_local_t *local); int -cli_xml_output_vol_info (dict_t *dict, int op_ret, int op_errno, char *op_errstr); -#endif +cli_xml_output_vol_status (cli_local_t *local, dict_t *dict); + +int +cli_xml_output_vol_list (dict_t *dict, int op_ret, int op_errno, + char *op_errstr); + +int +cli_xml_output_vol_info_begin (cli_local_t *local, int op_ret, int op_errno, + char *op_errstr); + +int +cli_xml_output_vol_info_end (cli_local_t *local); + +int +cli_xml_output_vol_info (cli_local_t *local, dict_t *dict); + +int +cli_xml_output_vol_quota_limit_list (char *volname, char *limit_list, + int op_ret, int op_errno, + char *op_errstr); + +int +cli_xml_output_peer_status (dict_t *dict, int op_ret, int op_errno, + char *op_errstr); + +int +cli_xml_output_vol_rebalance (gf_cli_defrag_type op, dict_t *dict, int op_ret, + int op_errno, char *op_errstr); + +int +cli_xml_output_vol_remove_brick (gf_boolean_t status_op, dict_t *dict, + int op_ret, int op_errno, char *op_errstr); + +int +cli_xml_output_vol_replace_brick (gf1_cli_replace_op op, dict_t *dict, + int op_ret, int op_errno, char *op_errstr); + +int +cli_xml_output_vol_create (dict_t *dict, int op_ret, int op_errno, + char *op_errstr); + +int +cli_xml_output_generic_volume (char *op, dict_t *dict, int op_ret, int op_errno, + char *op_errstr); + +int +cli_xml_output_vol_gsync (dict_t *dict, int op_ret, int op_errno, + char *op_errstr); +int +cli_xml_output_vol_status_tasks_detail (cli_local_t *local, dict_t *dict); + +char * +is_server_debug_xlator (void *myframe); + +int32_t +cli_cmd_snapshot_parse (const char **words, int wordcount, dict_t **options, + struct cli_state *state); #endif /* __CLI_H__ */ |
