#!/bin/sh
#
# Univention libvirt
#  init script for libvirtd using runit
#
# Copyright 2010-2014 Univention GmbH
#
# <http://www.univention.de/>
#
# All rights reserved.
#
# The source code of this program is made available
# under the terms of the GNU Affero General Public License version 3
# (GNU AGPL V3) as published by the Free Software Foundation.
#
# Binary versions of this program provided by Univention to you as
# well as other copyrighted, protected or trademarked materials like
# Logos, graphics, fonts, specific documentations and configurations,
# cryptographic keys etc. are subject to a license agreement between
# you and Univention and not subject to the GNU AGPL V3.
#
# In the case you use this program under the terms of the GNU AGPL V3,
# the program is provided in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public
# License with the Debian GNU/Linux or Univention distribution in file
# /usr/share/common-licenses/AGPL-3; if not, see
# <http://www.gnu.org/licenses/>.
### BEGIN INIT INFO
# Provides:          libvirtd
# Required-Start:    $network $local_fs $remote_fs $syslog
# Required-Stop:     $local_fs $remote_fs $syslog
# Should-Start:      hal avahi cgconfig
# Should-Stop:       hal avahi cgconfig
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: libvirt management daemon
### END INIT INFO

DAEMON=univention-libvirt
NAME=libvirtd
DESC="UCS libvirt daemon"

if [ ! -e "/etc/runit/univention/$DAEMON" ]
then
	exit 0
fi

. /lib/lsb/init-functions

case "${0##*/}" in
*univention-virtual-machine-manager-node-common*|*libvirt-bin*)
	log_warning_msg "'${0##*/}' is deprecated in favour of 'libvirtd'."
	;;
esac

running () { # Check is daemon is running
	sv status "$DAEMON" | grep -q -s '^run:'
}

case "$1" in
	start)
		# check ucr autostart setting
		if [ -f "/usr/share/univention-config-registry/init-autostart.lib" ]
		then
			. "/usr/share/univention-config-registry/init-autostart.lib"
			check_autostart "$DAEMON" libvirt/autostart
		fi
		log_daemon_msg "Starting $DESC" "$NAME"
		sv up "$DAEMON"
		log_end_msg 0
		;;
	stop)
		log_daemon_msg "Stopping $DESC" "$NAME"
		sv force-stop "$DAEMON"
		log_end_msg 0
		;;
	restart|force-reload)
		# check ucr autostart setting
		if [ -f "/usr/share/univention-config-registry/init-autostart.lib" ]
		then
			. "/usr/share/univention-config-registry/init-autostart.lib"
			check_autostart "$DAEMON" libvirt/autostart
		fi
		log_daemon_msg "Restarting $DESC" "$NAME"
		sv force-restart "$DAEMON"
		log_end_msg 0
		;;
	crestart)
		# check ucr autostart setting
		if [ -f "/usr/share/univention-config-registry/init-autostart.lib" ]
		then
			. "/usr/share/univention-config-registry/init-autostart.lib"
			check_autostart "$DAEMON" libvirt/autostart
		fi
		if running
		then
			"$0" restart
		else
			log_action_msg "Not restarting $DESC: $NAME is not running"
		fi
		;;
	status)
		log_daemon_msg "Checking status of $DESC" "$NAME"
		if running
		then
			log_progress_msg "running"
			log_end_msg 0
		else
			log_progress_msg "not running"
			log_end_msg 1
		fi
		;;
	*)
		log_action_msg "Usage: $0 {start|stop|restart|crestart|force-reload|status}"
		exit 1
		;;
esac
