]> xenbits.xensource.com Git - libvirt.git/commitdiff
interface: introduce virtinterfaced daemon
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 16 Mar 2018 17:05:24 +0000 (17:05 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Fri, 9 Aug 2019 13:06:31 +0000 (14:06 +0100)
The virtinterfaced daemon will be responsible for providing the interface API
driver functionality. The interface driver is still loaded by the main
libvirtd daemon at this stage, so virtinterfaced must not be running at
the same time.

Reviewed-by: Christophe de Dinechin <dinechin@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
.gitignore
libvirt.spec.in
src/interface/Makefile.inc.am
src/interface/virtinterfaced.service.in [new file with mode: 0644]

index 60713f6a5fc2c42c171da8c634acfd4b5ab673cd..02d657d54f47751365e2b6b5bd3c17c062489497 100644 (file)
 /src/admin/admin_server_dispatch_stubs.h
 /src/esx/*.generated.*
 /src/hyperv/*.generated.*
+/src/interface/test_virtinterfaced.aug
+/src/interface/virtinterfaced.aug
+/src/interface/virtinterfaced.conf
 /src/libvirt*.def
 /src/libvirt.syms
 /src/libvirt_access.syms
 /src/util/virkeycodetable*.h
 /src/util/virkeynametable*.h
 /src/virt-aa-helper
+/src/virtinterfaced
 /src/virtlockd
 /src/virtlogd
 /src/virtnetworkd
index 5c936d9de44cd99b9a09b7f97fa1734aa2c7bc08..1458c4708d9582f7d1bc82bfad26a5feb112e386 100644 (file)
@@ -1609,6 +1609,14 @@ exit 0
 %ghost %{_sysconfdir}/libvirt/nwfilter/*.xml
 
 %files daemon-driver-interface
+%config(noreplace) %{_sysconfdir}/libvirt/virtinterfaced.conf
+%{_datadir}/augeas/lenses/virtinterfaced.aug
+%{_datadir}/augeas/lenses/tests/test_virtinterfaced.aug
+%{_unitdir}/virtinterfaced.service
+%{_unitdir}/virtinterfaced.socket
+%{_unitdir}/virtinterfaced-ro.socket
+%{_unitdir}/virtinterfaced-admin.socket
+%attr(0755, root, root) %{_sbindir}/virtinterfaced
 %{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so
 
 %files daemon-driver-network
index 339a92786bd7da429a4af43f0fd6b70c350eedef..a88df0bd11648bac952d046a1838a2bcd991a63a 100644 (file)
@@ -41,4 +41,67 @@ libvirt_driver_interface_la_LIBADD += $(UDEV_LIBS)
 libvirt_driver_interface_la_SOURCES += $(INTERFACE_DRIVER_UDEV_SOURCES)
 endif WITH_UDEV
 libvirt_driver_interface_la_LIBADD += ../gnulib/lib/libgnu.la
+
+sbin_PROGRAMS += virtinterfaced
+
+nodist_conf_DATA += interface/virtinterfaced.conf
+augeas_DATA += interface/virtinterfaced.aug
+augeastest_DATA += interface/test_virtinterfaced.aug
+CLEANFILES += interface/virtinterfaced.aug
+
+virtinterfaced_SOURCES = $(REMOTE_DAEMON_SOURCES)
+virtinterfaced_CFLAGS = \
+       $(REMOTE_DAEMON_CFLAGS) \
+       -DDAEMON_NAME="\"virtinterfaced\"" \
+       -DMODULE_NAME="\"interface\"" \
+       $(NULL)
+virtinterfaced_LDFLAGS = $(REMOTE_DAEMON_LD_FLAGS)
+virtinterfaced_LDADD = $(REMOTE_DAEMON_LD_ADD)
+
+SYSTEMD_UNIT_FILES += \
+       virtinterfaced.service \
+       virtinterfaced.socket \
+       virtinterfaced-ro.socket \
+       virtinterfaced-admin.socket \
+       $(NULL)
+SYSTEMD_UNIT_FILES_IN += \
+       interface/virtinterfaced.service.in \
+       $(NULL)
+
+VIRTINTERFACED_UNIT_VARS = \
+       $(VIRTD_UNIT_VARS) \
+       -e 's|[@]name[@]|Libvirt interface|g' \
+       -e 's|[@]service[@]|virtinterfaced|g' \
+       -e 's|[@]sockprefix[@]|virtinterfaced|g' \
+       $(NULL)
+
+virtinterfaced.service: interface/virtinterfaced.service.in $(top_builddir)/config.status
+       $(AM_V_GEN)$(SED) $(VIRTINTERFACED_UNIT_VARS) $< > $@-t && mv $@-t $@
+
+virtinterface%.socket: remote/libvirt%.socket.in $(top_builddir)/config.status
+       $(AM_V_GEN)$(SED) $(VIRTINTERFACED_UNIT_VARS) $< > $@-t && mv $@-t $@
+
+interface/virtinterfaced.conf: remote/libvirtd.conf.in
+       $(AM_V_GEN)$(SED) \
+               -e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
+               -e 's/[@]DAEMON_NAME[@]/virtinterfaced/' \
+               $< > $@
+
+interface/virtinterfaced.aug: remote/libvirtd.aug.in
+       $(AM_V_GEN)$(SED) \
+               -e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
+               -e 's/[@]DAEMON_NAME[@]/virtinterfaced/' \
+               -e 's/[@]DAEMON_NAME_UC[@]/Virtinterfaced/' \
+               $< > $@
+
+interface/test_virtinterfaced.aug: remote/test_libvirtd.aug.in \
+               interface/virtinterfaced.conf $(AUG_GENTEST)
+       $(AM_V_GEN)$(AUG_GENTEST) interface/virtinterfaced.conf \
+               $(srcdir)/remote/test_libvirtd.aug.in | \
+               $(SED) \
+               -e '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d' \
+               -e 's/[@]DAEMON_NAME[@]/virtinterfaced/' \
+               -e 's/[@]DAEMON_NAME_UC[@]/Virtinterfaced/' \
+               > $@ || rm -f $@
+
 endif WITH_INTERFACE
diff --git a/src/interface/virtinterfaced.service.in b/src/interface/virtinterfaced.service.in
new file mode 100644 (file)
index 0000000..ff3a611
--- /dev/null
@@ -0,0 +1,24 @@
+[Unit]
+Description=Virtualization interface daemon
+Conflicts=libvirtd.service
+Requires=virtinterfaced.socket
+Requires=virtinterfaced-ro.socket
+Requires=virtinterfaced-admin.socket
+After=network.target
+After=dbus.service
+After=apparmor.service
+After=local-fs.target
+Documentation=man:libvirtd(8)
+Documentation=https://libvirt.org
+
+[Service]
+Type=notify
+ExecStart=@sbindir@/virtinterfaced --timeout 120
+ExecReload=/bin/kill -HUP $MAINPID
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
+Also=virtinterfaced.socket
+Also=virtinterfaced-ro.socket
+Also=virtinterfaced-admin.socket