From: Partha Sarathi Satapathy <[email protected]>

The existing daemon logrotate configuration only covers libvirtd.
File-based logs from modular daemons, such as virtqemud.log, are
therefore not rotated.

Parameterize libvirtd.logrotate.in with the daemon name and generate
a configuration for each daemon in virt_daemons. Install each
configuration in logrotate.d and package it in the same RPM
subpackage as the corresponding daemon.

Signed-off-by: Partha Satapathy <[email protected]>
---
 libvirt.spec.in                  | 14 ++++++++++++++
 src/meson.build                  | 20 ++++++++++++++++++++
 src/remote/libvirtd.logrotate.in |  2 +-
 src/remote/meson.build           | 14 ++++----------
 4 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/libvirt.spec.in b/libvirt.spec.in
index 2411fd94c411..055f6a4b8d9c 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -2152,6 +2152,7 @@ exit 0
 %{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug
     %endif
 %attr(0755, root, root) %{_sbindir}/virtlockd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtlockd
 %{_mandir}/man8/virtlockd.8*
 
 %files daemon-plugin-lockd
@@ -2165,6 +2166,7 @@ exit 0
 %{_datadir}/augeas/lenses/virtlogd.aug
 %{_datadir}/augeas/lenses/tests/test_virtlogd.aug
 %attr(0755, root, root) %{_sbindir}/virtlogd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtlogd
 %{_mandir}/man8/virtlogd.8*
 
 %files daemon-proxy
@@ -2178,6 +2180,7 @@ exit 0
 %{_datadir}/augeas/lenses/virtproxyd.aug
 %{_datadir}/augeas/lenses/tests/test_virtproxyd.aug
 %attr(0755, root, root) %{_sbindir}/virtproxyd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtproxyd
 %{_mandir}/man8/virtproxyd.8*
 
 %files daemon-config-network
@@ -2200,6 +2203,7 @@ exit 0
 %{_unitdir}/virtinterfaced-ro.socket
 %{_unitdir}/virtinterfaced-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtinterfaced
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtinterfaced
 %ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/interface/
 %{_libdir}/libvirt/connection-driver/libvirt_driver_interface.so
 %{_mandir}/man8/virtinterfaced.8*
@@ -2216,6 +2220,7 @@ exit 0
 %{_unitdir}/virtnetworkd-ro.socket
 %{_unitdir}/virtnetworkd-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtnetworkd
+%config(noreplace) %{_sysconfdir}/logrotate.d/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
@@ -2242,6 +2247,7 @@ exit 0
 %{_unitdir}/virtnodedevd-ro.socket
 %{_unitdir}/virtnodedevd-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtnodedevd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtnodedevd
 %ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/nodedev/
 %{_libdir}/libvirt/connection-driver/libvirt_driver_nodedev.so
 %{_mandir}/man8/virtnodedevd.8*
@@ -2255,6 +2261,7 @@ exit 0
 %{_unitdir}/virtnwfilterd-ro.socket
 %{_unitdir}/virtnwfilterd-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtnwfilterd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtnwfilterd
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/
 %ghost %dir %{_rundir}/libvirt/network/
 %ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/nwfilter-binding/
@@ -2277,6 +2284,7 @@ exit 0
 %dir %attr(0755, root, root) %{_unitdir}/libvirtd.service.d/
 %{_unitdir}/libvirtd.service.d/10-secret.conf
 %attr(0755, root, root) %{_sbindir}/virtsecretd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtsecretd
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/secrets/
 %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/secrets/
 %ghost %dir %attr(0700, root, root) %{_rundir}/libvirt/secrets/
@@ -2294,6 +2302,7 @@ exit 0
 %{_unitdir}/virtstoraged-ro.socket
 %{_unitdir}/virtstoraged-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtstoraged
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtstoraged
 %attr(0755, root, root) %{_libexecdir}/libvirt_parthelper
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/storage/
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/storage/autostart/
@@ -2348,6 +2357,7 @@ exit 0
 %{_unitdir}/virtqemud-ro.socket
 %{_unitdir}/virtqemud-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtqemud
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtqemud
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/autostart/
 %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/
@@ -2389,6 +2399,7 @@ exit 0
 %{_unitdir}/virtlxcd-ro.socket
 %{_unitdir}/virtlxcd-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtlxcd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtlxcd
 %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/lxc/
 %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/lxc/autostart/
@@ -2413,6 +2424,7 @@ exit 0
 %{_unitdir}/virtxend-ro.socket
 %{_unitdir}/virtxend-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtxend
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtxend
 %config(noreplace) %{_sysconfdir}/libvirt/libxl.conf
 %config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl
 %config(noreplace) %{_sysconfdir}/libvirt/libxl-lockd.conf
@@ -2441,6 +2453,7 @@ exit 0
 %{_unitdir}/virtvboxd-ro.socket
 %{_unitdir}/virtvboxd-admin.socket
 %attr(0755, root, root) %{_sbindir}/virtvboxd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtvboxd
 %{_libdir}/libvirt/connection-driver/libvirt_driver_vbox.so
 %{_mandir}/man8/virtvboxd.8*
     %endif
@@ -2485,6 +2498,7 @@ exit 0
     %if %{with_ch}
 %files daemon-driver-ch
 %attr(0755, root, root) %{_sbindir}/virtchd
+%config(noreplace) %{_sysconfdir}/logrotate.d/virtchd
 %config(noreplace) %{_sysconfdir}/libvirt/virtchd.conf
 %{_datadir}/augeas/lenses/virtchd.aug
 %{_datadir}/augeas/lenses/tests/test_virtchd.aug
diff --git a/src/meson.build b/src/meson.build
index cab52ce7a30c..4fdc130bfa96 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -285,6 +285,26 @@ subdir('vbox')
 subdir('vmware')
 subdir('vz')
 
+# Generate a logrotate configuration for every daemon built by this
+# configuration.  The driver-specific logrotate files for guest logs are
+# installed by src/remote/meson.build.
+foreach daemon : virt_daemons
+  daemon_logrotate_conf = configuration_data({
+    'daemon': daemon['name'],
+    'localstatedir': localstatedir,
+  })
+  daemon_logrotate = configure_file(
+    input: 'remote/libvirtd.logrotate.in',
+    output: '@[email protected]'.format(daemon['name']),
+    configuration: daemon_logrotate_conf,
+  )
+  install_data(
+    daemon_logrotate,
+    install_dir: sysconfdir / 'logrotate.d',
+    rename: [ daemon['name'] ],
+  )
+endforeach
+
 
 driver_sources = files(
   'driver.c',
diff --git a/src/remote/libvirtd.logrotate.in b/src/remote/libvirtd.logrotate.in
index 4e02510c8bb8..f563b253d9a3 100644
--- a/src/remote/libvirtd.logrotate.in
+++ b/src/remote/libvirtd.logrotate.in
@@ -1,4 +1,4 @@
-@localstatedir@/log/libvirt/libvirtd.log {
+@localstatedir@/log/libvirt/@[email protected] {
         weekly
         missingok
         rotate 4
diff --git a/src/remote/meson.build b/src/remote/meson.build
index 3525bc34b2de..01dcbe51639d 100644
--- a/src/remote/meson.build
+++ b/src/remote/meson.build
@@ -130,18 +130,12 @@ foreach name : libvirt_conf_files
   set_variable(name['virtd'].underscorify(), tmp)
 endforeach
 
-logrotate_files = [
+driver_logrotate_files = [
   'libvirtd.qemu',
   'libvirtd.lxc',
   'libvirtd.libxl',
 ]
 
-if conf.has('WITH_MONOLITHIC_LIBVIRTD')
-  logrotate_files += [
-    'libvirtd',
-  ]
-endif
-
 if conf.has('WITH_REMOTE')
   remote_driver_lib = static_library(
     'virt_remote_driver',
@@ -265,15 +259,15 @@ if conf.has('WITH_REMOTE')
       runstatedir / 'libvirt' / 'common',
     ]
 
-    logrotate_conf = configuration_data({
+    driver_logrotate_conf = configuration_data({
       'localstatedir': localstatedir,
     })
 
-    foreach name : logrotate_files
+    foreach name : driver_logrotate_files
       log_file = configure_file(
         input: '@[email protected]'.format(name),
         output: '@[email protected]'.format(name),
-        configuration: logrotate_conf,
+        configuration: driver_logrotate_conf,
       )
       install_data(
         log_file,
-- 
2.52.0

Reply via email to