diff options
author | Christopher Baines <mail@cbaines.net> | 2020-04-13 15:45:05 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-04-13 15:45:05 +0100 |
commit | a7da2619b97a3dbc9013d2254c86feeb0f26d92d (patch) | |
tree | c9ea9bb0d7721569b1a2e1a06b7edafd3679e486 /guix-build-coordinator/agent.scm | |
parent | 80b6b4dd8fdef2ee7631870bcf1a8353d5cf5148 (diff) | |
download | build-coordinator-a7da2619b97a3dbc9013d2254c86feeb0f26d92d.tar build-coordinator-a7da2619b97a3dbc9013d2254c86feeb0f26d92d.tar.gz |
Have agents run in a loop
Perform a build, then query for the next one.
Diffstat (limited to 'guix-build-coordinator/agent.scm')
-rw-r--r-- | guix-build-coordinator/agent.scm | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/guix-build-coordinator/agent.scm b/guix-build-coordinator/agent.scm index 1eb0d58..ee552f1 100644 --- a/guix-build-coordinator/agent.scm +++ b/guix-build-coordinator/agent.scm @@ -31,25 +31,28 @@ #:export (run-agent)) (define (run-agent uuid coordinator-uri password) - (let* ((details (submit-status coordinator-uri uuid password - 'idle)) - (builds (let ((already-allocated-builds - (vector->list - (assoc-ref details "builds")))) - (if (null? already-allocated-builds) - (fetch-builds-for-agent - coordinator-uri uuid password) - already-allocated-builds)))) - (for-each (lambda (build) - (let ((derivation-name (assoc-ref build "derivation-name"))) - (let ((pre-build-status (pre-build-process derivation-name))) - (if (eq? (assq-ref pre-build-status 'result) 'success) - (let ((result (perform-build derivation-name))) - (post-build uuid coordinator-uri password - (assoc-ref build "uuid") - derivation-name)) - (simple-format #t "failure: ~A\n" pre-build-status))))) - builds))) + (while #t + (let* ((details (submit-status coordinator-uri uuid password + 'idle)) + (builds (let ((already-allocated-builds + (vector->list + (assoc-ref details "builds")))) + (if (null? already-allocated-builds) + (fetch-builds-for-agent + coordinator-uri uuid password) + already-allocated-builds)))) + (for-each (lambda (build) + (let ((derivation-name (assoc-ref build "derivation-name"))) + (let ((pre-build-status (pre-build-process derivation-name))) + (if (eq? (assq-ref pre-build-status 'result) 'success) + (let ((result (perform-build derivation-name))) + (post-build uuid coordinator-uri password + (assoc-ref build "uuid") + derivation-name)) + (simple-format #t "failure: ~A\n" pre-build-status))))) + builds)) + + (sleep 5))) (define (pre-build-process derivation-name) (define (find-missing-inputs inputs) |