From d1f322ec6fac2934e0d823425701d0c616679100 Mon Sep 17 00:00:00 2001 From: Lars Karlitski Date: Tue, 27 Oct 2020 22:37:54 +0100 Subject: [PATCH] worker: always send status "FINISHED" The server hasn't used common.ImageBuildState to mark a job as successful or failed for a long time. Instead, it's using the job's return argument for that. (Jobs don't have a high-level concept of failing). Drop the check in the server, and always send "FINISHED" from the client for backwards compatibility. --- cmd/osbuild-worker/main.go | 5 +---- internal/worker/client.go | 6 +++--- internal/worker/server.go | 8 -------- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/cmd/osbuild-worker/main.go b/cmd/osbuild-worker/main.go index 3cf8574e2..f619f0914 100644 --- a/cmd/osbuild-worker/main.go +++ b/cmd/osbuild-worker/main.go @@ -476,11 +476,9 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) go WatchJob(ctx, job) - var status common.ImageBuildState result, err := RunJob(job, store, kojiServers) if err != nil || result.Success == false { log.Printf(" Job failed: %v", err) - status = common.IBFailed // Fail the jobs in any targets that expects it FailJob(job, kojiServers) @@ -502,13 +500,12 @@ func main() { result.Success = false } else { log.Printf(" 🎉 Job completed successfully: %v", job.Id()) - status = common.IBFinished } // signal to WatchJob() that it can stop watching cancel() - err = job.Update(status, result) + err = job.Update(result) if err != nil { log.Fatalf("Error reporting job result: %v", err) } diff --git a/internal/worker/client.go b/internal/worker/client.go index 916d61a3b..88e7f0700 100644 --- a/internal/worker/client.go +++ b/internal/worker/client.go @@ -28,7 +28,7 @@ type Client struct { type Job interface { Id() uuid.UUID OSBuildArgs() (distro.Manifest, []*target.Target, error) - Update(status common.ImageBuildState, result *osbuild.Result) error + Update(result *osbuild.Result) error Canceled() (bool, error) UploadArtifact(name string, reader io.Reader) error } @@ -154,11 +154,11 @@ func (j *job) OSBuildArgs() (distro.Manifest, []*target.Target, error) { return args.Manifest, args.Targets, nil } -func (j *job) Update(status common.ImageBuildState, result *osbuild.Result) error { +func (j *job) Update(result *osbuild.Result) error { var buf bytes.Buffer err := json.NewEncoder(&buf).Encode(api.UpdateJobJSONRequestBody{ Result: result, - Status: status.ToString(), + Status: "FINISHED", }) if err != nil { panic(err) diff --git a/internal/worker/server.go b/internal/worker/server.go index 41ed143f5..324f29bf0 100644 --- a/internal/worker/server.go +++ b/internal/worker/server.go @@ -18,7 +18,6 @@ import ( "github.com/google/uuid" "github.com/labstack/echo/v4" - "github.com/osbuild/osbuild-composer/internal/common" "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/jobqueue" "github.com/osbuild/osbuild-composer/internal/target" @@ -311,13 +310,6 @@ func (h *apiHandlers) UpdateJob(ctx echo.Context, idstr string) error { return err } - // The jobqueue doesn't support setting the status before a job is - // finished. This branch should never be hit, because the worker - // doesn't attempt this. Change the API to remove this awkwardness. - if body.Status != common.IBFinished && body.Status != common.IBFailed { - return echo.NewHTTPError(http.StatusBadRequest, "setting status of a job to waiting or running is not supported") - } - err = h.server.FinishJob(token, &OSBuildJobResult{OSBuildOutput: body.Result}) if err != nil { switch err {