[libvirt] [PATCH v3 22/48] network: introduce virtnetworkd daemon

Christophe de Dinechin dinechin at redhat.com
Tue Jul 30 11:08:53 UTC 2019


Daniel P. Berrangé writes:

> The virtnetworkd daemon will be responsible for providing the network API
> driver functionality. The network driver is still loaded by the main
> libvirtd daemon at this stage, so virtnetworkd must not be running at
> the same time.
>
> Reviewed-by: Andrea Bolognani <abologna at redhat.com>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  .gitignore                          |  4 ++
>  libvirt.spec.in                     |  8 ++++
>  src/network/Makefile.inc.am         | 61 +++++++++++++++++++++++++++++
>  src/network/virtnetworkd.service.in | 25 ++++++++++++
>  4 files changed, 98 insertions(+)
>  create mode 100644 src/network/virtnetworkd.service.in
>
> diff --git a/.gitignore b/.gitignore
> index 162b017c4a..4101bb4564 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -154,6 +154,9 @@
>  /src/lxc/lxc_monitor_protocol.h
>  /src/lxc/lxc_protocol.[ch]
>  /src/lxc/test_libvirtd_lxc.aug
> +/src/network/test_virtnetworkd.aug
> +/src/network/virtnetworkd.aug
> +/src/network/virtnetworkd.conf
>  /src/qemu/test_libvirtd_qemu.aug
>  /src/remote/*_client_bodies.h
>  /src/remote/*_protocol.[ch]
> @@ -174,6 +177,7 @@
>  /src/virt-aa-helper
>  /src/virtlockd
>  /src/virtlogd
> +/src/virtnetworkd
>  /src/virtproxyd
>  /src/virtsecretd
>  /src/virt-guest-shutdown.target
> diff --git a/libvirt.spec.in b/libvirt.spec.in
> index 7eeb2b4f07..52a671d908 100644
> --- a/libvirt.spec.in
> +++ b/libvirt.spec.in
> @@ -1612,6 +1612,14 @@ exit 0
>  %{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so
>
>  %files daemon-driver-network
> +%config(noreplace) %{_sysconfdir}/libvirt/virtnetworkd.conf
> +%{_datadir}/augeas/lenses/virtnetworkd.aug
> +%{_datadir}/augeas/lenses/tests/test_virtnetworkd.aug
> +%{_unitdir}/virtnetworkd.service
> +%{_unitdir}/virtnetworkd.socket
> +%{_unitdir}/virtnetworkd-ro.socket
> +%{_unitdir}/virtnetworkd-admin.socket
> +%attr(0755, root, root) %{_sbindir}/virtnetworkd
>  %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/
>  %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/
>  %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart
> diff --git a/src/network/Makefile.inc.am b/src/network/Makefile.inc.am
> index 23cf39b6f4..672142452e 100644
> --- a/src/network/Makefile.inc.am
> +++ b/src/network/Makefile.inc.am
> @@ -49,6 +49,67 @@ libvirt_driver_network_impl_la_CFLAGS = \
>  libvirt_driver_network_impl_la_SOURCES = $(NETWORK_DRIVER_SOURCES)
>  libvirt_driver_network_impl_la_LIBADD  = $(DBUS_LIBS) $(LIBXML_LIBS)
>
> +sbin_PROGRAMS += virtnetworkd
> +
> +nodist_conf_DATA += network/virtnetworkd.conf
> +augeas_DATA += network/virtnetworkd.aug
> +augeastest_DATA += network/test_virtnetworkd.aug
> +CLEANFILES += network/virtnetworkd.aug
> +
> +virtnetworkd_SOURCES = $(REMOTE_DAEMON_SOURCES)
> +virtnetworkd_CFLAGS = \
> +       $(REMOTE_DAEMON_CFLAGS) \
> +       -DDAEMON_NAME="\"virtnetworkd\"" \
> +       -DMODULE_NAME="\"network\"" \
> +       $(NULL)
> +virtnetworkd_LDFLAGS = $(REMOTE_DAEMON_LD_FLAGS)
> +virtnetworkd_LDADD = $(REMOTE_DAEMON_LD_ADD)
> +
> +SYSTEMD_UNIT_FILES += \
> +	virtnetworkd.service \
> +	virtnetworkd.socket \
> +	virtnetworkd-ro.socket \
> +	virtnetworkd-admin.socket \
> +	$(NULL)
> +SYSTEMD_UNIT_FILES_IN += \
> +	network/virtnetworkd.service.in \
> +	$(NULL)
> +
> +VIRTNETWORKD_UNIT_VARS = \
> +	$(VIRTD_UNIT_VARS) \
> +	-e 's|[@]name[@]|Libvirt network|g' \
> +	-e 's|[@]service[@]|virtnetworkd|g' \
> +	-e 's|[@]sockprefix[@]|virtnetworkd|g' \
> +	$(NULL)
> +
> +virtnetworkd.service: network/virtnetworkd.service.in $(top_builddir)/config.status
> +	$(AM_V_GEN)sed $(VIRTNETWORKD_UNIT_VARS) < $< > $@-t && mv $@-t $@
> +
> +virtnetwork%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
> +	$(AM_V_GEN)sed $(VIRTNETWORKD_UNIT_VARS) < $< > $@-t && mv $@-t $@
> +
> +network/virtnetworkd.conf: remote/libvirtd.conf.in
> +	$(AM_V_GEN)sed \
> +		-e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
> +		-e 's/[@]DAEMON_NAME[@]/virtnetworkd/' \
> +		< $^ > $@
> +
> +network/virtnetworkd.aug: remote/libvirtd.aug.in
> +	$(AM_V_GEN)$(SED) \
> +		-e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
> +		-e 's/[@]DAEMON_NAME[@]/virtnetworkd/' \
> +		-e 's/[@]DAEMON_NAME_UC[@]/Virtnetworkd/' \
> +		$< > $@
> +
> +network/test_virtnetworkd.aug: remote/test_libvirtd.aug.in \
> +		network/virtnetworkd.conf $(AUG_GENTEST)
> +	$(AM_V_GEN)$(AUG_GENTEST) network/virtnetworkd.conf \
> +		$(srcdir)/remote/test_libvirtd.aug.in | \
> +		$(SED) -e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
> +		-e 's/[@]DAEMON_NAME[@]/virtnetworkd/' \
> +		-e 's/[@]DAEMON_NAME_UC[@]/Virtnetworkd/' \
> +		> $@ || rm -f $@
> +
>  libexec_PROGRAMS += libvirt_leaseshelper
>  libvirt_leaseshelper_SOURCES = $(NETWORK_LEASES_HELPER_SOURCES)
>  libvirt_leaseshelper_LDFLAGS = \
> diff --git a/src/network/virtnetworkd.service.in b/src/network/virtnetworkd.service.in
> new file mode 100644
> index 0000000000..656e8b4f84
> --- /dev/null
> +++ b/src/network/virtnetworkd.service.in
> @@ -0,0 +1,25 @@
> +[Unit]
> +Description=Virtualization network daemon
> +Conflicts=libvirtd.service
> +Requires=virtnetworkd.socket
> +Requires=virtnetworkd-ro.socket
> +Requires=virtnetworkd-admin.socket
> +After=network.target
> +After=dbus.service
> +After=apparmor.service
> +After=local-fs.target
> +Documentation=man:libvirtd(8)

Maybe you need to create man page aliases for each of the new daemon names?

> +Documentation=https://libvirt.org
> +
> +[Service]
> +Type=notify
> +ExecStart=@sbindir@/virtnetworkd --timeout 120
> +ExecReload=/bin/kill -HUP $MAINPID
> +Restart=on-failure
> +KillMode=process
> +
> +[Install]
> +WantedBy=multi-user.target
> +Also=virtnetworkd.socket
> +Also=virtnetworkd-ro.socket
> +Also=virtnetworkd-admin.socket
> --
> 2.21.0

Reviewed-by: Christophe de Dinechin <dinechin at redhat.com>

--
Cheers,
Christophe de Dinechin (IRC c3d)




More information about the libvir-list mailing list