From 4a3454753f6e4ddc309c8d1cb11a6e4e432c1da6 Mon Sep 17 00:00:00 2001 From: Samikshan Bairagya Date: Thu, 7 Jul 2016 20:33:02 +0530 Subject: glusterd/cli: cli to get local state representation from glusterd Currently there is no existing CLI that can be used to get the local state representation of the cluster as maintained in glusterd in a readable as well as parseable format. The CLI added has the following usage: # gluster get-state [daemon] [odir ] [file ] This would dump data points that reflect the local state representation of the cluster as maintained in glusterd (no other daemons are supported as of now) to a file inside the specified output directory. The default output directory and filename is /var/run/gluster and glusterd_state_ respectively. The option for specifying the daemon name leaves room to add support for other daemons in the future. Following are the data points captured as of now to represent the state from the local glusterd pov: * Peer: - Primary hostname - uuid - state - connection status - List of hostnames * Volumes: - name, id, transport type, status - counts: bricks, snap, subvol, stripe, arbiter, disperse, redundancy - snapd status - quorum status - tiering related information - rebalance status - replace bricks status - snapshots * Bricks: - Path, hostname (for all bricks these info will be shown) - port, rdma port, status, mount options, filesystem type and signed in status for bricks running locally. * Services: - name, online status for initialised services * Others: - Base port, last allocated port - op-version - MYUUID Change-Id: I4a45cc5407ab92d8afdbbd2098ece851f7e3d618 BUG: 1353156 Signed-off-by: Samikshan Bairagya Reviewed-on: http://review.gluster.org/14873 Reviewed-by: Avra Sengupta Smoke: Gluster Build System CentOS-regression: Gluster Build System NetBSD-regression: NetBSD Build System Reviewed-by: Atin Mukherjee --- .../cli/bug-1353156-get-state-cli-validations.t | 141 +++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 tests/bugs/cli/bug-1353156-get-state-cli-validations.t (limited to 'tests/bugs/cli') diff --git a/tests/bugs/cli/bug-1353156-get-state-cli-validations.t b/tests/bugs/cli/bug-1353156-get-state-cli-validations.t new file mode 100644 index 00000000000..9dc1f07cd17 --- /dev/null +++ b/tests/bugs/cli/bug-1353156-get-state-cli-validations.t @@ -0,0 +1,141 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../fileio.rc +. $(dirname $0)/../../snapshot.rc + +cleanup; + +ODIR="/var/tmp/gdstates/" +NOEXDIR="/var/tmp/gdstatesfoo/" + +function get_daemon_not_supported_part { + echo $1 +} + +function get_usage_part { + echo $7 +} + +function get_directory_doesnt_exist_part { + echo $1 +} + +function get_parsing_arguments_part { + echo $1 +} + +TEST glusterd +TEST pidof glusterd +TEST mkdir $ODIR + +TEST $CLI volume create $V0 disperse $H0:$B0/b1 $H0:$B0/b2 $H0:$B0/b3 +TEST $CLI volume start $V0 +TEST $CLI volume tier $V0 attach replica 2 $H0:$B1/b4 $H0:$B1/b5 + +TEST setup_lvm 1 +TEST $CLI volume create $V1 $H0:$L1; +TEST $CLI volume start $V1 + +TEST $CLI snapshot create ${V1}_snap $V1 + +OPATH=$(echo `$CLI get-state` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +OPATH=$(echo `$CLI get-state glusterd` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +TEST ! $CLI get-state glusterfsd; +ERRSTR=$($CLI get-state glusterfsd 2>&1 >/dev/null); +EXPECT 'glusterd' get_daemon_not_supported_part $ERRSTR; +EXPECT 'Usage:' get_usage_part $ERRSTR; + +OPATH=$(echo `$CLI get-state file gdstate` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +OPATH=$(echo `$CLI get-state glusterd file gdstate` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +TEST ! $CLI get-state glusterfsd file gdstate; +ERRSTR=$($CLI get-state glusterfsd file gdstate 2>&1 >/dev/null); +EXPECT 'glusterd' get_daemon_not_supported_part $ERRSTR; +EXPECT 'Usage:' get_usage_part $ERRSTR; + +OPATH=$(echo `$CLI get-state odir $ODIR` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +OPATH=$(echo `$CLI get-state glusterd odir $ODIR` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +OPATH=$(echo `$CLI get-state odir $ODIR file gdstate` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +OPATH=$(echo `$CLI get-state glusterd odir $ODIR file gdstate` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +OPATH=$(echo `$CLI get-state glusterd odir $ODIR file gdstate` | awk '{print $5}' | tr -d '\n') +TEST fd=`fd_available` +TEST fd_open $fd "r" $OPATH; +TEST fd_close $fd; +rm $OPATH + +TEST ! $CLI get-state glusterfsd odir $ODIR; +ERRSTR=$($CLI get-state glusterfsd odir $ODIR 2>&1 >/dev/null); +EXPECT 'glusterd' get_daemon_not_supported_part $ERRSTR; +EXPECT 'Usage:' get_usage_part $ERRSTR; + +TEST ! $CLI get-state glusterfsd odir $ODIR file gdstate; +ERRSTR=$($CLI get-state glusterfsd odir $ODIR file gdstate 2>&1 >/dev/null); +EXPECT 'glusterd' get_daemon_not_supported_part $ERRSTR; +EXPECT 'Usage:' get_usage_part $ERRSTR; + +TEST ! $CLI get-state glusterfsd odir $NOEXDIR file gdstate; +ERRSTR=$($CLI get-state glusterfsd odir $NOEXDIR file gdstate 2>&1 >/dev/null); +EXPECT 'glusterd' get_daemon_not_supported_part $ERRSTR; +EXPECT 'Usage:' get_usage_part $ERRSTR; + +TEST ! $CLI get-state odir $NOEXDIR; +ERRSTR=$($CLI get-state odir $NOEXDIR 2>&1 >/dev/null); +EXPECT 'Failed' get_directory_doesnt_exist_part $ERRSTR; + +TEST ! $CLI get-state odir $NOEXDIR file gdstate; +ERRSTR=$($CLI get-state odir $NOEXDIR 2>&1 >/dev/null); +EXPECT 'Failed' get_directory_doesnt_exist_part $ERRSTR; + +TEST ! $CLI get-state foo bar; +ERRSTR=$($CLI get-state foo bar 2>&1 >/dev/null); +EXPECT 'glusterd' get_daemon_not_supported_part $ERRSTR; +EXPECT 'Usage:' get_usage_part $ERRSTR; + +TEST ! $CLI get-state glusterd foo bar; +ERRSTR=$($CLI get-state glusterd foo bar 2>&1 >/dev/null); +EXPECT 'Problem' get_parsing_arguments_part $ERRSTR; + +rm -Rf $ODIR +cleanup; + -- cgit