services: guix-build-coordinator: Add dynamic auth record.
authorChristopher Baines <mail@cbaines.net>
Sun, 28 Feb 2021 21:35:36 +0000 (21:35 +0000)
committerChristopher Baines <mail@cbaines.net>
Sun, 28 Feb 2021 21:56:34 +0000 (21:56 +0000)
* gnu/services/guix.scm (guix-build-coordinator-agent-dynamic-auth,
guix-build-coordinator-agent-dynamic-auth?,
guix-build-coordinator-agent-dynamic-auth-agent-name,
guix-build-coordinator-agent-dynamic-auth-token): New procedures.
(guix-build-coordinator-agent-shepherd-services): Handle new dynamic auth
record.
* doc/guix.texi (Guix Build Coordinator): Document the new dynamic auth
record.

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

index b75fce4..e8fb346 100644 (file)
@@ -31017,6 +31017,23 @@ coordinator.
 @end table
 @end deftp
 
+@deftp {Data Type} guix-build-coordinator-agent-dynamic-auth
+Data type representing an agent authenticating with a coordinator via a
+dyanmic auth token 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}
+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 b86e203..b0d2c05 100644 (file)
             guix-build-coordinator-agent-password-file-auth-uuid
             guix-build-coordinator-agent-password-file-auth-password-file
 
+            guix-build-coordinator-agent-dynamic-auth
+            guix-build-coordinator-agent-dynamic-auth?
+            guix-build-coordinator-agent-dynamic-auth-agent-name
+            guix-build-coordinator-agent-dynamic-auth-token
+
             guix-build-coordinator-agent-service-type
 
             guix-build-coordinator-queue-builds-configuration
   (password-file
    guix-build-coordinator-agent-password-file-auth-password-file))
 
+(define-record-type* <guix-build-coordinator-agent-dynamic-auth>
+  guix-build-coordinator-agent-dynamic-auth
+  make-guix-build-coordinator-agent-dynamic-auth
+  guix-build-coordinator-agent-dynamic-auth?
+  (agent-name          guix-build-coordinator-agent-dynamic-auth-agent-name)
+  (token               guix-build-coordinator-agent-dynamic-auth-token))
+
 (define-record-type* <guix-build-coordinator-queue-builds-configuration>
   guix-build-coordinator-queue-builds-configuration
   make-guix-build-coordinator-queue-builds-configuration
                                uuid password-file)
                             #~(#$(string-append "--uuid=" uuid)
                                #$(string-append "--password-file="
-                                                password-file))))
+                                                password-file)))
+                           (($ <guix-build-coordinator-agent-dynamic-auth>
+                               agent-name token)
+                            #~(#$(string-append "--name=" agent-name)
+                               #$(string-append "--dynamic-auth-token=" token))))
                       #$(simple-format #f "--max-parallel-builds=~A"
                                        max-parallel-builds)
                       #$@(if derivation-substitute-urls