diff options
author | Martin Schwenke <martin@meltin.net> | 2013-08-02 16:05:46 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@gmail.com> | 2013-08-14 15:57:03 +1000 |
commit | bdbe37b24fef22c795531e1aba81e5baee6e5916 (patch) | |
tree | 68af683101f05e4fa163f4e28ebc088460e14884 /ctdb | |
parent | 2afb5632c719bc8bd8569b6af309227401f4d9b4 (diff) | |
download | samba-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-x | ctdb/config/functions | 97 | ||||
-rwxr-xr-x | ctdb/tests/eventscripts/60.ganesha.monitor.141.sh | 4 | ||||
-rw-r--r-- | ctdb/tests/eventscripts/scripts/local.sh | 10 |
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}" ;; |