shad-go/distbuild/pkg/api/heartbeat.go
2020-03-29 19:03:07 +03:00

89 lines
2.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package api
import (
"gitlab.com/slon/shad-go/distbuild/pkg/build"
)
// JobResult описывает результат работы джоба.
type JobResult struct {
ID build.ID
Stdout, Stderr []byte
ExitCode int
// Error описывает сообщение об ошибке, из-за которого джоб не удалось выполнить.
//
// Если Error == nil, значит джоб завершился успешно.
Error *string
}
type WorkerID string
func (w WorkerID) String() string {
return string(w)
}
type HeartbeatRequest struct {
// WorkerID задаёт персистентный идентификатор данного воркера.
//
// WorkerID так же выступает в качестве endpoint-а, к которому можно подключиться по HTTP.
//
// В наших тестов, идентификатор будет иметь вид "localhost:%d".
WorkerID WorkerID
// ProcessID задаёт эфемерный идентификатор текущего процесса воркера.
//
// Координатор запоминает ProcessID для каждого воркера.
//
// Измение ProcessID значит, что воркер перезапустился.
ProcessID string
// RunningJobs перечисляет список джобов, которые выполняются на этом воркере
// в данный момент.
RunningJobs []build.ID
DownloadingSources []build.ID
DownloadingArtifacts []build.ID
// FreeSlots сообщаяет, сколько еще процессов можно запустить на этом воркере.
FreeSlots int
// JobResult сообщает координатору, какие джобы завершили исполнение на этом воркере
// на этой итерации цикла.
FinishedJob []JobResult
// AddedArtifacts говорит, какие артефакты появились в кеше на этой итерации цикла.
AddedArtifacts []build.ID
// AddedSourceFiles говорит, какие файлы появились в кеше на этой итерации цикла.
AddedSourceFiles []build.ID
}
// JobSpec описывает джоб, который нужно запустить.
type JobSpec struct {
SourceFiles map[build.ID]string
Job build.Job
}
// ArtifactSpec описывает артефакт, который нужно скачать с другого воркера.
type ArtifactSpec struct {
}
// SourceFileSpec описывает файл с исходным кодом, который нужно скачать с координатора.
type SourceFileSpec struct {
}
type HeartbeatResponse struct {
JobsToRun map[build.ID]JobSpec
ArtifactsToDownload map[build.ID]ArtifactSpec
ArtifactsToRemove []build.ID
SourceFilesToDownload map[build.ID]SourceFileSpec
SourceFilesToRemove []build.ID
}