[libvirt] [PATCH V5 0/4] Support for multiple IP addresses using lists
by Stefan Berger
This patch series builds on the previously posted patch series
https://www.redhat.com/archives/libvir-list/2011-October/msg00912.html
and introduces the capability to assign a list to a variable and
have multiple rules instantiated, one for each item in the list.
This means, that if for example a variable like IP has been assigned
a list of values
IP = [1.2.3.4, 5.6.7.8, 10.0.0.1]
it will instantiate 3 rules, which in turn allows us to build filters
that can evaluate multiple possible values per field, i.e., allow
the filtering for multiple IP addresses (per interface).
v5:
- addressing Eric Blake's comments
v4:
- addressing Daniel Berrange's comments
- changed (default) behavior of iterator
v3:
- following Daniel Berrange's comment regarding how a list of items
should be represented in the XML
v2:
- reimplementation of iterator
- other nits
Regards,
Stefan
13 years
[libvirt] [PATCH V6 00/11] Make inner workings of nwfilters more flexible + extensions
by Stefan Berger
The following series of patches re-does some of the inner workings
of nwfilters with the goal to enable users to write filters that have other
than the system-known chains supported right now ('root','arp','rarp','ipv4'
and 'ipv6'). Ideally users should be able to provide a chain name in the
chains XML attribute and either be able to jump to it as an 'action' or
have the chain created automatically as it is the case right now for those
chains enumerated before. The latter is now added in this patch series
as well.
I am first introducing internal priorities for the chains mentioned above so
that their creation can be made more flexible -- currently their creation and
the order in which they are accessed is hardcoded. This largely does away
with the hardcoded stuff. All assigned priorities have negative values.
Later on the priorities for the chains are made accessible via an XML
attribute.
Further, filters will be automatically accessed from the (ebtables)
interface 'root' chain using the prefix of the name of the chain. As an
example, the following filter will be accessed from the root chain for 'arp'
packets since its name 'arp-xyz' has the prefix 'arp'.
<filter name='test-arp-xyz' chain='arp-xyz' priority='-650'>
<uuid>94abeecc-c956-0ac8-1f49-a06ee8995688</uuid>
<rule action='accept' direction='out' priority='100'>
<arp opcode='Request_Reverse' arpsrcmacaddr='$MAC' arpdstmacaddr='$MAC'
arpsrcipaddr='0.0.0.0' arpdstipaddr='0.0.0.0'/>
</rule>
<rule action='accept' direction='inout' priority='500'/>
</filter>
In another step the priorities of rules is extended to also allow negativ
values. This then allows the creation of rules and chains in the interface
'root' chain to be mixed so that the following layout becomes possible:
Bridge chain: libvirt-I-vnet0, entries: 6, policy: ACCEPT
-p IPv4 -j I-vnet0-ipv4
-p ARP -j I-vnet0-arp
-p ARP -j ACCEPT
-p 0x8035 -j I-vnet0-rarp
-p 0x835 -j ACCEPT
-j DROP
In the above list of rules the '-p ARP -j ACCEPT' can now be found in
between the 'jumps' to protocol-specific chains, which allows for more
efficient rule evaluation.
I did testing with the test cases in libvirt-tck as well as those in
the tests/ directory and did not see any regressions.
v6:
- addresses Eric Blake's comments on patches 2, 6, 7, 9 + added documentation
patch (11)
v5:
- addressed Eric Blake's comments
v4:
- assign priority to chain according to name prefix
- change default (internal) priorities of chains (by +200)
- fix memory leak
Regards,
Stefan
13 years
Re: [libvirt] [libvirt-glib] Adjust example to pygobject-3.0
by Guido Günther
Hi,
attached patch makes the example work again with recent pygobject-3.0
which doesn't allow to "import gtk" anymore.
Cheers,
-- Guido
On Thu, Nov 17, 2011 at 10:36:23PM +0100, Guido Günther wrote:
> ---
> examples/event-test.py | 7 +++----
> 1 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/examples/event-test.py b/examples/event-test.py
> index 33e7c73..4b06235 100644
> --- a/examples/event-test.py
> +++ b/examples/event-test.py
> @@ -1,5 +1,5 @@
>
> -import gtk
> +from gi.repository import Gtk
> import libvirt
> import getopt
> import sys
> @@ -47,16 +47,15 @@ def main():
>
> print "Using uri:" + uri
>
> - LibvirtGLib.init("")
> + LibvirtGLib.init(0, "")
> LibvirtGLib.event_register()
> -# libvirtglib.eventRegister()
> vc = libvirt.open(uri)
>
> #Add 2 callbacks to prove this works with more than just one
> vc.domainEventRegister(myDomainEventCallback1,None)
> vc.domainEventRegister(myDomainEventCallback2,None)
>
> - gtk.main()
> + Gtk.main()
>
> if __name__ == "__main__":
> main()
> --
> 1.7.7.1
13 years
[libvirt] [PATCH v5] Add support for systemd init service
by Daniel P. Berrange
From: "Daniel P. Berrange" <berrange(a)redhat.com>
This patch adds support for a systemd init service for libvirtd
and libvirt-guests. The libvirtd.service is *not* written to use
socket activation, since we want libvirtd to start on boot so it
can do guest auto-start.
The libvirt-guests.service is pretty lame, just exec'ing the
original init script for now. Ideally we would factor out the
functionality, into some shared tool.
Instead of
./configure --with-init-script=redhat
You can now do
./configure --with-init-script=systemd
Or better still:
./configure --with-init-script=systemd+redhat
We can also now support install of the upstart init script
In v5:
- Actually include the changes to configure.ac I mentioned
in v4.
* configure.ac: Add systemd, and systemd+redhat options to
--with-init-script option
* daemon/Makefile.am: Install systemd services
* daemon/libvirtd.sysconf: Add note about unused env variable
with systemd
* daemon/libvirtd.service.in: libvirtd systemd service unit
* libvirt.spec.in: Add scripts to installing systemd services
and migrating from legacy init scripts
* tools/Makefile.am: Install systemd services
* tools/libvirt-guests.init.sh: Rename to tools/libvirt-guests.init.in
* tools/libvirt-guests.service.in: systemd service unit
---
configure.ac | 46 ++++++++++++++----
daemon/.gitignore | 1 +
daemon/Makefile.am | 98 +++++++++++++++++++++++++++++---------
daemon/libvirtd.service.in | 20 ++++++++
daemon/libvirtd.sysconf | 3 +
libvirt.spec.in | 93 +++++++++++++++++++++++++++++++++++-
po/POTFILES.in | 2 +-
tools/Makefile.am | 61 +++++++++++++++++++-----
tools/libvirt-guests.service.in | 13 +++++
9 files changed, 288 insertions(+), 49 deletions(-)
create mode 100644 daemon/libvirtd.service.in
create mode 100644 tools/libvirt-guests.service.in
diff --git a/configure.ac b/configure.ac
index 3b7535e..58c2740 100644
--- a/configure.ac
+++ b/configure.ac
@@ -329,16 +329,41 @@ dnl init script flavor
dnl
AC_MSG_CHECKING([for init script flavor])
AC_ARG_WITH([init-script],
- [AC_HELP_STRING([--with-init-script=@<:@redhat|auto|none@:>@],
- [Style of init script to install @<:@default=auto@:>@])])
-if test "x$with_init_script" = "x" || test "x$with_init_script" = "xauto"; then
- if test "$cross_compiling" = yes || test ! -f /etc/redhat-release; then
- with_init_script=none
- else
- with_init_script=redhat
- fi
-fi
-AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_RED_HAT], test x$with_init_script = xredhat)
+ [AC_HELP_STRING([--with-init-script@<:@=STYLE@:>@],
+ [Style of init script to install: redhat, systemd, systemd+redhat,
+ upstart, auto, none @<:@default=auto@:>@])],[],[with_init_script=check])
+init_redhat=no
+init_systemd=no
+init_upstart=no
+case "$with_init_script" in
+ systemd+redhat)
+ init_redhat=yes
+ init_systemd=yes
+ ;;
+ systemd)
+ init_systemd=yes
+ ;;
+ upstart)
+ init_upstart=yes
+ ;;
+ redhat)
+ init_redhat=yes
+ ;;
+ none)
+ ;;
+ check)
+ if test "$cross_compiling" != yes && test -f /etc/redhat-release; then
+ init_redhat=yes
+ with_init_script=redhat
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR([Unknown initscript flavour $with_init_script])
+ ;;
+esac
+AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_RED_HAT], test "$init_redhat" = "yes")
+AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_UPSTART], test "$init_upstart" = "yes")
+AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_SYSTEMD], test "$init_systemd" = "yes")
AC_MSG_RESULT($with_init_script)
dnl RHEL-5 has a peculiar version of Xen, which requires some special casing
@@ -2680,6 +2705,7 @@ AC_MSG_NOTICE([ Readline: $lv_use_readline])
AC_MSG_NOTICE([ Python: $with_python])
AC_MSG_NOTICE([ DTrace: $with_dtrace])
AC_MSG_NOTICE([ XML Catalog: $XML_CATALOG_FILE])
+AC_MSG_NOTICE([ Init script: $with_init_script])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([Privileges])
AC_MSG_NOTICE([])
diff --git a/daemon/.gitignore b/daemon/.gitignore
index ab3d093..2873143 100644
--- a/daemon/.gitignore
+++ b/daemon/.gitignore
@@ -7,6 +7,7 @@ Makefile.in
libvirt_qemud
libvirtd
libvirtd.init
+libvirtd.service
libvirtd*.logrotate
libvirtd.8
libvirtd.8.in
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index 59db217..9ccbb5b 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -174,22 +174,25 @@ policyfile = libvirtd.policy-1
endif
endif
-install-data-local: install-init install-data-sasl install-data-polkit \
- install-logrotate
+install-data-local: install-init-redhat install-init-systemd install-init-upstart \
+ install-data-sasl install-data-polkit \
+ install-logrotate install-sysctl
mkdir -p $(DESTDIR)$(localstatedir)/log/libvirt
mkdir -p $(DESTDIR)$(localstatedir)/run/libvirt
mkdir -p $(DESTDIR)$(localstatedir)/lib/libvirt
-uninstall-local:: uninstall-init uninstall-data-sasl uninstall-data-polkit
+uninstall-local:: uninstall-init-redhat uninstall-init-systemd uninstall-init-upstart \
+ uninstall-data-sasl uninstall-data-polkit \
+ uninstall-sysctl
rmdir $(DESTDIR)$(localstatedir)/log/libvirt || :
rmdir $(DESTDIR)$(localstatedir)/run/libvirt || :
rmdir $(DESTDIR)$(localstatedir)/lib/libvirt || :
if HAVE_POLKIT
-install-data-polkit:: install-init
+install-data-polkit::
mkdir -p $(DESTDIR)$(policydir)
$(INSTALL_DATA) $(srcdir)/$(policyfile) $(DESTDIR)$(policydir)/org.libvirt.unix.policy
-uninstall-data-polkit:: install-init
+uninstall-data-polkit::
rm -f $(DESTDIR)$(policydir)/org.libvirt.unix.policy
else
install-data-polkit::
@@ -238,25 +241,71 @@ install-logrotate: $(LOGROTATE_CONFS)
$(INSTALL_DATA) libvirtd.lxc.logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc
$(INSTALL_DATA) libvirtd.uml.logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
-if LIBVIRT_INIT_SCRIPT_RED_HAT
-install-init: libvirtd.init
- mkdir -p $(DESTDIR)$(sysconfdir)/rc.d/init.d \
- $(DESTDIR)$(sysconfdir)/sysconfig \
- $(DESTDIR)$(sysconfdir)/sysctl.d
- $(INSTALL_SCRIPT) libvirtd.init \
- $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd
+install-sysconfig:
+ mkdir -p $(DESTDIR)$(sysconfdir)/sysconfig
$(INSTALL_DATA) $(srcdir)/libvirtd.sysconf \
$(DESTDIR)$(sysconfdir)/sysconfig/libvirtd
+uninstall-sysconfig:
+ rm -f $(DESTDIR)$(sysconfdir)/sysconfig/libvirtd
+
+install-sysctl:
+ mkdir -p $(DESTDIR)$(sysconfdir)/sysctl.d
$(INSTALL_DATA) $(srcdir)/libvirtd.sysctl \
$(DESTDIR)$(sysconfdir)/sysctl.d/libvirtd
-uninstall-init:
- rm -f $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd \
- $(DESTDIR)$(sysconfdir)/sysconfig/libvirtd \
- $(DESTDIR)$(sysconfdir)/sysctl.d/libvirtd
+uninstall-sysctl:
+ rm -f $(DESTDIR)$(sysconfdir)/sysctl.d/libvirtd
+
+if LIBVIRT_INIT_SCRIPT_RED_HAT
BUILT_SOURCES += libvirtd.init
+install-init-redhat: install-sysconfig libvirtd.init
+ mkdir -p $(DESTDIR)$(sysconfdir)/rc.d/init.d
+ $(INSTALL_SCRIPT) libvirtd.init \
+ $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd
+
+uninstall-init-redhat: uninstall-sysconfig
+ rm -f $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd
+else
+install-init-redhat:
+uninstall-init-redhat:
+endif # LIBVIRT_INIT_SCRIPT_RED_HAT
+
+
+if LIBVIRT_INIT_SCRIPT_UPSTART
+
+install-init-upstart: install-sysconfig
+ mkdir -p $(DESTDIR)$(sysconfdir)/event.d
+ $(INSTALL_SCRIPT) libvirtd.upstart \
+ $(DESTDIR)$(sysconfdir)/event.d/libvirtd
+
+uninstall-init-upstart: uninstall-sysconfig
+ rm -f $(DESTDIR)$(sysconfdir)/event.d/libvirtd
+else
+install-init-upstart:
+uninstall-init-upstart:
+endif # LIBVIRT_INIT_SCRIPT_UPSTART
+
+
+EXTRA_DIST += libvirtd.service.in
+if LIBVIRT_INIT_SCRIPT_SYSTEMD
+
+SYSTEMD_UNIT_DIR = /lib/systemd/system
+BUILT_SOURCES += libvirtd.service
+
+install-init-systemd: install-sysconfig libvirtd.service
+ mkdir -p $(DESTDIR)$(SYSTEMD_UNIT_DIR)
+ $(INSTALL_SCRIPT) libvirtd.service \
+ $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.service
+
+uninstall-init-systemd: uninstall-sysconfig
+ rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/libvirtd.service
+else
+install-init-systemd:
+uninstall-init-systemd:
+endif # LIBVIRT_INIT_SCRIPT_SYSTEMD
+
libvirtd.init: libvirtd.init.in $(top_builddir)/config.status
$(AM_V_GEN)sed \
-e s!\@localstatedir\@!@localstatedir@!g \
@@ -266,18 +315,21 @@ libvirtd.init: libvirtd.init.in $(top_builddir)/config.status
chmod a+x $@-t && \
mv $@-t $@
+libvirtd.service: libvirtd.service.in $(top_builddir)/config.status
+ $(AM_V_GEN)sed \
+ -e s!\@localstatedir\@!@localstatedir@!g \
+ -e s!\@sbindir\@!@sbindir@!g \
+ -e s!\@sysconfdir\@!@sysconfdir@!g \
+ < $< > $@-t && \
+ chmod a+x $@-t && \
+ mv $@-t $@
+
+
check-local:
$(AM_V_GEN)if test -x '$(AUGPARSE)'; then \
'$(AUGPARSE)' -I $(srcdir) $(srcdir)/test_libvirtd.aug; \
fi
-else
-
-install-init:
-uninstall-init:
-libvirtd.init:
-
-endif # LIBVIRT_INIT_SCRIPT_RED_HAT
# This must be added last, since functions it provides/replaces
# are used by nearly every other library.
diff --git a/daemon/libvirtd.service.in b/daemon/libvirtd.service.in
new file mode 100644
index 0000000..9661428
--- /dev/null
+++ b/daemon/libvirtd.service.in
@@ -0,0 +1,20 @@
+# NB we don't use socket activation. When libvirtd starts it will
+# spawn any virtual machines registered for autostart. We want this
+# to occur on every boot, regardless of whether any client connects
+# to a socket. Thus socket activation doesn't have any benefit
+
+[Unit]
+Description=Virtualization daemon
+After=syslog.target
+After=udev.target
+After=avahi.target
+After=dbus.target
+Before=libvirt-guests.service
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/libvirtd
+ExecStart=@sbindir@/libvirtd $LIBVIRTD_ARGS
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
diff --git a/daemon/libvirtd.sysconf b/daemon/libvirtd.sysconf
index b730c5e..ab273c8 100644
--- a/daemon/libvirtd.sysconf
+++ b/daemon/libvirtd.sysconf
@@ -1,4 +1,7 @@
# Override the default config file
+# NOTE: This setting is no longer honoured if using
+# systemd. Set '--config /etc/libvirt/libvirtd.conf'
+# in LIBVIRTD_ARGS instead.
#LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
# Listen for TCP/IP connections
diff --git a/libvirt.spec.in b/libvirt.spec.in
index d4e3e17..ce541a7 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -78,6 +78,7 @@
%define with_dtrace 0%{!?_without_dtrace:0}
%define with_cgconfig 0%{!?_without_cgconfig:0}
%define with_sanlock 0%{!?_without_sanlock:0}
+%define with_systemd 0%{!?_without_systemd:0}
# Non-server/HV driver defaults which are always enabled
%define with_python 0%{!?_without_python:1}
@@ -111,6 +112,11 @@
%define with_hyperv 0
%endif
+# Although earlier Fedora has systemd, libvirt still used sysvinit
+%if 0%{?fedora} >= 17
+%define with_systemd 1
+%endif
+
# RHEL-5 has restricted QEMU to x86_64 only and is too old for LXC
%if 0%{?rhel} == 5
%ifnarch x86_64
@@ -329,7 +335,9 @@ Requires: libcgroup
# All build-time requirements
BuildRequires: python-devel
-
+%if %{with_systemd}
+BuildRequires: systemd-units
+%endif
%if %{with_xen}
BuildRequires: xen-devel
%endif
@@ -474,6 +482,13 @@ BuildRequires: nfs-utils
# Fedora build root suckage
BuildRequires: gawk
+%if %{with_systemd}
+Requires(post): systemd-units
+Requires(post): systemd-sysv
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+%endif
+
%description
Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes). The main package includes
@@ -696,6 +711,13 @@ of recent versions of Linux (and other OSes).
%define with_packager --with-packager="%{who}, %{when}, %{where}"
%define with_packager_version --with-packager-version="%{release}"
+%if %{with_systemd}
+# We use 'systemd+redhat', so if someone installs upstart or
+# legacy init scripts, they can still start libvirtd, etc
+%define init_scripts --with-init_script=systemd+redhat
+%else
+%define init_scripts --with-init_script=redhat
+%endif
%configure %{?_without_xen} \
%{?_without_qemu} \
@@ -736,7 +758,7 @@ of recent versions of Linux (and other OSes).
%{with_packager_version} \
--with-qemu-user=%{qemu_user} \
--with-qemu-group=%{qemu_group} \
- --with-init-script=redhat \
+ %{init_scripts} \
--with-remote-pid-file=%{_localstatedir}/run/libvirtd.pid
make %{?_smp_mflags}
gzip -9 ChangeLog
@@ -744,7 +766,7 @@ gzip -9 ChangeLog
%install
rm -fr %{buildroot}
-%makeinstall
+%makeinstall SYSTEMD_UNIT_DIR=%{_unitdir}
for i in domain-events/events-c dominfo domsuspend hellolibvirt openauth python xml/nwfilter systemtap
do
(cd examples/$i ; make clean ; rm -rf .deps .libs Makefile Makefile.in)
@@ -893,6 +915,13 @@ do
done
%endif
+%if %{with_systemd}
+if [ $1 -eq 1 ] ; then
+ # Initial installation
+ /bin/systemctl enable libvirtd.service >/dev/null 2>&1 || :
+ /bin/systemctl enable cgconfig.service >/dev/null 2>&1 || :
+fi
+%else
%if %{with_cgconfig}
# Starting with Fedora 16, systemd automounts all cgroups, and cgconfig is
# no longer a necessary service.
@@ -908,25 +937,64 @@ if [ "$1" -ge "1" ]; then
/sbin/service libvirtd condrestart > /dev/null 2>&1
fi
%endif
+%endif
%preun
%if %{with_libvirtd}
+%if %{with_systemd}
+if [ $1 -eq 0 ] ; then
+ # Package removal, not upgrade
+ /bin/systemctl --no-reload disable libvirtd.service > /dev/null 2>&1 || :
+ /bin/systemctl stop libvirtd.service > /dev/null 2>&1 || :
+fi
+%else
if [ $1 = 0 ]; then
/sbin/service libvirtd stop 1>/dev/null 2>&1
/sbin/chkconfig --del libvirtd
fi
%endif
+%endif
+
+%postun
+%if %{with_libvirtd}
+%if %{with_systemd}
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+ # Package upgrade, not uninstall
+ /bin/systemctl try-restart libvirtd.service >/dev/null 2>&1 || :
+fi
+%endif
+%endif
+
+%if %{with_libvirtd}
+%if %{with_systemd}
+%triggerun -- libvirt < 0.9.4
+%{_bindir}/systemd-sysv-convert --save libvirtd >/dev/null 2>&1 ||:
+
+# If the package is allowed to autostart:
+/bin/systemctl --no-reload enable libvirtd.service >/dev/null 2>&1 ||:
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del libvirtd >/dev/null 2>&1 || :
+/bin/systemctl try-restart libvirtd.service >/dev/null 2>&1 || :
+%endif
+%endif
%preun client
+%if %{with_systemd}
+%else
if [ $1 = 0 ]; then
/sbin/chkconfig --del libvirt-guests
rm -f /var/lib/libvirt/libvirt-guests
fi
+%endif
%post client
/sbin/ldconfig
+%if %{with_systemd}
+%else
/sbin/chkconfig --add libvirt-guests
if [ $1 -ge 1 ]; then
level=$(/sbin/runlevel | /bin/cut -d ' ' -f 2)
@@ -937,9 +1005,22 @@ if [ $1 -ge 1 ]; then
/sbin/service libvirt-guests start > /dev/null 2>&1 || true
fi
fi
+%endif
%postun client -p /sbin/ldconfig
+%if %{with_systemd}
+%triggerun client -- libvirt < 0.9.4
+%{_bindir}/systemd-sysv-convert --save libvirt-guests >/dev/null 2>&1 ||:
+
+# If the package is allowed to autostart:
+/bin/systemctl --no-reload enable libvirt-guests.service >/dev/null 2>&1 ||:
+
+# Run these because the SysV package being removed won't do them
+/sbin/chkconfig --del libvirt-guests >/dev/null 2>&1 || :
+/bin/systemctl try-restart libvirt-guests.service >/dev/null 2>&1 || :
+%endif
+
%if %{with_libvirtd}
%files
%defattr(-, root, root)
@@ -957,6 +1038,9 @@ fi
%{_sysconfdir}/libvirt/nwfilter/*.xml
%{_sysconfdir}/rc.d/init.d/libvirtd
+%if %{with_systemd}
+%{_unitdir}/libvirtd.service
+%endif
%doc daemon/libvirtd.upstart
%config(noreplace) %{_sysconfdir}/sysconfig/libvirtd
%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
@@ -1113,6 +1197,9 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd
%{_datadir}/libvirt/cpu_map.xml
%{_sysconfdir}/rc.d/init.d/libvirt-guests
+%if %{with_systemd}
+%{_unitdir}/libvirt-guests.service
+%endif
%config(noreplace) %{_sysconfdir}/sysconfig/libvirt-guests
%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 810cf68..74f5513 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -152,5 +152,5 @@ src/xenapi/xenapi_utils.c
src/xenxs/xen_sxpr.c
src/xenxs/xen_xm.c
tools/console.c
-tools/libvirt-guests.init.sh
+tools/libvirt-guests.init.in
tools/virsh.c
diff --git a/tools/Makefile.am b/tools/Makefile.am
index c96c7d9..c735398 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -25,7 +25,6 @@ EXTRA_DIST = \
virt-sanlock-cleanup.in \
virt-sanlock-cleanup.8 \
virsh.pod \
- libvirt-guests.init.sh \
libvirt-guests.sysconf
DISTCLEANFILES =
@@ -153,21 +152,32 @@ install-data-local: install-init
uninstall-local: uninstall-init
+install-sysconfig:
+ mkdir -p $(DESTDIR)$(sysconfdir)/sysconfig
+ $(INSTALL_DATA) $(srcdir)/libvirt-guests.sysconf \
+ $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests
+
+uninstall-sysconfig:
+ rm -f $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests
+
+EXTRA_DIST += libvirt-guests.init.sh
+
if LIBVIRT_INIT_SCRIPT_RED_HAT
-install-init: libvirt-guests.init
+install-init: libvirt-guests.init install-sysconfig
mkdir -p $(DESTDIR)$(sysconfdir)/rc.d/init.d
$(INSTALL_SCRIPT) libvirt-guests.init \
$(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirt-guests
- mkdir -p $(DESTDIR)$(sysconfdir)/sysconfig
- $(INSTALL_DATA) $(srcdir)/libvirt-guests.sysconf \
- $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests
-uninstall-init:
- rm -f $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirt-guests \
- $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests
+uninstall-init: install-sysconfig
+ rm -f $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirt-guests
BUILT_SOURCES += libvirt-guests.init
+else
+install-init:
+uninstall-init:
+endif # LIBVIRT_INIT_SCRIPT_RED_HAT
+
libvirt-guests.init: libvirt-guests.init.sh $(top_builddir)/config.status
$(AM_V_GEN)sed \
-e 's!\@PACKAGE\@!$(PACKAGE)!g' \
@@ -179,11 +189,38 @@ libvirt-guests.init: libvirt-guests.init.sh $(top_builddir)/config.status
< $< > $@-t && \
chmod a+x $@-t && \
mv $@-t $@
+
+
+
+EXTRA_DIST += libvirt-guests.service.in
+
+if LIBVIRT_INIT_SCRIPT_SYSTEMD
+install-systemd: libvirt-guests.service install-sysconfig
+ mkdir -p $(DESTDIR)$(sysconfdir)/rc.d/systemd.d
+ $(INSTALL_SCRIPT) libvirt-guests.service \
+ $(DESTDIR)$(sysconfdir)/rc.d/systemd.d/libvirt-guests
+
+uninstall-systemd: install-sysconfig
+ rm -f $(DESTDIR)$(sysconfdir)/rc.d/systemd.d/libvirt-guests
+
+BUILT_SOURCES += libvirt-guests.service
+
else
-install-init:
-uninstall-init:
-libvirt-guests.init:
-endif # LIBVIRT_INIT_SCRIPT_RED_HAT
+install-systemd:
+uninstall-systemd:
+endif # LIBVIRT_INIT_SCRIPT_SYSTEMD
+
+libvirt-guests.service: libvirt-guests.service.in $(top_builddir)/config.status
+ $(AM_V_GEN)sed \
+ -e 's!\@PACKAGE\@!$(PACKAGE)!g' \
+ -e 's!\@bindir\@!$(bindir)!g' \
+ -e 's!\@localedir\@!$(localedir)!g' \
+ -e 's!\@localstatedir\@!$(localstatedir)!g' \
+ -e 's!\@sbindir\@!$(sbindir)!g' \
+ -e 's!\@sysconfdir\@!$(sysconfdir)!g' \
+ < $< > $@-t && \
+ chmod a+x $@-t && \
+ mv $@-t $@
CLEANFILES = $(bin_SCRIPTS)
diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in
new file mode 100644
index 0000000..bc63e91
--- /dev/null
+++ b/tools/libvirt-guests.service.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Suspend Active Libvirt Guests
+After=syslog.target network.target
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/libvirt-guests
+# Hack just call traditional service until we factor
+# out the code
+ExecStart=/etc/init.d/libvirt-guests start
+ExecStop=/etc/init.d/libvirt-guests stop
+
+[Install]
+WantedBy=multi-user.target
--
1.7.6.4
13 years
[libvirt] [ANNOUNCE] libguestfs webinar TOMORROW (Friday)
by Richard W.M. Jones
I'll be holding a libguestfs live “webinar” tomorrow, Friday,
18th November 2011 at 16:00 UTC.
To convert the date and time to your timezone, do:
date -d '2011-11-17 16:00Z'
The programme will include:
- An introduction to libguestfs features.
- Live demonstrations of guestfish, a Python program, inspection, and
image resizing.
- An overview of major new features in RHEL 6.3.
- The opportunity to ask questions on any technical topic related to
libguestfs.
This is going to be a Webex conference. It's possible, albeit
difficult, to get Webex working on Linux. You will need the Java
plugin for your browser, and there are some other tips on my blog:
https://rwmj.wordpress.com/2011/11/17/libguestfs-web-seminar-this-friday/
The Webex conference link, an accompanying handout, and other details
will be posted to the above URL ^^ shortly before the session starts.
Don't worry if you can't make it or can't get Webex to work, as it
will all be recorded and placed online in an open format as soon as we
can afterwards.
This seminar is sponsored by Red Hat.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/
13 years
[libvirt] [PATCH V4 00/10] Make inner workings of nwfilters more flexible + extensions
by Stefan Berger
The following series of patches re-does some of the inner workings
of nwfilters with the goal to enable users to write filters that have other
than the system-known chains supported right now ('root','arp','rarp','ipv4'
and 'ipv6'). Ideally users should be able to provide a chain name in the
chains XML attribute and either be able to jump to it as an 'action' or
have the chain created automatically as it is the case right now for those
chains enumerated before. The latter is now added in this patch series
as well.
I am first introducing internal priorities for the chains mentioned above so
that their creation can be made more flexible -- currently their creation and
the order in which they are accessed is hardcoded. This largely does away
with the hardcoded stuff. All assigned priorities have negative values.
Later on the priorities for the chains are made accessible via an XML
attribute.
Further, filters will be automatically accessed from the (ebtables)
interface 'root' chain using the prefix of the name of the chain. As an
example, the following filter will be accessed from the root chain for 'arp'
packets since its name 'arp-xyz' has the prefix 'arp'.
<filter name='test-arp-xyz' chain='arp-xyz' priority='-650'>
<uuid>94abeecc-c956-0ac8-1f49-a06ee8995688</uuid>
<rule action='accept' direction='out' priority='100'>
<arp opcode='Request_Reverse' arpsrcmacaddr='$MAC' arpdstmacaddr='$MAC'
arpsrcipaddr='0.0.0.0' arpdstipaddr='0.0.0.0'/>
</rule>
<rule action='accept' direction='inout' priority='500'/>
</filter>
In another step the priorities of rules is extended to also allow negativ
values. This then allows the creation of rules and chains in the interface
'root' chain to be mixed so that the following layout becomes possible:
Bridge chain: libvirt-I-vnet0, entries: 6, policy: ACCEPT
-p IPv4 -j I-vnet0-ipv4
-p ARP -j I-vnet0-arp
-p ARP -j ACCEPT
-p 0x8035 -j I-vnet0-rarp
-p 0x835 -j ACCEPT
-j DROP
In the above list of rules the '-p ARP -j ACCEPT' can now be found in
between the 'jumps' to protocol-specific chains, which allows for more
efficient rule evaluation.
I did testing with the test cases in libvirt-tck as well as those in
the tests/ directory and did not see any regressions.
v4:
- assign priority to chain according to name prefix
- change default (internal) priorities of chains (by +200)
- fix memory leak
Regards,
Stefan
13 years
[libvirt] New feature for libvirt
by Amit Tewari
Hi,
I wanted to suggest a new feature development in libvirt network filter.
Currently in libvirt network filter there is no support for ip aliasing,
but we want to add this feature so that libvirt learns multiple ip
address for a virtual machine.
With this feature we will be able to get no-ip-spoofing filter works on
machine with ip aliasing.
Currently if we apply no-ip-spoofing filter on a virtual machine with ip
aliasing then only one ip address is earned by libvirt ,due to this
other aliased ip address packets are not allowed to route out of the
machine.
With this new feature libvirt network filter will work on machine with
multiple ip addresses on a interface(ip aliasing)
Regards
Amit Tewari
DISCLAIMER:
-----------------------------------------------------------------------------------------------------------------------
The contents of this e-mail and any attachment(s) are confidential and
intended
for the named recipient(s) only.
It shall not attach any liability on the originator or NECHCL or its
affiliates. Any views or opinions presented in
this email are solely those of the author and may not necessarily reflect the
opinions of NECHCL or its affiliates.
Any form of reproduction, dissemination, copying, disclosure, modification,
distribution and / or publication of
this message without the prior written consent of the author of this e-mail is
strictly prohibited. If you have
received this email in error please delete it and notify the sender
immediately. .
-----------------------------------------------------------------------------------------------------------------------
13 years
[libvirt] Upgrade-problems from qemu-0.14.1 + libvirt-0.8.4 to qemu-0.15.1 + libvirt-0.9.6: Why I think multifunction=on is a bad idea...
by Philipp Hahn
Hello,
this mail is something between a bug report and a warning to other users of
libvirt, before they also experience the problem I encountered today:
I just hat the painful experience of trying to install some newer versions of
qemu(-kvm) and libvirt on a system with many managedsave-states and many
snapshots. They are now all broken because
1. Newer qemu(-kvm) uses iPXE instead of etherboot, which have different ROM
file sizes, which aborts loading the old VM state. So be careful to not
delete your old PXE-ROM images.
2. libvirt defaults to add ',multifuntion=on' to the (in my case) rtl8139
network card and balloon-driver, which produces the "really helpful" message
of
qemu: warning: error while loading state for instance 0x0 of
device '0000:00:03.0/rtl8139'
or
qemu: warning: error while loading state for instance 0x0 of device 'ram'
Nothing you can't fix with installing the old etherboot-qemu package and some
dirty "dd"-hackery on your saved files and snapshot xml files to add an
explicit 'multifunction=off', but hard to diagnose and annoying enough.
So even if the qemu people try to be backward compatible with their VMState
format, libvirt doesn't seem to handle backward compatibility taht good at
the moment.
Perhaps it would help to not (only) store the XML domain configuration for
snapshots and managedsave-files, but the exact qemu-argv string to at least
get libvirt out of any backward incompatible changes when re-constructing the
qemu command line from the XML data.
Sincerely
Philipp
PS: I hope that info helps other people when getting those messages.
--
Philipp Hahn Open Source Software Engineer hahn(a)univention.de
Univention GmbH Linux for Your Business fon: +49 421 22 232- 0
Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99
http://www.univention.de/
13 years
[libvirt] make docs fails on EL5
by Daniel Berteaud
Hi.
I usually build all the latest libvirt version on EL5 (CentOS x86_64),
and, up to libvirt 0.9.3, I could get it to build without major issue,
but starting with libvirt 0.9.4, I cannot get the rpm to build (I'm
using a quite simple plague/mock setup), I always have this error:
make[2]: Entering directory `/builddir/build/BUILD/libvirt-0.9.7/docs'
GEN libvirt-api.xml
GEN html/index.html
GEN devhelp/index.html
./html/libvirt-virterror.html:613: element a: validity error : ID types
already defined
></h3><pre>#define _virSchedParameter</pre><p></p><h3><a name="types"
id="types"
^
./html/libvirt-virterror.html:843: element a: validity error : ID
functions already defined
</pre></div><h3><a name="functions"
id="functions">Functions</a></h3><h3><a name
^
make[2]: *** [html/index.html] Error 4
make[2]: Leaving directory `/builddir/build/BUILD/libvirt-0.9.7/docs'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/builddir/build/BUILD/libvirt-0.9.7'
make: *** [all] Error 2
Can anybody help me with this ?
Regards, Daniel
--
Daniel Berteaud
FIREWALL-SERVICES SARL.
Société de Services en Logiciels Libres
Technopôle Montesquieu
33650 MARTILLAC
Tel : 05 56 64 15 32
Fax : 05 56 64 15 32
Mail: daniel(a)firewall-services.com
Web : http://www.firewall-services.com
13 years