This commit is contained in:
Fedor Korotkiy 2020-03-29 20:35:39 +03:00
parent 6e5c478920
commit 628833a049
3 changed files with 33 additions and 26 deletions

View file

@ -103,7 +103,7 @@ func (c *Client) SignalBuild(ctx context.Context, buildID build.ID, signal *Sign
} }
var signalRsp SignalResponse var signalRsp SignalResponse
if err := json.Unmarshal(rspBody, &rsp); err != nil { if err = json.Unmarshal(rspBody, &rsp); err != nil {
return nil, err return nil, err
} }

View file

@ -52,7 +52,7 @@ func (s *ServiceHandler) doBuild(w http.ResponseWriter, r *http.Request) error {
} }
var req BuildRequest var req BuildRequest
if err := json.Unmarshal(reqJSON, &req); err != nil { if err = json.Unmarshal(reqJSON, &req); err != nil {
return err return err
} }
@ -95,7 +95,7 @@ func (s *ServiceHandler) doSignal(w http.ResponseWriter, r *http.Request) error
} }
var req SignalRequest var req SignalRequest
if err := json.Unmarshal(reqJSON, &req); err != nil { if err = json.Unmarshal(reqJSON, &req); err != nil {
return err return err
} }

View file

@ -1,6 +1,11 @@
package api package api
import ( import (
"context"
"net/http"
"go.uber.org/zap"
"gitlab.com/slon/shad-go/distbuild/pkg/build" "gitlab.com/slon/shad-go/distbuild/pkg/build"
) )
@ -32,13 +37,6 @@ type HeartbeatRequest struct {
// В наших тестов, идентификатор будет иметь вид "localhost:%d". // В наших тестов, идентификатор будет иметь вид "localhost:%d".
WorkerID WorkerID WorkerID WorkerID
// ProcessID задаёт эфемерный идентификатор текущего процесса воркера.
//
// Координатор запоминает ProcessID для каждого воркера.
//
// Измение ProcessID значит, что воркер перезапустился.
ProcessID string
// RunningJobs перечисляет список джобов, которые выполняются на этом воркере // RunningJobs перечисляет список джобов, которые выполняются на этом воркере
// в данный момент. // в данный момент.
RunningJobs []build.ID RunningJobs []build.ID
@ -68,22 +66,31 @@ type JobSpec struct {
Job build.Job Job build.Job
} }
// ArtifactSpec описывает артефакт, который нужно скачать с другого воркера.
type ArtifactSpec struct {
}
// SourceFileSpec описывает файл с исходным кодом, который нужно скачать с координатора.
type SourceFileSpec struct {
}
type HeartbeatResponse struct { type HeartbeatResponse struct {
JobsToRun map[build.ID]JobSpec JobsToRun map[build.ID]JobSpec
}
ArtifactsToDownload map[build.ID]ArtifactSpec
type HeartbeatService interface {
ArtifactsToRemove []build.ID Heartbeat(ctx context.Context, req *HeartbeatRequest) (*HeartbeatResponse, error)
}
SourceFilesToDownload map[build.ID]SourceFileSpec
type HeartbeatClient struct {
SourceFilesToRemove []build.ID 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) {
} }