
Adds basic skeleton/structure with stubs. Changes are done as per Roger Luethi's scripts. These changes are done to incorporate various features like logging, multi-os setup etc. These scripts may also target more virtualization products like KVM, LXC down the roadmap. blueprint openstack-training-labs Change-Id: I0bb33b518080f8a9b9c0e1624f43a66337eb8278
89 lines
2.6 KiB
Plaintext
89 lines
2.6 KiB
Plaintext
description "libvirt daemon"
|
|
author "Dustin Kirkland <kirkland@canonical.com>"
|
|
|
|
start on runlevel [2345]
|
|
stop on starting rc RUNLEVEL=[016]
|
|
|
|
expect daemon
|
|
respawn
|
|
|
|
# daemonize
|
|
env libvirtd_opts="-d -l"
|
|
# whether libvirtd should run at boot/shutdown
|
|
env start_libvirtd="yes"
|
|
# by default wait 30 seconds for vms to shut down
|
|
env libvirtd_shutdown_timeout=30
|
|
# uris for which to shut down vms
|
|
env libvirt_uris='qemu:///system lxc:///'
|
|
|
|
pre-start script
|
|
[ -r /etc/default/libvirt-bin ] && . /etc/default/libvirt-bin
|
|
[ ! "x$start_libvirtd" = "xyes" ] && { stop; exit 0; }
|
|
mkdir -p /var/run/libvirt
|
|
# Clean up a pidfile that might be left around
|
|
rm -f /var/run/libvirtd.pid
|
|
end script
|
|
|
|
pre-stop script
|
|
[ -r /etc/default/libvirt-bin ] && . /etc/default/libvirt-bin
|
|
|
|
log_msg()
|
|
{
|
|
logf="/var/log/libvirt/shutdownlog.log"
|
|
logger -p daemon.debug -s -t libvirt -- "$@" >> $logf 2>&1
|
|
}
|
|
|
|
run_virsh()
|
|
{
|
|
# We parse the output for things like domain state;
|
|
# make sure the output is in the language we expect.
|
|
LANG=C virsh "$@"
|
|
}
|
|
|
|
if [ -z "$RUNLEVEL" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$RUNLEVEL" -ne 0 ] && [ "$RUNLEVEL" -ne 1 ] && [ "$RUNLEVEL" -ne 6 ]; then
|
|
exit 0
|
|
fi
|
|
log_msg "libvirt-bin: entering pre-stop at $(date)"
|
|
|
|
for uri in $libvirt_uris; do
|
|
for domain in $(run_virsh -c "$uri" list | awk '$3 == "running" {print $2}'); do
|
|
log_msg "libvirt-bin: attempting clean shutdown of $domain at $(date)"
|
|
run_virsh -c "$uri" shutdown "$domain" >/dev/null
|
|
done
|
|
done
|
|
|
|
delay=$libvirtd_shutdown_timeout
|
|
while [ $delay -gt 0 ]; do
|
|
for uri in $libvirt_uris; do
|
|
if ! run_virsh -c "$uri" list | awk '$3 == "running" {exit 1}'; then
|
|
# VMs at this URI are still running. Wait, then
|
|
# start at the beginning looking for running VMs.
|
|
sleep 1
|
|
delay=$(($delay - 1))
|
|
continue 2
|
|
fi
|
|
done
|
|
break
|
|
done
|
|
|
|
for uri in $libvirt_uris; do
|
|
for domain in $(run_virsh -c "$uri" list | awk '$3 == "running" {print $2}'); do
|
|
log_msg "destroying $domain"
|
|
run_virsh -c "$uri" destroy "$domain" >/dev/null
|
|
done
|
|
done
|
|
log_msg "libvirt-bin: exiting pre-stop at $(date)"
|
|
end script
|
|
|
|
# /etc/default/libvirt-bin will be deprecated soon.
|
|
# If you used to set $libvirtd_opts in /etc/default/libvirt-bin,
|
|
# change the 'exec' line here instead.
|
|
script
|
|
[ -r /etc/default/libvirt-bin ] && . /etc/default/libvirt-bin
|
|
exec /usr/sbin/libvirtd $libvirtd_opts
|
|
end script
|