#!/sbin/openrc-run # Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ depend() { need localmount logger after bootmisc sshd use net } DAEMON_UTIL="/usr/lib/ganeti/daemon-util" is_master() { [ -z "${ganeti_master}" ] && ganeti_master="$(gnt-cluster getmaster)" [ -z "${local_hostname}" ] && local_hostname="$(hostname -f)" [ "${ganeti_master}" = "${local_hostname}" ] } start() { if ! [ -e ${DAEMON_UTIL} ]; then eerror "Could not find daemon utility at ${DAEMON_UTIL}" return 1 elif ! ${DAEMON_UTIL} check-config ; then eerror "Incomplete configuration, will not run." return 1 fi local daemon retval=0 optsvar started_daemons daemon_opts for daemon in $(${DAEMON_UTIL} list-start-daemons); do optsvar="${daemon//-/_}" case "${daemon#ganeti-}" in masterd|rapi|luxid) is_master || continue;; esac eval daemon_opts=\"\$\{${optsvar^^*}_OPTS\}\" ebegin "Starting ${daemon}" eindent ${DAEMON_UTIL} start ${daemon} ${GANETI_OPTS} ${daemon_opts} || retval=${?} if [ ${retval} != 0 ] && [ -n "${started_daemons}" ]; then case ${daemon} in *-kvmd) retval=0; ewarn "Failed to start kvmd, continuing anyway";; *) eerror "Stopping already started daemons" eindent eend ${code} "$(${DAEMON_UTIL} check-exitcode ${code})" for daemon in ${started_daemons}; do ebegin "Stopping ${daemon}" ${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS} eend ${?} done eoutdent; eoutdent return ${retval} ;; esac fi eoutdent started_daemons="${started_daemons} ${daemon}" done } stop() { if ! [ -e ${DAEMON_UTIL} ]; then eerror "Could not find daemon utility at ${DAEMON_UTIL}" return 1 fi local daemon for daemon in $(${DAEMON_UTIL} list-stop-daemons) ; do \ case "${daemon#ganeti-}" in masterd|rapi|luxid) is_master || continue;; esac ${DAEMON_UTIL} stop ${daemon} ${GANETI_OPTS} done } # vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet: