services: guix-build-coordinator: Add dynamic auth with file record.
authorChristopher Baines <mail@cbaines.net>
Fri, 5 Mar 2021 09:29:58 +0000 (09:29 +0000)
committerChristopher Baines <mail@cbaines.net>
Fri, 5 Mar 2021 09:29:58 +0000 (09:29 +0000)
* gnu/services/guix.scm (guix-build-coordinator-agent-dynamic-auth-with-file,
guix-build-coordinator-agent-dynamic-auth-with-filen?,
guix-build-coordinator-agent-dynamic-auth-with-file-agent-name,
guix-build-coordinator-agent-dynamic-auth-with-file-token-file): New procedures.
(guix-build-coordinator-agent-shepherd-services): Handle new dynamic auth with
file record.
* doc/guix.texi (Guix Build Coordinator): Document the new dynamic auth with
file record.

doc/guix.texi
gnu/services/guix.scm

index e8fb346..763603b 100644 (file)
@@ -31034,6 +31034,23 @@ database, and is used by the agent to authenticate.
 @end table
 @end deftp
 
+@deftp {Data Type} guix-build-coordinator-agent-dynamic-auth-with-file
+Data type representing an agent authenticating with a coordinator via a
+dyanmic auth token read from a file and agent name.
+
+@table @asis
+@item @code{agent-name}
+Name of an agent, this is used to match up to an existing entry in the
+database if there is one.  When no existing entry is found, a new entry
+is automatically added.
+
+@item @code{token-file}
+File containing the dynamic auth token, this is created and stored in
+the coordinator database, and is used by the agent to authenticate.
+
+@end table
+@end deftp
+
 The Guix Build Coordinator package contains a script to query an
 instance of the Guix Data Service for derivations to build, and then
 submit builds for those derivations to the coordinator.  The service
index b0d2c05..d1d31fe 100644 (file)
             guix-build-coordinator-agent-dynamic-auth-agent-name
             guix-build-coordinator-agent-dynamic-auth-token
 
+            guix-build-coordinator-agent-dynamic-auth-with-file
+            guix-build-coordinator-agent-dynamic-auth-with-file?
+            guix-build-coordinator-agent-dynamic-auth-with-file-agent-name
+            guix-build-coordinator-agent-dynamic-auth-with-file-token-file
+
             guix-build-coordinator-agent-service-type
 
             guix-build-coordinator-queue-builds-configuration
   (agent-name          guix-build-coordinator-agent-dynamic-auth-agent-name)
   (token               guix-build-coordinator-agent-dynamic-auth-token))
 
+(define-record-type* <guix-build-coordinator-agent-dynamic-auth-with-file>
+  guix-build-coordinator-agent-dynamic-auth-with-file
+  make-guix-build-coordinator-agent-dynamic-auth-with-file
+  guix-build-coordinator-agent-dynamic-auth-with-file?
+  (agent-name      guix-build-coordinator-agent-dynamic-auth-with-file-agent-name)
+  (token-file      guix-build-coordinator-agent-dynamic-auth-with-file-token-file))
+
 (define-record-type* <guix-build-coordinator-queue-builds-configuration>
   guix-build-coordinator-queue-builds-configuration
   make-guix-build-coordinator-queue-builds-configuration
                            (($ <guix-build-coordinator-agent-dynamic-auth>
                                agent-name token)
                             #~(#$(string-append "--name=" agent-name)
-                               #$(string-append "--dynamic-auth-token=" token))))
+                               #$(string-append "--dynamic-auth-token=" token)))
+                           (($
+                             <guix-build-coordinator-agent-dynamic-auth-with-file>
+                             agent-name token-file)
+                            #~(#$(string-append "--name=" agent-name)
+                               #$(string-append "--dynamic-auth-token-file="
+                                                token-file))))
                       #$(simple-format #f "--max-parallel-builds=~A"
                                        max-parallel-builds)
                       #$@(if derivation-substitute-urls