From 7441012e628e8803f06f687844f4db195dff3d49 Mon Sep 17 00:00:00 2001 From: Lars Karlitski Date: Sat, 24 Oct 2020 11:44:26 +0200 Subject: [PATCH] kojiapi: don't rely on common.State This is similar to the previous commit, which did this change in package cloudapi. Use constants instead of string literals for compose status, and derive the status from worker.JobStatus directly, instead of via common.State. --- internal/kojiapi/server.go | 59 ++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/internal/kojiapi/server.go b/internal/kojiapi/server.go index 8666c3672..7bdb47dfa 100644 --- a/internal/kojiapi/server.go +++ b/internal/kojiapi/server.go @@ -14,7 +14,6 @@ import ( "github.com/labstack/echo/v4" "github.com/osbuild/osbuild-composer/internal/blueprint" - "github.com/osbuild/osbuild-composer/internal/common" "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/kojiapi/api" "github.com/osbuild/osbuild-composer/internal/rpmmd" @@ -223,34 +222,44 @@ func splitExtension(filename string) string { return "." + strings.Join(filenameParts[1:], ".") } -func composeStateToStatus(state common.ComposeState) string { - switch state { - case common.CFailed: +func composeStatusFromJobStatus(js *worker.JobStatus) string { + if js.Canceled { return "failure" - case common.CFinished: - return "success" - case common.CRunning: - return "pending" - case common.CWaiting: - return "pending" - default: - panic("invalid compose state") } + + if js.Started.IsZero() { + return "pending" + } + + if js.Finished.IsZero() { + return "pending" + } + + if js.Result.OSBuildOutput != nil && js.Result.OSBuildOutput.Success { + return "success" + } + + return "failure" } -func composeStateToImageStatus(state common.ComposeState) string { - switch state { - case common.CFailed: +func imageStatusFromJobStatus(js *worker.JobStatus) string { + if js.Canceled { return "failure" - case common.CFinished: - return "success" - case common.CRunning: - return "building" - case common.CWaiting: - return "pending" - default: - panic("invalid compose state") } + + if js.Started.IsZero() { + return "pending" + } + + if js.Finished.IsZero() { + return "building" + } + + if js.Result.OSBuildOutput != nil && js.Result.OSBuildOutput.Success { + return "success" + } + + return "failure" } // GetComposeId handles a /compose/{id} GET request @@ -266,10 +275,10 @@ func (h *apiHandlers) GetComposeId(ctx echo.Context, idstr string) error { } response := api.ComposeStatus{ - Status: composeStateToStatus(status.State), + Status: composeStatusFromJobStatus(status), ImageStatuses: []api.ImageStatus{ { - Status: composeStateToImageStatus(status.State), + Status: imageStatusFromJobStatus(status), }, }, }