From 169c73f28dae61236de54889edcaa8236d91da59 Mon Sep 17 00:00:00 2001 From: Rajesh Amaravathi Date: Wed, 7 Dec 2011 20:51:03 +0530 Subject: cli: volume status enhancement * Support "gluster volume status (all)" option to display all volumes' status. * On option "detail" appended to "gluster volume status *", amount of storage free, total storage, and backend filesystem details like inode size, inode count, free inodes, fs type, device name of each brick is displayed. * One can also obtain [detailed]status of only one brick. * Format of the enhanced volume status command is: "gluster volume status [all|] [] [detail]" * Some generic functions have been added to common-utils: skipword get_nth_word These functions enable parsing and fetching of words in a sentence. glusterd_get_brick_root (in glusterd) These are self explanatory. Change-Id: I6f40c1e19810f8504cd3b1786207364053d82e28 BUG: 765464 Signed-off-by: Rajesh Amaravathi Reviewed-on: http://review.gluster.com/777 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi --- rpc/xdr/src/cli1-xdr.c | 11 +++++++++++ rpc/xdr/src/cli1-xdr.h | 14 ++++++++++++++ rpc/xdr/src/cli1-xdr.x | 13 +++++++++++++ 3 files changed, 38 insertions(+) (limited to 'rpc/xdr/src') diff --git a/rpc/xdr/src/cli1-xdr.c b/rpc/xdr/src/cli1-xdr.c index b0ac0799a8d..56562ee3d00 100644 --- a/rpc/xdr/src/cli1-xdr.c +++ b/rpc/xdr/src/cli1-xdr.c @@ -176,6 +176,17 @@ xdr_gf1_cli_top_op (XDR *xdrs, gf1_cli_top_op *objp) return TRUE; } +bool_t +xdr_gf_cli_status_type (XDR *xdrs, gf_cli_status_type *objp) +{ + register int32_t *buf; + buf = NULL; + + if (!xdr_enum (xdrs, (enum_t *) objp)) + return FALSE; + return TRUE; +} + bool_t xdr_gf_cli_req (XDR *xdrs, gf_cli_req *objp) { diff --git a/rpc/xdr/src/cli1-xdr.h b/rpc/xdr/src/cli1-xdr.h index 1d0faa996b5..d5593977d97 100644 --- a/rpc/xdr/src/cli1-xdr.h +++ b/rpc/xdr/src/cli1-xdr.h @@ -160,6 +160,18 @@ enum gf1_cli_top_op { }; typedef enum gf1_cli_top_op gf1_cli_top_op; +enum gf_cli_status_type { + GF_CLI_STATUS_NONE = 0x0000, + GF_CLI_STATUS_VOL = 0x0100, + GF_CLI_STATUS_ALL = 0x0200, + GF_CLI_STATUS_BRICK = 0x0400, + GF_CLI_STATUS_DETAIL = 0x0800, + GF_CLI_STATUS_VOL_DETAIL = 0x0900, + GF_CLI_STATUS_ALL_DETAIL = 0x0A00, + GF_CLI_STATUS_BRICK_DETAIL = 0x0C00, +}; +typedef enum gf_cli_status_type gf_cli_status_type; + struct gf_cli_req { struct { u_int dict_len; @@ -298,6 +310,7 @@ extern bool_t xdr_gf1_cli_op_flags (XDR *, gf1_cli_op_flags*); extern bool_t xdr_gf1_cli_gsync_set (XDR *, gf1_cli_gsync_set*); extern bool_t xdr_gf1_cli_stats_op (XDR *, gf1_cli_stats_op*); extern bool_t xdr_gf1_cli_top_op (XDR *, gf1_cli_top_op*); +extern bool_t xdr_gf_cli_status_type (XDR *, gf_cli_status_type*); extern bool_t xdr_gf_cli_req (XDR *, gf_cli_req*); extern bool_t xdr_gf_cli_rsp (XDR *, gf_cli_rsp*); extern bool_t xdr_gf1_cli_probe_req (XDR *, gf1_cli_probe_req*); @@ -329,6 +342,7 @@ extern bool_t xdr_gf1_cli_op_flags (); extern bool_t xdr_gf1_cli_gsync_set (); extern bool_t xdr_gf1_cli_stats_op (); extern bool_t xdr_gf1_cli_top_op (); +extern bool_t xdr_gf_cli_status_type (); extern bool_t xdr_gf_cli_req (); extern bool_t xdr_gf_cli_rsp (); extern bool_t xdr_gf1_cli_probe_req (); diff --git a/rpc/xdr/src/cli1-xdr.x b/rpc/xdr/src/cli1-xdr.x index 129f5f971ab..5697310ad7d 100644 --- a/rpc/xdr/src/cli1-xdr.x +++ b/rpc/xdr/src/cli1-xdr.x @@ -103,6 +103,19 @@ enum gf1_cli_top_op { GF_CLI_TOP_WRITE_PERF }; +/* The unconventional hex numbers help us perform + bit-wise operations which reduces complexity */ +enum gf_cli_status_type { + GF_CLI_STATUS_NONE = 0x0000, + GF_CLI_STATUS_VOL = 0x0100, + GF_CLI_STATUS_ALL = 0x0200, + GF_CLI_STATUS_BRICK = 0x0400, + GF_CLI_STATUS_DETAIL = 0x0800, + GF_CLI_STATUS_VOL_DETAIL = 0x0900, + GF_CLI_STATUS_ALL_DETAIL = 0x0A00, + GF_CLI_STATUS_BRICK_DETAIL = 0x0C00 +}; + struct gf_cli_req { opaque dict<>; } ; -- cgit