diff --git a/distbuild/pkg/api/client.go b/distbuild/pkg/api/client.go index 00302d6..4bdcd0d 100644 --- a/distbuild/pkg/api/client.go +++ b/distbuild/pkg/api/client.go @@ -103,7 +103,7 @@ func (c *Client) SignalBuild(ctx context.Context, buildID build.ID, signal *Sign } var signalRsp SignalResponse - if err := json.Unmarshal(rspBody, &rsp); err != nil { + if err = json.Unmarshal(rspBody, &rsp); err != nil { return nil, err } diff --git a/distbuild/pkg/api/handler.go b/distbuild/pkg/api/handler.go index 61677f0..6dcd17e 100644 --- a/distbuild/pkg/api/handler.go +++ b/distbuild/pkg/api/handler.go @@ -52,7 +52,7 @@ func (s *ServiceHandler) doBuild(w http.ResponseWriter, r *http.Request) error { } var req BuildRequest - if err := json.Unmarshal(reqJSON, &req); err != nil { + if err = json.Unmarshal(reqJSON, &req); err != nil { return err } @@ -95,7 +95,7 @@ func (s *ServiceHandler) doSignal(w http.ResponseWriter, r *http.Request) error } var req SignalRequest - if err := json.Unmarshal(reqJSON, &req); err != nil { + if err = json.Unmarshal(reqJSON, &req); err != nil { return err } diff --git a/distbuild/pkg/api/heartbeat.go b/distbuild/pkg/api/heartbeat.go index 606ea6d..5011e4e 100644 --- a/distbuild/pkg/api/heartbeat.go +++ b/distbuild/pkg/api/heartbeat.go @@ -1,6 +1,11 @@ package api import ( + "context" + "net/http" + + "go.uber.org/zap" + "gitlab.com/slon/shad-go/distbuild/pkg/build" ) @@ -32,13 +37,6 @@ type HeartbeatRequest struct { // В наших тестов, идентификатор будет иметь вид "localhost:%d". WorkerID WorkerID - // ProcessID задаёт эфемерный идентификатор текущего процесса воркера. - // - // Координатор запоминает ProcessID для каждого воркера. - // - // Измение ProcessID значит, что воркер перезапустился. - ProcessID string - // RunningJobs перечисляет список джобов, которые выполняются на этом воркере // в данный момент. RunningJobs []build.ID @@ -68,22 +66,31 @@ type JobSpec struct { 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 +} + +type HeartbeatService interface { + Heartbeat(ctx context.Context, req *HeartbeatRequest) (*HeartbeatResponse, error) +} + +type HeartbeatClient struct { + Endpoint string +} + +func (c *HeartbeatClient) Heartbeat(ctx context.Context, req *HeartbeatRequest) (*HeartbeatResponse, error) { + panic("implement me") +} + +type HeartbeatHandler struct { + l *zap.Logger + s HeartbeatService +} + +func (h *HeartbeatHandler) Register(mux *http.ServeMux) { + mux.HandleFunc("/heartbeat", h.heartbeat) +} + +func (h *HeartbeatHandler) heartbeat(w http.ResponseWriter, r *http.Request) { + }