| #!/sbin/runscript |
| # Copyright 1999-2014 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| depend() { |
| need localmount logger |
| after bootmisc |
| use net |
| } |
| |
| DAEMON_UTIL="/usr/lib/ganeti/daemon-util" |
| |
| check_config() { |
| if ! $DAEMON_UTIL check-config ; then |
| eend 0 "Incomplete configuration, will not run." |
| fi |
| } |
| |
| check_exitcode() { |
| RC=${1} |
| if errmsg=$(${DAEMON_UTIL} check-exitcode ${RC}) ; then |
| eend 0 "${errmsg}" |
| else |
| eend 1 "${errmsg}" |
| fi |
| } |
| |
| start_action() { |
| # called as start_action daemon-name |
| local daemon="${1}" |
| ebegin "Starting ${daemon}" |
| ${DAEMON_UTIL} start "${@}" |
| check_exitcode ${?} |
| } |
| |
| stop_action() { |
| # called as stop_action daemon-name |
| local daemon="${1}" |
| ebegin "Stopping ${daemon}" |
| ${DAEMON_UTIL} stop "${@}" |
| check_exitcode ${?} |
| } |
| |
| maybe_do() { |
| requested="${1}"; shift |
| action="${1}"; shift |
| target="${1}" |
| if [ -z "${requested}" -o "${requested}" = "${target}" ] ; then |
| ${action} "${@}" |
| fi |
| } |
| |
| get_master_node() { |
| MASTER_NODE="$(gnt-cluster getmaster)" |
| NODE_HOSTNAME="$(hostname -f)" |
| if [ "$MASTER_NODE" == "$NODE_HOSTNAME" ] ; then |
| MASTER=1 |
| else |
| MASTER=0 |
| fi |
| } |
| |
| start_all() { |
| check_config |
| get_master_node |
| for i in $($DAEMON_UTIL list-start-daemons); do \ |
| GANETI_START_OPTS="${GANETI_OPTS}" |
| case "${i}" in |
| ganeti-masterd) |
| GANETI_OPTS="${GANETI_START_OPTS} ${GANETI_MASTERD_OPTS}" |
| ;; |
| ganeti-rapid) |
| GANETI_OPTS="${GANETI_START_OPTS} ${GANETI_RAPI_OPTS}" |
| ;; |
| ganeti-noded) |
| GANETI_OPTS="${GANETI_START_OPTS} ${GANETI_NODED_OPTS}" |
| ;; |
| ganeti-confd) |
| GANETI_OPTS="${GANETI_START_OPTS} ${GANETI_CONFD_OPTS}" |
| ;; |
| esac |
| # Don't start if not master |
| if [ $MASTER = 0 -a $i = "ganeti-masterd" ] ; then |
| continue |
| elif [ $MASTER = 0 -a $i = "ganeti-rapi" ] ; then |
| continue |
| else |
| maybe_do "${1}" start_action ${i} ${GANETI_OPTS} |
| fi |
| done |
| } |
| |
| stop_all() { |
| get_master_node |
| for i in $($DAEMON_UTIL list-stop-daemons) ; do \ |
| if [ $MASTER = 0 -a $i = "ganeti-masterd" ] ; then |
| continue |
| elif [ $MASTER = 0 -a $i = "ganeti-rapi" ] ; then |
| continue |
| else |
| maybe_do "${1}" stop_action ${i} ${GANETI_OPTS} |
| fi |
| done |
| } |
| |
| start() { |
| start_all |
| } |
| |
| stop() { |
| stop_all |
| } |