diff options
Diffstat (limited to 'libraries/libvirt/rc.libvirt')
-rw-r--r-- | libraries/libvirt/rc.libvirt | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/libraries/libvirt/rc.libvirt b/libraries/libvirt/rc.libvirt new file mode 100644 index 0000000000..1cdea9a7ea --- /dev/null +++ b/libraries/libvirt/rc.libvirt @@ -0,0 +1,106 @@ +#!/bin/bash + +MODULES="tun vhost_net" +PIDFILE="/var/run/libvirtd.pid" +TIMEOUT=${TIMEOUT:-40} +OPTS=${OPTS:-" -v -f /etc/libvirt/libvirtd.conf "} + +check_running_machines() { + + i=0 + + for j in `/usr/sbin/virsh list | grep running | awk '{print $2;}'` ; do + /usr/sbin/virsh shutdown $j + done + + echo -n "Waiting machines" + + while [ $(/usr/sbin/virsh list | grep running | wc -l) -gt "0" ]; do + if [ "$i" -ge "$TIMEOUT" ];then + break + fi + echo -n "." + i=`expr $i + 1` + sleep 1 + done + + echo "" + + if [ $(/usr/sbin/virsh list | grep running | wc -l) -gt "0" ];then + + echo -n "The following machines are still running, forcing shutdown: " + for j in `/usr/sbin/virsh list | grep running | awk '{print $2;}'` ; do + /usr/sbin/virsh destroy $j + echo -n "$j " + done + + echo "" + sleep 2 + fi + +} + +check_processor() { + + egrep 'vmx' /proc/cpuinfo > /dev/null + + if [ "$?" -eq "0" ];then + MODULES="$MODULES kvm_intel kvm" + fi + + check=$? + + egrep 'svm' /proc/cpuinfo > /dev/null + + if [ "$?" -eq "0" ];then + MODULES="$MODULES kvm_amd kvm" + fi + + check=`expr $check + $?` + + if [ $check -eq "2" ];then + echo "Your systems does not support KVM!" + fi + +} + +start() { + if [ -f $PIDFILE ];then + echo "libvirt is already running..." + exit 1 + fi + echo "Starting libvirtd..." + check_processor + modprobe -a $MODULES + libvirtd -d -l $OPTS +} + +stop() { + if [ ! -f $PIDFILE ];then + echo "libvirt is not running..." + exit 2 + fi + check_running_machines + check_processor + echo "Stopping libvirtd..." + kill -TERM `cat $PIDFILE` + modprobe -ra $MODULES +} + +case $1 in +start) + start + ;; +stop) + stop + ;; +restart) + stop + sleep 1 + start + ;; +*) + echo "Usage: $0 (start|stop|restart)" + ;; +esac + |