diff options
| author | Benjamin Chabanne <benjamin@uvy.fr> | 2025-09-28 14:19:00 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2025-10-06 11:00:08 +0200 |
| commit | be39b5dee51395aa8acd29d17bc027dba1752443 (patch) | |
| tree | 56b08beac0efbc9bb2fcfc21442669fb002293e1 /gnu/services/admin.scm | |
| parent | ef42ecb8cb6c1868e57505a9593f0c0590980de1 (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.scm | 57 |
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." | |||
| 144 | rotated." | 147 | rotated." |
| 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 |
| 153 | to 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 |
