diff options
author | Leonardo Arena <rnalrd@gmail.com> | 2010-10-07 12:23:02 +0000 |
---|---|---|
committer | Leonardo Arena <rnalrd@gmail.com> | 2010-10-07 12:23:02 +0000 |
commit | e86eb0b226fb7d73624781995f3828187ae5ca37 (patch) | |
tree | 3ce1082225410a19b2c0f447eaf2c2ec4901c22b /testing/libvirt | |
parent | 7dcde6882accac3b40fa04be0c9e81976d598491 (diff) | |
download | aports-e86eb0b226fb7d73624781995f3828187ae5ca37.tar.bz2 aports-e86eb0b226fb7d73624781995f3828187ae5ca37.tar.xz |
testing/libvirt: new aport
Diffstat (limited to 'testing/libvirt')
-rw-r--r-- | testing/libvirt/APKBUILD | 42 | ||||
-rw-r--r-- | testing/libvirt/libvirt.confd | 27 | ||||
-rw-r--r-- | testing/libvirt/libvirt.initd | 87 |
3 files changed, 156 insertions, 0 deletions
diff --git a/testing/libvirt/APKBUILD b/testing/libvirt/APKBUILD new file mode 100644 index 0000000000..ab0e5d490d --- /dev/null +++ b/testing/libvirt/APKBUILD @@ -0,0 +1,42 @@ +# Maintainer: Leonardo Arena <rnalrd@gmail.com> +pkgname=libvirt +pkgver=0.8.4 +pkgrel=0 +pkgdesc="A virtualization API for several hypervisor and container systems" +url="http://libvirt.org/" +license="LGPL" +depends="python" +makedepends="libxml2-dev gnutls-dev lvm2-dev" +install= +subpackages="$pkgname-dev $pkgname-doc" +source="http://libvirt.org/sources/$pkgname-$pkgver.tar.gz + libvirt.confd + libvirt.initd" + +_builddir="$srcdir"/$pkgname-$pkgver + +#prepare() { +# cd "$_builddir" +# # apply patches here +#} + +build() { + cd "$_builddir" + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --libexec=/usr/lib/"$pkgname" + make || return 1 +} + +package() { + cd "$_builddir" + make DESTDIR="$pkgdir" install + install -D -m755 $srcdir/$pkgname.initd $pkgdir/etc/init.d/libvirtd + install -D -m755 $srcdir/$pkgname.confd $pkgdir/etc/conf.d/libvirtd +} + +md5sums="a9300a068a07bcd72f86e4967d7f4d69 libvirt-0.8.4.tar.gz +1c84a7baeafe0a7f4e9d7ae5180311b7 libvirt.confd +3d32c12642cb9a84baf019c7b0971755 libvirt.initd" diff --git a/testing/libvirt/libvirt.confd b/testing/libvirt/libvirt.confd new file mode 100644 index 0000000000..d51bdb99d1 --- /dev/null +++ b/testing/libvirt/libvirt.confd @@ -0,0 +1,27 @@ +# /etc/conf.d/libvirtd + +# You may want to add '--listen' to have libvirtd listen for tcp/ip connections +# if you want to use libvirt for remote control + +# Please consult 'libvirtd --help' for more options + +#LIBVIRTD_OPTS="--listen" + +# Valid options: +# * shutdown - Sends an ACPI shutdown (think when you tap the power button +# on your machine and it begins a graceful shutdown). If your +# VM ignores this, it will have the power yanked out from under +# it in LIBVIRTD_KVM_SHUTDOWN_MAXWAIT seconds. +# * managedsave - Performs a state save external to the VM. qemu-kvm will stop +# stop the CPU and save off all state to a separate file. When +# the machine is started again, it will resume like nothing ever +# happened. This is guarenteed to always successfully stop your +# machine and restart it. However it may take some time to finish. +# * none - No attempts will be made to stop any VMs. If you are restarting your +# machine the qemu-kvm process will be simply killed, which may result +# in your VMs having disk corruption. +LIBVIRTD_KVM_SHUTDOWN="managedsave" + +# Timeout in seconds until stopping libvirtd and "pulling the plug" on the +# remaining VM's still in a running state +#LIBVIRTD_KVM_SHUTDOWN_MAXWAIT="500" diff --git a/testing/libvirt/libvirt.initd b/testing/libvirt/libvirt.initd new file mode 100644 index 0000000000..d0b9d34a01 --- /dev/null +++ b/testing/libvirt/libvirt.initd @@ -0,0 +1,87 @@ +#!/sbin/runscript + +opts="start stop status reload restart" + +depend() { + need net + after firewall +} + +libvirtd_virsh() { + # Silence errors because virsh always throws an error about + # not finding the hypervisor version when connecting to libvirtd + LC_ALL=C virsh -c qemu:///system "$@" 2>/dev/null +} + +libvirtd_dom_list() { + # Make sure that it wouldn't be confused if the domain name + # contains the word running. + libvirtd_virsh list | awk '$3 == "running" { print $1 }' +} + +libvirtd_dom_count() { + # Make sure that it wouldn't be confused if the domain name + # contains the word running. + libvirtd_virsh list | awk 'BEGIN { count = 0 } \ + $3 == "running" { count++ } \ + END { print count }' +} + +start() { + ebegin "Starting libvirtd" + start-stop-daemon --start \ + --env KRB5_KTNAME=/etc/libvirt/krb5.tab \ + --exec /usr/sbin/libvirtd -- -d ${LIBVIRTD_OPTS} + eend $? +} + +stop() { + ebegin "Stopping libvirtd" + # try to shutdown all (KVM/Qemu) domains + DOM_COUNT="$(libvirtd_dom_count)" + if [ "${LIBVIRTD_KVM_SHUTDOWN}" != "none" ] \ + && [ "${DOM_COUNT}" != "0" ] ; then + + einfo " Shutting down domain(s):" + for DOM_ID in $(libvirtd_dom_list) ; do + NAME="$(libvirtd_virsh domname ${DOM_ID} | head -n 1)" + einfo " ${NAME}" + libvirtd_virsh ${LIBVIRTD_KVM_SHUTDOWN} ${DOM_ID} > /dev/null + done + + if [ -n "${LIBVIRTD_KVM_SHUTDOWN_MAXWAIT}" ] ; then + COUNTER="${LIBVIRTD_KVM_SHUTDOWN_MAXWAIT}" + else + COUNTER=500 + fi + + if [ "${LIBVIRTD_KVM_SHUTDOWN}" = "shutdown" ]; then + einfo " Waiting ${COUNTER} seconds while domains shutdown ..." + DOM_COUNT="$(libvirtd_dom_count)" + while [ ${DOM_COUNT} -gt 0 ] && [ ${COUNTER} -gt 0 ] ; do + DOM_COUNT="$(libvirtd_dom_count)" + sleep 1 + COUNTER=$((${COUNTER} - 1)) + echo -n "." + done + fi + + DOM_COUNT="$(libvirtd_dom_count)" + if [ "${DOM_COUNT}" != "0" ] ; then + eerror " !!! Some guests are still running, stopping anyways" + fi + + fi + start-stop-daemon --stop --quiet --exec /usr/sbin/libvirtd --pidfile=/var/run/libvirtd.pid + eend $? +} + +reload() { + ebegin "Reloading libvirtd without shutting down your VMs" + start-stop-daemon --stop --quiet --exec /usr/sbin/libvirtd --pidfile=/var/run/libvirtd.pid + if [ $? -ne 0 ]; then + eend $? + fi + start-stop-daemon --start --quiet --exec /usr/sbin/libvirtd -- -d ${LIBVIRTD_OPTS} + eend $? +} |