diff options
author | Nicolas Reynolds <fauno@kiwwwi.com.ar> | 2011-09-21 12:47:04 -0300 |
---|---|---|
committer | Nicolas Reynolds <fauno@kiwwwi.com.ar> | 2011-09-21 12:47:04 -0300 |
commit | 79f56eaaa1e752a2f67072051b612acf5c648f69 (patch) | |
tree | a466c8fa3a070419d3a816b79a2d38ec80ad04ce /community/libvirt | |
parent | 37ac99de3bc1df2e6c5e0cd8b6af631d589cb4ab (diff) | |
parent | d739da01541d53414129d3171df221cfe2440fe5 (diff) |
Merge branch 'master' of ssh://vparabola/home/parabola/abslibre-pre-mips64el
Conflicts:
community/antiword/PKGBUILD
community/apcupsd/PKGBUILD
community/busybox/PKGBUILD
community/chrpath/PKGBUILD
community/driftnet/PKGBUILD
community/emesene/PKGBUILD
community/fdm/PKGBUILD
community/fftw2/PKGBUILD
community/gsynaptics/PKGBUILD
community/gtk-rezlooks-engine/PKGBUILD
community/httptunnel/PKGBUILD
community/libnfnetlink/PKGBUILD
community/libopenraw/PKGBUILD
community/mashup/PKGBUILD
community/pcb/PKGBUILD
community/portaudio_cpp/PKGBUILD
community/preload/PKGBUILD
community/rlog/PKGBUILD
community/scponly/PKGBUILD
community/splint/PKGBUILD
community/wmname/PKGBUILD
community/xosd/PKGBUILD
community/xxkb/PKGBUILD
community/znc/PKGBUILD
core/glibc/PKGBUILD
core/libtool/PKGBUILD
extra/at/PKGBUILD
extra/autogen/PKGBUILD
extra/bmp-musepack/PKGBUILD
extra/capi4k-utils/PKGBUILD
extra/cdrdao/PKGBUILD
extra/chkrootkit/PKGBUILD
extra/cmt/PKGBUILD
extra/compface/PKGBUILD
extra/dasher/PKGBUILD
extra/dcfldd/PKGBUILD
extra/dmapi/PKGBUILD
extra/docker/PKGBUILD
extra/dvd+rw-tools/PKGBUILD
extra/dvdrtools/PKGBUILD
extra/fcgi/PKGBUILD
extra/festival/PKGBUILD
extra/ffmpeg/PKGBUILD
extra/gecko-sharp-2.0/PKGBUILD
extra/gimp-gap/PKGBUILD
extra/gmetadom/PKGBUILD
extra/gnome-speech/PKGBUILD
extra/gnome-vfsmm/PKGBUILD
extra/gnutls/PKGBUILD
extra/graphite/PKGBUILD
extra/i8kutils/PKGBUILD
extra/id3/PKGBUILD
extra/java-access-bridge/PKGBUILD
extra/kdelibs/PKGBUILD
extra/koffice/PKGBUILD
extra/ladspa/PKGBUILD
extra/libcddb/PKGBUILD
extra/libcroco/PKGBUILD
extra/libdc1394/PKGBUILD
extra/libdca/PKGBUILD
extra/libgee/PKGBUILD
extra/libglademm/PKGBUILD
extra/libgnomecanvasmm/PKGBUILD
extra/libsigsegv/PKGBUILD
extra/libstdc++5/PKGBUILD
extra/libwebkit/PKGBUILD
extra/libytnef/PKGBUILD
extra/lua/PKGBUILD
extra/mcpp/PKGBUILD
extra/metalog/PKGBUILD
extra/mp3wrap/PKGBUILD
extra/mt-st/PKGBUILD
extra/naim/PKGBUILD
extra/ocaml/PKGBUILD
extra/oxine/PKGBUILD
extra/php/PKGBUILD
extra/poppler/PKGBUILD
extra/pstoedit/PKGBUILD
extra/qt/PKGBUILD
extra/speex/PKGBUILD
extra/sweep/PKGBUILD
extra/t1lib/PKGBUILD
extra/taglib-extras/PKGBUILD
extra/unixodbc/PKGBUILD
extra/wireshark/PKGBUILD
extra/ypbind-mt/PKGBUILD
gnome-unstable/caribou/PKGBUILD
gnome-unstable/clutter/PKGBUILD
gnome-unstable/cogl/PKGBUILD
gnome-unstable/dconf/PKGBUILD
gnome-unstable/empathy/PKGBUILD
gnome-unstable/empathy/empathy.install
gnome-unstable/eog/PKGBUILD
gnome-unstable/evolution-data-server/PKGBUILD
gnome-unstable/evolution/PKGBUILD
gnome-unstable/folks/PKGBUILD
gnome-unstable/gconf/PKGBUILD
gnome-unstable/gdm/PKGBUILD
gnome-unstable/gdm/fix_external_program_directories.patch
gnome-unstable/glib-networking/PKGBUILD
gnome-unstable/glib2/PKGBUILD
gnome-unstable/gnome-color-manager/PKGBUILD
gnome-unstable/gnome-contacts/PKGBUILD
gnome-unstable/gnome-desktop/PKGBUILD
gnome-unstable/gnome-keyring/PKGBUILD
gnome-unstable/gnome-menus/PKGBUILD
gnome-unstable/gnome-online-accounts/PKGBUILD
gnome-unstable/gnome-panel/PKGBUILD
gnome-unstable/gnome-power-manager/PKGBUILD
gnome-unstable/gnome-screensaver/PKGBUILD
gnome-unstable/gnome-session/PKGBUILD
gnome-unstable/gnome-settings-daemon/PKGBUILD
gnome-unstable/gnome-shell/PKGBUILD
gnome-unstable/gnome-themes-standard/PKGBUILD
gnome-unstable/gnome-utils/PKGBUILD
gnome-unstable/gtk3/PKGBUILD
gnome-unstable/gtkhtml4/PKGBUILD
gnome-unstable/gtkmm3/PKGBUILD
gnome-unstable/libgdata/PKGBUILD
gnome-unstable/libgnome-keyring/PKGBUILD
gnome-unstable/libsoup/PKGBUILD
gnome-unstable/libwnck3/PKGBUILD
gnome-unstable/mash/PKGBUILD
gnome-unstable/mutter/PKGBUILD
gnome-unstable/mx/PKGBUILD
gnome-unstable/pulseaudio/PKGBUILD
gnome-unstable/pygobject/PKGBUILD
gnome-unstable/pygobject2/PKGBUILD
gnome-unstable/seahorse/PKGBUILD
gnome-unstable/sushi/PKGBUILD
gnome-unstable/totem/PKGBUILD
gnome-unstable/upower/PKGBUILD
gnome-unstable/vala/PKGBUILD
kde-unstable/kdebase-workspace/PKGBUILD
multilib/lib32-glibc/PKGBUILD
multilib/lib32-gtk/PKGBUILD
multilib/lib32-libpng/PKGBUILD
multilib/lib32-mpg123/PKGBUILD
multilib/lib32-nspr/PKGBUILD
multilib/lib32-nss/PKGBUILD
multilib/lib32-nss/add_spi+cacert_ca_certs.patch
multilib/lib32-openssl/PKGBUILD
multilib/libtool-multilib/PKGBUILD
multilib/wine/PKGBUILD
testing/util-linux/PKGBUILD
Diffstat (limited to 'community/libvirt')
-rw-r--r-- | community/libvirt/PKGBUILD | 21 | ||||
-rw-r--r-- | community/libvirt/libvirtd-guests.conf.d | 11 | ||||
-rwxr-xr-x | community/libvirt/libvirtd-guests.rc.d | 107 |
3 files changed, 131 insertions, 8 deletions
diff --git a/community/libvirt/PKGBUILD b/community/libvirt/PKGBUILD index 359665564..53ab97d68 100644 --- a/community/libvirt/PKGBUILD +++ b/community/libvirt/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 54469 2011-08-18 15:07:52Z bluewind $ +# $Id: PKGBUILD 55591 2011-09-14 14:47:29Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: Jonathan Wiersma <archaur at jonw dot org> pkgname=libvirt pkgver=0.9.4 -pkgrel=2 +pkgrel=3 pkgdesc="API for controlling virtualization engines (openvz,kvm,qemu,virtualbox,xen,etc)" arch=('i686' 'x86_64' 'mips64el') url="http://libvirt.org/" @@ -16,18 +16,13 @@ depends=('e2fsprogs' 'gnutls' 'iptables' 'libxml2' 'parted' 'polkit' 'python2' makedepends=('pkgconfig' 'lvm2') optdepends=('bridge-utils: for briged networking (default)' 'dnsmasq: for NAT/DHCP for guests' - 'kernel26-ovz24: for openvz guests' 'kvm' - 'lxc' 'openbsd-netcat: for remote management over ssh' 'qemu' - 'user-mode-linux' - 'virtualbox_bin' - 'virtualbox-ose' - 'xen' 'radvd') options=('emptydirs' '!libtool') backup=('etc/conf.d/libvirtd' + 'etc/conf.d/libvirtd-guests' 'etc/libvirt/libvirtd.conf' 'etc/libvirt/qemu.conf' 'etc/sasl2/libvirt.conf') @@ -35,12 +30,16 @@ install="libvirt.install" source=("http://libvirt.org/sources/$pkgname-$pkgver.tar.gz" libvirtd.rc.d libvirtd.conf.d + libvirtd-guests.rc.d + libvirtd-guests.conf.d openbsd-netcat-default.patch unixperms.patch yajl-2.x.patch) md5sums=('86b411b11bd23d4af20611699f372af7' 'c43244c40a0437038c82089618e7beaa' '3ed0e24f5b5e25bf553f5427d64915e6' + '6f36bf189ef0e5847038787d13535420' + 'bc2971dacdbac967fc3474e50affc345' 'ee7052f3929d5d918236c646a59edebf' 'db95aecdf2ccf3693fef5821cdcb7eba' '5745bb8d0b254abb7a3528c66e03b0f9') @@ -74,8 +73,14 @@ build() { package() { cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="$pkgdir" install + install -D -m755 "$srcdir"/libvirtd.rc.d "$pkgdir"/etc/rc.d/libvirtd install -D -m644 "$srcdir"/libvirtd.conf.d "$pkgdir"/etc/conf.d/libvirtd + + install -D -m755 "$srcdir"/libvirtd-guests.rc.d "$pkgdir"/etc/rc.d/libvirtd-guests + install -D -m644 "$srcdir"/libvirtd-guests.conf.d "$pkgdir"/etc/conf.d/libvirtd-guests + rm -rf $pkgdir/var/run } diff --git a/community/libvirt/libvirtd-guests.conf.d b/community/libvirt/libvirtd-guests.conf.d new file mode 100644 index 000000000..02a933715 --- /dev/null +++ b/community/libvirt/libvirtd-guests.conf.d @@ -0,0 +1,11 @@ +LIBVIRTD_STOP_ACTION=suspend + +#LIBVIRTD_URI="-c qemu+ssh://user@host/system" +LIBVIRTD_URI="" + +#LIBVIRTD_BYPASS_CACHE="--bypass-cache" +LIBVIRTD_BYPASS_CACHE="" + +LIBVIRTD_START_DELAY=0 + +LIBVIRTD_SHUTDOWN_TIMEOUT=3 diff --git a/community/libvirt/libvirtd-guests.rc.d b/community/libvirt/libvirtd-guests.rc.d new file mode 100755 index 000000000..a97a8d9d1 --- /dev/null +++ b/community/libvirt/libvirtd-guests.rc.d @@ -0,0 +1,107 @@ +#!/bin/sh + +. /etc/conf.d/libvirtd-guests +. /etc/rc.conf +. /etc/rc.d/functions + +LIBVIRTD_LISTFILE="/var/state/libvirtd/vm-list" + +# get guest state by name +libvirt_get_guest_state() +{ + virsh $LIBVIRTD_URI dominfo "$1" | grep -E '^State:' | awk '{print $2}' +} + +# list IDs of running guests +libvirt_list() +{ + virsh $LIBVIRTD_URI list | awk 'NR > 2 {print $2}' +} + +# suspend guest by name +libvirt_suspend() +{ + virsh $LIBVIRTD_URI $LIBVIRTD_BYPASS_CACHE managedsave "$1" >/dev/null + timeout=$LIBVIRTD_SHUTDOWN_TIMEOUT + while [ "$timeout" -gt 0 ]; do + sleep 1 + timeout=$((timeout - 1)) + state=`libvirt_get_guest_state "$1"` + [ "x$state" == "xshut" ] && return 0 + done + return 1 +} + +# shutdown guest by name +libvirt_shutdown() +{ + virsh $LIBVIRTD_URI shutdown "$1" >/dev/null + timeout=$LIBVIRTD_SHUTDOWN_TIMEOUT + while [ "$timeout" -gt 0 ]; do + sleep 1 + timeout=$((timeout - 1)) + state=`libvirt_get_guest_state "$1"` + [ "x$state" != "xshut" ] && return 0 + done + return 1 +} + +# start guest by name +libvirt_start() +{ + virsh $LIBVIRTD_URI $LIBVIRTD_BYPASS_CACHE start "$1" >/dev/null +} + +# stop all guests +libvirt_stop_all() +{ + mkdir -p `dirname $LIBVIRTD_LISTFILE` + echo -n >$LIBVIRTD_LISTFILE + for i in `libvirt_list`; do + if [ "x$LIBVIRTD_STOP_ACTION" == "xsuspend" ]; then + stat_busy "Suspending libvirtd/$i guest" + libvirt_suspend "$i" + else + stat_busy "Shutting libvirtd/$i guest down" + libvirt_shutdown "$i" + fi + [ $? -eq 0 ] && stat_done || stat_fail + echo $i >>$LIBVIRTD_LISTFILE + done +} + +# start all guests +libvirt_start_all() +{ + if [ -f $LIBVIRTD_LISTFILE ]; then + for i in `cat $LIBVIRTD_LISTFILE`; do + stat_busy "Starting/resuming libvirtd/$i guest" + libvirt_start "$i" + [ $? -eq 0 ] && { sleep $LIBVIRTD_START_DELAY; stat_done; } || stat_fail + done + fi + rm -f $LIBVIRTD_LISTFILE +} + +# main +LC_ALL=C +LANG=C +case "$1" in + start) + libvirt_start_all + add_daemon libvirtd-guests + ;; + stop) + libvirt_stop_all + rm_daemon libvirtd-guests + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo $"Usage: $0 {start|stop|restart}" + ;; +esac +exit 0 |