aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testing/libvirt/APKBUILD42
-rw-r--r--testing/libvirt/libvirt.confd27
-rw-r--r--testing/libvirt/libvirt.initd87
3 files changed, 156 insertions, 0 deletions
diff --git a/testing/libvirt/APKBUILD b/testing/libvirt/APKBUILD
new file mode 100644
index 00000000000..ab0e5d490d4
--- /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 00000000000..d51bdb99d1f
--- /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 00000000000..d0b9d34a01c
--- /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 $?
+}