On Mon, Apr 18, 2011 at 11:49:17AM +0200, Jiri Denemark wrote: > From: Alan Pevec <apevec@xxxxxxxxxx> > > 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list