diff options
author | Christopher Baines <mail@cbaines.net> | 2023-04-21 16:03:50 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2023-04-21 16:03:50 +0100 |
commit | e135098282c78f03a2c9a037a19319dde0185814 (patch) | |
tree | f9bf8aa48bda99abd0464490ff8ceabcfe5b12ed /guix-build-coordinator/coordinator.scm | |
parent | c9964592646c7c59bd230115e57a3f24304c5b55 (diff) | |
download | build-coordinator-e135098282c78f03a2c9a037a19319dde0185814.tar build-coordinator-e135098282c78f03a2c9a037a19319dde0185814.tar.gz |
Include the submit_outputs information in the agent status response
This means that agents will know whether to submit the outputs of builds, even
if they're restarted.
Diffstat (limited to 'guix-build-coordinator/coordinator.scm')
-rw-r--r-- | guix-build-coordinator/coordinator.scm | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm index 3c443f4..d7bc605 100644 --- a/guix-build-coordinator/coordinator.scm +++ b/guix-build-coordinator/coordinator.scm @@ -1287,11 +1287,52 @@ (submit_outputs . ,submit-outputs?))) builds))))))) -(define (agent-details datastore agent-id) +(define (agent-details build-coordinator agent-id) + (define datastore + (build-coordinator-datastore build-coordinator)) + + (define build-submit-outputs-hook + (assq-ref (build-coordinator-hooks build-coordinator) + 'build-submit-outputs)) + + (define (submit-outputs? build) + (with-exception-handler + (lambda (exn) + (log-msg (build-coordinator-logger build-coordinator) + 'CRITICAL + "build-submit-outputs hook raised exception: " + exn)) + (lambda () + (with-throw-handler #t + (lambda () + (let ((hook-result + (call-with-delay-logging + (lambda () + (build-submit-outputs-hook + build-coordinator + (assq-ref build 'uuid)))))) + (if (boolean? hook-result) + hook-result + (begin + (log-msg + (build-coordinator-logger build-coordinator) + 'CRITICAL + "build-submit-outputs hook returned non boolean: " + hook-result) + #t)))) + (lambda (key . args) + (backtrace)))) + #:unwind? #t)) + (let ((agent (datastore-find-agent datastore agent-id)) (allocated-builds (datastore-list-agent-builds datastore agent-id))) + `(,@agent ; description - (builds . ,(list->vector allocated-builds))))) + (builds . ,(list->vector + (map (lambda (build) + `(,@build + (submit_outputs . ,submit-outputs?))) + allocated-builds)))))) (define (build-data-location build-id ) (string-append (%config 'builds-dir) "/" |