You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#!/sbin/openrc-run
|
|
|
|
# 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"
|
|
|
|
}
|