diff options
author | Karl Hallsby <karl@hallsby.com> | 2025-01-08 14:19:01 -0600 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2025-02-21 15:27:10 +0100 |
commit | 8d7578ba6c72f7acb191475cb2c3ed6b7da8ea2b (patch) | |
tree | 42bd5a2ce933b458e346d4eabbb894bb712ec1cb | |
parent | a036a455da1c91282ac2c6a7ca9757ee2e8ba107 (diff) | |
download | guix-8d7578ba6c72f7acb191475cb2c3ed6b7da8ea2b.tar.gz guix-8d7578ba6c72f7acb191475cb2c3ed6b7da8ea2b.zip |
services: Add xen-guest-agent-service-type.
* gnu/services/virtualization.scm (xen-guest-agent-configuration,
xen-guest-agent-service-type): New variables.
* doc/guix.texi: Document them.
Change-Id: Id1b1f4fc2b193d73f4401e74a214222dfe1b6ea7
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r-- | doc/guix.texi | 24 | ||||
-rw-r--r-- | gnu/services/virtualization.scm | 34 |
2 files changed, 57 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 59d9ae5dce..83ba0f3292 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -38175,6 +38175,30 @@ Name of the @code{xe-guest-utilities} log file. @end table @end deftp +@code{xe-guest-utilities} is the standard guest utilities used for Xen +guests. More recently the Xen Project has been working to develop +@code{xen-guest-agent}, a modern drop-in replacement for +@code{xe-guest-utilities}. While they nearly have feature-parity, +@code{xen-guest-agent} currently lacks some of the features of its +predecessor, namely disk metrics and ``PV drivers version''. + +@defvar xen-guest-agent-service-type +Service type for the Xen guest agent service. +@end defvar + +@deftp {Data Type} xen-guest-agent-configuration +Configuration for the @code{xen-guest-agent} service. + +@table @asis +@item @code{package} (default: @code{xen-guest-agent}) +The Xen guest agent package to use. +@end table +@end deftp + +@quotation Warning +@code{xe-guest-utilities} and @code{xen-guest-agent} are mutually exclusive. +@end quotation + @anchor{build-vm} @subsubheading Virtual Build Machines diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm index 874abcd73f..b697ae9526 100644 --- a/gnu/services/virtualization.scm +++ b/gnu/services/virtualization.scm @@ -113,7 +113,9 @@ qemu-guest-agent-service-type xe-guest-utilities-configuration - xe-guest-utilities-service-type)) + xe-guest-utilities-service-type + xen-guest-agent-configuration + xen-guest-agent-service-type)) (define (uglify-field-name field-name) (let ((str (symbol->string field-name))) @@ -1083,6 +1085,36 @@ specified, the QEMU default path is used.")) (default-value (xe-guest-utilities-configuration)) (description "Run the Xen guest management utilities."))) +(define-configuration/no-serialization xen-guest-agent-configuration + (package + (package xen-guest-agent) + "Xen guest agent package.")) + +(define (generate-xen-guest-agent-documentation) + "Generate documentation for xen-guest-agent-configuration fields" + (generate-documentation + `((xen-guest-agent-configuration ,xen-guest-agent-configuration-fields)) + 'xen-guest-agent-configuration)) + +(define (xen-guest-agent-shepherd-service config) + (list + (shepherd-service + (provision '(xen-guest-agent)) + (requirement '(networking user-processes udev)) + (documentation "Run the Xen guest management agent.") + (start #~(make-forkexec-constructor + (list #$(file-append xen-guest-agent "/bin/xen-guest-agent")))) + (stop #~(make-kill-destructor))))) + +(define xen-guest-agent-service-type + (service-type + (name 'xen-guest-agent) + (extensions + (list (service-extension shepherd-root-service-type + xen-guest-agent-shepherd-service))) + (default-value (xen-guest-agent-configuration)) + (description "Run the Xen guest management utilities."))) + ;;; ;;; Secrets for guest VMs. |