summaryrefslogtreecommitdiffstats
path: root/ctdb
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2013-08-02 16:05:46 +1000
committerAmitay Isaacs <amitay@gmail.com>2013-08-14 15:57:03 +1000
commitbdbe37b24fef22c795531e1aba81e5baee6e5916 (patch)
tree68af683101f05e4fa163f4e28ebc088460e14884 /ctdb
parent2afb5632c719bc8bd8569b6af309227401f4d9b4 (diff)
downloadsamba-bdbe37b24fef22c795531e1aba81e5baee6e5916.tar.gz
samba-bdbe37b24fef22c795531e1aba81e5baee6e5916.tar.xz
samba-bdbe37b24fef22c795531e1aba81e5baee6e5916.zip
eventscripts: Separate out RPC service restart code
While doing this: * Explicitly assign RPC program and version information in _nfs_check_rpc_common(). This is more lines of code but is easier to read. * Don't print the options when starting a service. Trying to print it makes the code messy for little benefit. Update the eventscript unit testing code and a Ganesha test to reflect this. Signed-off-by: Martin Schwenke <martin@meltin.net> (This used to be ctdb commit e8b531405665885196c95fe1608db33a255bf761)
Diffstat (limited to 'ctdb')
-rwxr-xr-xctdb/config/functions97
-rwxr-xr-xctdb/tests/eventscripts/60.ganesha.monitor.141.sh4
-rw-r--r--ctdb/tests/eventscripts/scripts/local.sh10
3 files changed, 60 insertions, 51 deletions
diff --git a/ctdb/config/functions b/ctdb/config/functions
index 7c525884f5f..eb90946f534 100755
--- a/ctdb/config/functions
+++ b/ctdb/config/functions
@@ -281,34 +281,26 @@ _nfs_check_rpc_common ()
which "rpc.${_prog_name}" >/dev/null 2>&1 || return 0
esac
- _version=1
- _rpc_prog="$_prog_name"
- _restart=""
- _opts=""
case "$_prog_name" in
nfsd)
_rpc_prog=nfs
_version=3
- _restart="echo 'Trying to restart NFS service'"
- _restart="${_restart}; startstop_nfs restart"
;;
mountd)
- _opts="${MOUNTD_PORT:+ -p }${MOUNTD_PORT}"
+ _rpc_prog=mountd
+ _version=1
;;
rquotad)
- _opts="${RQUOTAD_PORT:+ -p }${RQUOTAD_PORT}"
+ _rpc_prog=rquotad
+ _version=1
;;
lockd)
_rpc_prog=nlockmgr
_version=4
- _restart="echo 'Trying to restart lock manager service'"
- _restart="${_restart}; startstop_nfslock restart"
;;
statd)
_rpc_prog=status
- _opts="${STATD_HOSTNAME:+ -n }${STATD_HOSTNAME}"
- _opts="${_opts}${STATD_PORT:+ -p }${STATD_PORT}"
- _opts="${_opts}${STATD_OUTGOING_PORT:+ -o }${STATD_OUTGOING_PORT}"
+ _version=1
;;
*)
echo "Internal error: unknown RPC program \"$_prog_name\"."
@@ -342,34 +334,11 @@ _nfs_check_rpc_action ()
verbose)
echo "$ctdb_check_rpc_out"
;;
- restart|restart:*)
- # No explicit command specified, construct rpc command.
- if [ -z "$_restart" ] ; then
- _p="rpc.${_prog_name}"
- _restart="echo 'Trying to restart $_prog_name [${_p}${_opts}]'"
- _restart="${_restart}; killall -q -9 $_p"
- _restart="${_restart}; $_p $_opts"
- fi
-
- # Process restart flags...
- _flags="${_action#restart:}"
- # There may not have been a colon...
- [ "$_flags" != "$_action" ] || _flags=""
- # q=quiet - everything to /dev/null
- if [ "${_flags#*q}" != "$_flags" ] ; then
- _restart="{ ${_restart} ; } >/dev/null 2>&1"
- fi
- # s=stealthy - last command to /dev/null
- if [ "${_flags#*s}" != "$_flags" ] ; then
- _restart="${_restart} >/dev/null 2>&1"
- fi
- # b=background - the whole thing, easy and reliable
- if [ "${_flags#*b}" != "$_flags" ] ; then
- _restart="{ ${_restart} ; } &"
- fi
-
- # Do it!
- eval "${_restart}"
+ restart)
+ _nfs_restart_rpc_service "$_prog_name"
+ ;;
+ restart:b)
+ _nfs_restart_rpc_service "$_prog_name" true
;;
unhealthy)
exit 1
@@ -383,6 +352,52 @@ _nfs_check_rpc_action ()
return 0
}
+_nfs_restart_rpc_service ()
+{
+ _prog_name="$1"
+ _background="${2:-false}"
+
+ if $_background ; then
+ _maybe_background="background_with_logging"
+ else
+ _maybe_background=""
+ fi
+
+ _p="rpc.${_prog_name}"
+
+ case "$_prog_name" in
+ nfsd)
+ echo "Trying to restart NFS service"
+ $_maybe_background startstop_nfs restart
+ ;;
+ mountd)
+ echo "Trying to restart $_prog_name [${_p}]"
+ killall -q -9 "$_p"
+ $_maybe_background $_p ${MOUNTD_PORT:+-p} $MOUNTD_PORT
+ ;;
+ rquotad)
+ echo "Trying to restart $_prog_name [${_p}]"
+ killall -q -9 "$_p"
+ $_maybe_background $_p ${RQUOTAD_PORT:+-p} $RQUOTAD_PORT
+ ;;
+ lockd)
+ echo "Trying to restart lock manager service"
+ $_maybe_background startstop_nfslock restart
+ ;;
+ statd)
+ echo "Trying to restart $_prog_name [${_p}]"
+ killall -q -9 "$_p"
+ $_maybe_background $_p \
+ ${STATD_HOSTNAME:+-n} $STATD_HOSTNAME \
+ ${STATD_PORT:+-p} $STATD_PORT \
+ ${STATD_OUTGOING_PORT:+-o} $STATD_OUTGOING_PORT
+ ;;
+ *)
+ echo "Internal error: unknown RPC program \"$_prog_name\"."
+ exit 1
+ esac
+}
+
######################################################
# check that a rpc server is registered with portmap
# and responding to requests
diff --git a/ctdb/tests/eventscripts/60.ganesha.monitor.141.sh b/ctdb/tests/eventscripts/60.ganesha.monitor.141.sh
index 656a5307289..9cd82f84cc2 100755
--- a/ctdb/tests/eventscripts/60.ganesha.monitor.141.sh
+++ b/ctdb/tests/eventscripts/60.ganesha.monitor.141.sh
@@ -13,7 +13,7 @@ ok_null
simple_test || exit $?
ok<<EOF
-Trying to restart statd [rpc.statd -n cluster1 -H /etc/ctdb/statd-callout ]
+Trying to restart statd [rpc.statd]
EOF
simple_test || exit $?
@@ -24,7 +24,7 @@ ok<<EOF
ERROR: status failed RPC check:
rpcinfo: RPC: Program not registered
program status version 1 is not available
-Trying to restart statd [rpc.statd -n cluster1 -H /etc/ctdb/statd-callout ]
+Trying to restart statd [rpc.statd]
EOF
simple_test || exit $?
diff --git a/ctdb/tests/eventscripts/scripts/local.sh b/ctdb/tests/eventscripts/scripts/local.sh
index 594656c4134..fafc8f3b2e4 100644
--- a/ctdb/tests/eventscripts/scripts/local.sh
+++ b/ctdb/tests/eventscripts/scripts/local.sh
@@ -693,14 +693,8 @@ ERROR: $_pn failed RPC check:
rpcinfo: RPC: Program not registered
program $_pn version $_ver is not available"
;;
- restart|restart:*)
- _opts=""
+ restart*)
_p="rpc.${_progname}"
- case "$_progname" in
- statd)
- _opts="${STATD_HOSTNAME:+ -n }${STATD_HOSTNAME}"
- ;;
- esac
case "$_action" in
*:b) _bg="&" ;;
*) _bg="" ;;
@@ -730,7 +724,7 @@ Trying to restart lock manager service
${_bg}Starting nfslock: OK"
;;
*)
- _t="Trying to restart $_progname [${_p}${_opts}]"
+ _t="Trying to restart $_progname [${_p}]"
esac
_out="${_out}${_out:+${_nl}}${_t}"
;;