[libvirt] [PATCH v2] Experimental libvirtd upstart job

Daniel P. Berrange berrange at redhat.com
Mon Apr 18 12:55:34 UTC 2011


On Mon, Apr 18, 2011 at 11:49:17AM +0200, Jiri Denemark wrote:
> From: Alan Pevec <apevec at redhat.com>
> 
> To install it, disable libvirtd sysv initscript:
>     chkconfig libvirtd off
>     service libvirtd stop
> 
> and enable libvirtd upstart job:
>     cp  /usr/share/doc/libvirt-*/libvirtd.upstart \
>         /etc/init/libvirtd.conf
>     initctl reload-configuration
>     initctl start libvirtd
> 
> Test:
>     initctl status libvirtd
> libvirtd start/running, process 3929
>     killall -9 libvirtd
>     initctl status libvirtd
> libvirtd start/running, process 4047
> 
> I looked into the possibility to use the upstart script from Ubuntu or
> at least getting inspiration from it but that's not possible. "expect
> daemon" is a nice thing but it only works if the process is defined with
> exec stanza instead of script ... no script. Unfortunately, with exec
> stanza environment variables can only be set within upstart script
> (i.e., configuration in /etc/sysconfig/libvirtd can't work). Hence, we
> need to use script stanza, source sysconfig, and execute libvirtd
> without --daemon. For similar reasons we can't use limit stanza and need
> to handle DAEMON_COREFILE_LIMIT in job's script.
> ---
> Notes:
>     Version 2:
>     - I took Allan's script and modified it a bit
>     - DAEMON_COREFILE_LIMIT from sysconfig works
>     - PID file handling limited to just removing it
> 
>  daemon/Makefile.am      |    1 +
>  daemon/libvirtd.upstart |   46 ++++++++++++++++++++++++++++++++++++++++++++++
>  libvirt.spec.in         |    1 +
>  3 files changed, 48 insertions(+), 0 deletions(-)
>  create mode 100644 daemon/libvirtd.upstart
> 
> diff --git a/daemon/Makefile.am b/daemon/Makefile.am
> index cacec1c..af71188 100644
> --- a/daemon/Makefile.am
> +++ b/daemon/Makefile.am
> @@ -26,6 +26,7 @@ EXTRA_DIST =						\
>  	remote_generate_stubs.pl			\
>  	libvirtd.conf					\
>  	libvirtd.init.in				\
> +	libvirtd.upstart				\
>  	libvirtd.policy-0				\
>  	libvirtd.policy-1				\
>  	libvirtd.sasl					\
> diff --git a/daemon/libvirtd.upstart b/daemon/libvirtd.upstart
> new file mode 100644
> index 0000000..fd1d951
> --- /dev/null
> +++ b/daemon/libvirtd.upstart
> @@ -0,0 +1,46 @@
> +# libvirtd upstart job
> +#
> +# XXX wait for rc to get all dependent initscripts started
> +# from sysv libvirtd initscript: Required-Start: $network messagebus
> +start on stopped rc RUNLEVEL=[345]
> +stop on runlevel [!345]
> +
> +respawn
> +
> +script
> +    LIBVIRTD_CONFIG=
> +    LIBVIRTD_ARGS=
> +    KRB5_KTNAME=/etc/libvirt/krb5.tab
> +
> +    if [ -f /etc/sysconfig/libvirtd ]; then
> +        . /etc/sysconfig/libvirtd
> +    fi
> +
> +    export QEMU_AUDIO_DRV
> +    export SDL_AUDIODRIVER
> +    export KRB5_KTNAME
> +
> +    LIBVIRTD_CONFIG_ARGS=
> +    if [ -n "$LIBVIRTD_CONFIG" ]; then
> +        LIBVIRTD_CONFIG_ARGS="--config $LIBVIRTD_CONFIG"
> +    fi
> +
> +    # DAEMON_COREFILE_LIMIT from /etc/sysconfig/libvirtd is not handled
> +    # automatically
> +    if [ -n "$DAEMON_COREFILE_LIMIT" ]; then
> +        ulimit -c "$DAEMON_COREFILE_LIMIT"
> +    fi
> +
> +    # Clean up a pidfile that might be left around
> +    rm -f /var/run/libvirtd.pid
> +
> +    mkdir -p /var/cache/libvirt
> +    rm -rf /var/cache/libvirt/*
> +
> +    exec /usr/sbin/libvirtd $LIBVIRTD_CONFIG_ARGS $LIBVIRTD_ARGS
> +end script
> +
> +post-stop script
> +    rm -f $PIDFILE
> +    rm -rf /var/cache/libvirt/*
> +end script
> diff --git a/libvirt.spec.in b/libvirt.spec.in
> index 4162fba..bf6b9df 100644
> --- a/libvirt.spec.in
> +++ b/libvirt.spec.in
> @@ -895,6 +895,7 @@ fi
>  %{_sysconfdir}/libvirt/nwfilter/*.xml
>  
>  %{_sysconfdir}/rc.d/init.d/libvirtd
> +%doc daemon/libvirtd.upstart
>  %config(noreplace) %{_sysconfdir}/sysconfig/libvirtd
>  %config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
>  %if %{with_dtrace}

ACK.



Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list