#!/sbin/runscript # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ depend() { after ganeti after bootmisc } CONTROL_PATH="/var/run/ganeti/kvm-hypervisor/ctrl" GANETI_KVM_TIMEOUT=${GANETI_KVM_TIMEOUT:-60} start() { return 0 } # Taken from doc/examples/ganeti-kvm-poweroff.initd.in in ganeti package stop() { ebegin "Stopping Ganeti KVM VMs" # shutdown VMs and remove sockets of those not running for vm_monitor in $(find $CONTROL_PATH -type s -name '*.monitor') ; do if ! echo system_powerdown | \ socat -U UNIX:$vm_monitor STDIO > /dev/null 2>&1; then # remove disconnected socket rm -f $vm_monitor fi done einfo " Waiting for VMs to poweroff" waiting=true remaining=$GANETI_KVM_TIMEOUT while $waiting && [ $remaining -ne 0 ]; do if [ -z "$(find $CONTROL_PATH -type s -name '*.monitor')" ] ; then break fi echo -n "." for vm_monitor in $(find $CONTROL_PATH -type s -name '*.monitor') ; do if ! echo | socat -U UNIX:$vm_monitor STDIO > /dev/null 2>&1; then rm -rf $vm_monitor fi done sleep 5 let remaining-=5 1 done if [ -n "$(find $CONTROL_PATH -type s -name '*.monitor')" ] ; then eerror " Some ganeti VMs did not shutdown" fi echo eend $? } restart() { eerror "restart not supported" }