diff options
author | Marius Bakke <marius@gnu.org> | 2022-12-14 20:43:38 +0100 |
---|---|---|
committer | Marius Bakke <marius@gnu.org> | 2022-12-17 17:08:50 +0100 |
commit | 88908c6edce845b8737a18dda415f162d699384a (patch) | |
tree | ce83a9a50e35e36009a649f2b3121e74f4523395 | |
parent | 491bddfa276cc9775adf325c07e5f82638f330e7 (diff) | |
download | guix-88908c6edce845b8737a18dda415f162d699384a.tar.gz |
services: ganeti: Add support for cluster hooks.
* gnu/services/ganeti.scm (<ganeti-configuration>): Add HOOKS. (hooks->directory): Rename to ... (debootstrap-hooks->directory): ... this, for clarity. (debootstrap-configuration-compiler): Adjust accordingly. (ganeti-directory): Add HOOKS when set. (ganeti-etc-service): Pass HOOKS. * doc/guix.texi (Virtualization Services): Mention it.
-rw-r--r-- | doc/guix.texi | 4 | ||||
-rw-r--r-- | gnu/services/ganeti.scm | 14 |
2 files changed, 14 insertions, 4 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 5cb5ae1dfe..eb37d4d393 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -34249,6 +34249,10 @@ To override a setting, you must use the configuration type for that service: @item @code{file-storage-paths} (default: @code{'()}) List of allowed directories for file storage backend. +@item @code{hooks} (default: @code{#f}) +When set, this should be a file-like object containing a directory with +@url{https://docs.ganeti.org/docs/ganeti/3.0/html/hooks.html,cluster execution hooks}. + @item @code{os} (default: @code{%default-ganeti-os}) List of @code{<ganeti-os>} records. @end table diff --git a/gnu/services/ganeti.scm b/gnu/services/ganeti.scm index d9770b1a29..f8127e8721 100644 --- a/gnu/services/ganeti.scm +++ b/gnu/services/ganeti.scm @@ -777,6 +777,8 @@ than 21 days from @file{/var/lib/ganeti/queue/archive}."))) (default (ganeti-cleaner-configuration))) (file-storage-paths ganeti-configuration-file-storage-paths ;list of strings | gexp (default '())) + (hooks ganeti-configuration-hooks ;<file-like> | #f + (default #f)) (os ganeti-configuration-os ;list of <ganeti-os> (default '()))) @@ -910,7 +912,7 @@ trap - EXIT (partition-alignment debootstrap-configuration-partition-alignment ;#f | integer (default 2048))) -(define (hooks->directory hooks) +(define (debootstrap-hooks->directory hooks) (match hooks ((? file-like?) hooks) @@ -918,7 +920,7 @@ trap - EXIT (let ((names (map car hooks)) (files (map cdr hooks))) (with-imported-modules '((guix build utils)) - (computed-file "hooks-union" + (computed-file "debootstrap-hooks" #~(begin (use-modules (guix build utils) (ice-9 match)) @@ -942,7 +944,7 @@ trap - EXIT (($ <debootstrap-configuration> hooks proxy mirror arch suite extra-pkgs components generate-cache? clean-cache partition-style partition-alignment) - (let ((customize-dir (hooks->directory hooks))) + (let ((customize-dir (debootstrap-hooks->directory hooks))) (gexp->derivation "debootstrap-variant" #~(call-with-output-file (ungexp output "out") @@ -1034,7 +1036,7 @@ in /etc/ganeti/instance-$os for OS." (computed-file (string-append name "-os") builder #:local-build? #t))) -(define (ganeti-directory file-storage-file os) +(define (ganeti-directory file-storage-file hooks os) (let ((dirs (map ganeti-os->directory os)) (names (map ganeti-os-name os))) (define builder @@ -1044,6 +1046,9 @@ in /etc/ganeti/instance-$os for OS." (when #$file-storage-file (symlink #$file-storage-file (string-append #$output "/file-storage-paths"))) + (when #$hooks + (symlink #$hooks + (string-append #$output "/hooks"))) (for-each (match-lambda ((name dest) (symlink dest @@ -1063,6 +1068,7 @@ in /etc/ganeti/instance-$os for OS." (list `("ganeti" ,(ganeti-directory (file-storage-file (ganeti-configuration-file-storage-paths config)) + (ganeti-configuration-hooks config) (ganeti-configuration-os config))))) (define (debootstrap-os variants) |