aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r--guix-build-coordinator/agent-messaging/http.scm3
-rw-r--r--guix-build-coordinator/agent-messaging/http/server.scm6
-rw-r--r--guix-build-coordinator/coordinator.scm6
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm18
4 files changed, 21 insertions, 12 deletions
diff --git a/guix-build-coordinator/agent-messaging/http.scm b/guix-build-coordinator/agent-messaging/http.scm
index 992768f..adc8102 100644
--- a/guix-build-coordinator/agent-messaging/http.scm
+++ b/guix-build-coordinator/agent-messaging/http.scm
@@ -264,7 +264,8 @@
interface
(string-append "/agent/" (slot-ref interface 'agent-uuid))
#:method 'PUT ; TODO Should be PATCH
- #:body `((status . ,status)
+ #:body `((status . ,status)
+ (processor_count . ,(current-processor-count))
,@(if 1min-load-average
`((load_average
. (("1" . ,1min-load-average))))
diff --git a/guix-build-coordinator/agent-messaging/http/server.scm b/guix-build-coordinator/agent-messaging/http/server.scm
index 016cecf..2928513 100644
--- a/guix-build-coordinator/agent-messaging/http/server.scm
+++ b/guix-build-coordinator/agent-messaging/http/server.scm
@@ -253,10 +253,12 @@ port. Also, the port used can be changed by passing the --port option.\n"
(status (assoc-ref json-body "status"))
(1min-load-average (and=> (assoc-ref json-body "load_average")
(lambda (load-average)
- (assoc-ref load-average "1")))))
+ (assoc-ref load-average "1"))))
+ (processor-count (assoc-ref json-body "processor_count")))
(update-agent-status build-coordinator uuid
- status 1min-load-average))
+ status 1min-load-average
+ processor-count))
(render-json
(agent-details datastore uuid)))
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm
index 22d97f8..5960031 100644
--- a/guix-build-coordinator/coordinator.scm
+++ b/guix-build-coordinator/coordinator.scm
@@ -805,12 +805,14 @@
(trigger-build-allocation coordinator))
(define (update-agent-status coordinator agent-uuid
- status 1min-load-average)
+ status 1min-load-average
+ processor-count)
(datastore-update-agent-status
(build-coordinator-datastore coordinator)
agent-uuid
status
- 1min-load-average))
+ 1min-load-average
+ processor-count))
(define (trigger-build-allocation build-coordinator)
((build-coordinator-allocator-thread build-coordinator)))
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index c2dc3de..36a9e5c 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -687,7 +687,7 @@ UPDATE agents SET active = :active WHERE id = :uuid"
(sqlite-prepare
db
"
-SELECT status, load_average_1min, timestamp
+SELECT status, load_average_1min, timestamp, processor_count
FROM agent_status
WHERE agent_id = :agent_id"
#:cache? #t)))
@@ -697,19 +697,22 @@ WHERE agent_id = :agent_id"
#:agent_id agent-id)
(match (sqlite-step statement)
- (#(status 1min_load_average timestamp)
+ (#(status 1min_load_average timestamp
+ processor_count)
(sqlite-reset statement)
`((status . ,status)
(1min_load_average . ,1min_load_average)
- (timestamp . ,timestamp)))
+ (timestamp . ,timestamp)
+ (processor_count . ,processor_count)))
(_ #f))))))
(define-method (datastore-update-agent-status
(datastore <sqlite-datastore>)
agent-uuid
status
- 1min-load-average)
+ 1min-load-average
+ processor-count)
(call-with-worker-thread
(slot-ref datastore 'worker-writer-thread-channel)
(lambda (db)
@@ -729,14 +732,15 @@ DELETE FROM agent_status WHERE agent_id = :uuid"
(sqlite-prepare
db
"
-INSERT INTO agent_status (agent_id, status, load_average_1min)
- VALUES (:uuid, :status, :load)"
+INSERT INTO agent_status (agent_id, status, load_average_1min, processor_count)
+ VALUES (:uuid, :status, :load, :processor_count)"
#:cache? #t)))
(sqlite-bind-arguments statement
#:uuid agent-uuid
#:status status
- #:load 1min-load-average)
+ #:load 1min-load-average
+ #:processor_count processor-count)
(sqlite-step statement)
(sqlite-reset statement))))