summaryrefslogtreecommitdiff
path: root/gnu/services/admin.scm
diff options
context:
space:
mode:
authorBenjamin Chabanne <benjamin@uvy.fr>2025-09-28 14:19:00 +0200
committerLudovic Courtès <ludo@gnu.org>2025-10-06 11:00:08 +0200
commitbe39b5dee51395aa8acd29d17bc027dba1752443 (patch)
tree56b08beac0efbc9bb2fcfc21442669fb002293e1 /gnu/services/admin.scm
parentef42ecb8cb6c1868e57505a9593f0c0590980de1 (diff)
services: log-rotation: Allow to pass procedure as compression method.
* gnu/services/admin.scm (log-rotation-configuration): Change validation method and accept gexp procedure. Change-Id: I67cd5051a05d211349ecbc66ee3a55ab5b1a5971 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/services/admin.scm')
-rw-r--r--gnu/services/admin.scm57
1 files changed, 33 insertions, 24 deletions
diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index 20e4517c667..6e5d51e7ce6 100644
--- a/gnu/services/admin.scm
+++ b/gnu/services/admin.scm
@@ -123,6 +123,9 @@
123(define (gexp-or-integer? x) 123(define (gexp-or-integer? x)
124 (or (gexp? x) (integer? x))) 124 (or (gexp? x) (integer? x)))
125 125
126(define (gexp-or-symbol? x)
127 (or (gexp? x) (symbol? x)))
128
126(define-configuration log-rotation-configuration 129(define-configuration log-rotation-configuration
127 (provision 130 (provision
128 (list-of-symbols '(log-rotation)) 131 (list-of-symbols '(log-rotation))
@@ -144,9 +147,10 @@ calendar events."
144rotated." 147rotated."
145 empty-serializer) 148 empty-serializer)
146 (compression 149 (compression
147 (symbol 'zstd) 150 (gexp-or-symbol 'zstd)
148 "The compression method used for rotated log files, one of 151 "The compression method used for rotated log files, one of @code{'none},
149@code{'none}, @code{'gzip}, and @code{'zstd}." 152@code{'gzip}, and @code{'zstd}. Alternatively, it can be a gexp that evaluates
153to a procedure; that procedure gets called with the file to be rotated."
150 empty-serializer) 154 empty-serializer)
151 (expiry 155 (expiry
152 (gexp-or-integer #~(%default-log-expiry)) 156 (gexp-or-integer #~(%default-log-expiry))
@@ -158,27 +162,32 @@ rotated."
158 empty-serializer)) 162 empty-serializer))
159 163
160(define (log-rotation-shepherd-services config) 164(define (log-rotation-shepherd-services config)
161 (list (shepherd-service 165 (let* ((compression-raw (log-rotation-configuration-compression config))
162 (provision (log-rotation-configuration-provision config)) 166 (compression
163 (requirement (log-rotation-configuration-requirement config)) 167 (if (symbol? compression-raw)
164 (modules '((shepherd service timer) ;for 'calendar-event' 168 #~'#$compression-raw
165 (shepherd service log-rotation))) 169 compression-raw)))
166 (free-form #~(log-rotation-service 170 (list (shepherd-service
167 #$(log-rotation-configuration-calendar-event config) 171 (provision (log-rotation-configuration-provision config))
168 #:provision 172 (requirement (log-rotation-configuration-requirement config))
169 '#$(log-rotation-configuration-provision config) 173 (modules '((shepherd service timer) ;for 'calendar-event'
170 #:requirement 174 (shepherd service log-rotation)))
171 '#$(log-rotation-configuration-requirement config) 175 (free-form #~(log-rotation-service
172 #:external-log-files 176 #$(log-rotation-configuration-calendar-event config)
173 '#$(log-rotation-configuration-external-log-files 177 #:provision
174 config) 178 '#$(log-rotation-configuration-provision config)
175 #:compression 179 #:requirement
176 '#$(log-rotation-configuration-compression config) 180 '#$(log-rotation-configuration-requirement config)
177 #:expiry 181 #:external-log-files
178 #$(log-rotation-configuration-expiry config) 182 '#$(log-rotation-configuration-external-log-files
179 #:rotation-size-threshold 183 config)
180 #$(log-rotation-configuration-size-threshold 184 #:compression
181 config)))))) 185 #$compression
186 #:expiry
187 #$(log-rotation-configuration-expiry config)
188 #:rotation-size-threshold
189 #$(log-rotation-configuration-size-threshold
190 config)))))))
182 191
183(define log-rotation-service-type 192(define log-rotation-service-type
184 (service-type 193 (service-type