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/config/functions | |
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/config/functions')
-rwxr-xr-x | ctdb/config/functions | 97 |
1 files changed, 56 insertions, 41 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 |