Blame internal/weldr/compose.go

Packit Service 4d2de5
package weldr
Packit Service 4d2de5
Packit Service 4d2de5
import (
Packit Service 4d2de5
	"sort"
Packit Service 4d2de5
Packit Service 4d2de5
	"github.com/google/uuid"
Packit Service 4d2de5
Packit Service 4d2de5
	"github.com/osbuild/osbuild-composer/internal/common"
Packit Service 4d2de5
	"github.com/osbuild/osbuild-composer/internal/store"
Packit Service 4d2de5
)
Packit Service 4d2de5
Packit Service 4d2de5
type ComposeEntry struct {
Packit Service 4d2de5
	ID          uuid.UUID              `json:"id"`
Packit Service 4d2de5
	Blueprint   string                 `json:"blueprint"`
Packit Service 4d2de5
	Version     string                 `json:"version"`
Packit Service 4d2de5
	ComposeType string                 `json:"compose_type"`
Packit Service 4d2de5
	ImageSize   uint64                 `json:"image_size"` // This is user-provided image size, not actual file size
Packit Service 4d2de5
	QueueStatus common.ImageBuildState `json:"queue_status"`
Packit Service 4d2de5
	JobCreated  float64                `json:"job_created"`
Packit Service 4d2de5
	JobStarted  float64                `json:"job_started,omitempty"`
Packit Service 4d2de5
	JobFinished float64                `json:"job_finished,omitempty"`
Packit Service 4d2de5
	Uploads     []uploadResponse       `json:"uploads,omitempty"`
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
func composeToComposeEntry(id uuid.UUID, compose store.Compose, status *composeStatus, includeUploads bool) *ComposeEntry {
Packit Service 4d2de5
	var composeEntry ComposeEntry
Packit Service 4d2de5
Packit Service 4d2de5
	composeEntry.ID = id
Packit Service 4d2de5
	composeEntry.Blueprint = compose.Blueprint.Name
Packit Service 4d2de5
	composeEntry.Version = compose.Blueprint.Version
Packit Service 4d2de5
	composeEntry.ComposeType = compose.ImageBuild.ImageType.Name()
Packit Service 4d2de5
Packit Service 4d2de5
	if includeUploads {
Packit Service 4d2de5
		composeEntry.Uploads = targetsToUploadResponses(compose.ImageBuild.Targets, status.State)
Packit Service 4d2de5
	}
Packit Service 4d2de5
Packit Service 4d2de5
	switch status.State {
Packit Service 4d2de5
	case common.CWaiting:
Packit Service 4d2de5
		composeEntry.QueueStatus = common.IBWaiting
Packit Service 4d2de5
		composeEntry.JobCreated = float64(status.Queued.UnixNano()) / 1000000000
Packit Service 4d2de5
Packit Service 4d2de5
	case common.CRunning:
Packit Service 4d2de5
		composeEntry.QueueStatus = common.IBRunning
Packit Service 4d2de5
		composeEntry.JobCreated = float64(status.Queued.UnixNano()) / 1000000000
Packit Service 4d2de5
		composeEntry.JobStarted = float64(status.Started.UnixNano()) / 1000000000
Packit Service 4d2de5
Packit Service 4d2de5
	case common.CFinished:
Packit Service 4d2de5
		composeEntry.QueueStatus = common.IBFinished
Packit Service 4d2de5
		composeEntry.ImageSize = compose.ImageBuild.Size
Packit Service 4d2de5
		composeEntry.JobCreated = float64(status.Queued.UnixNano()) / 1000000000
Packit Service 4d2de5
		composeEntry.JobStarted = float64(status.Started.UnixNano()) / 1000000000
Packit Service 4d2de5
		composeEntry.JobFinished = float64(status.Finished.UnixNano()) / 1000000000
Packit Service 4d2de5
Packit Service 4d2de5
	case common.CFailed:
Packit Service 4d2de5
		composeEntry.QueueStatus = common.IBFailed
Packit Service 4d2de5
		composeEntry.JobCreated = float64(status.Queued.UnixNano()) / 1000000000
Packit Service 4d2de5
		composeEntry.JobStarted = float64(status.Started.UnixNano()) / 1000000000
Packit Service 4d2de5
		composeEntry.JobFinished = float64(status.Finished.UnixNano()) / 1000000000
Packit Service 4d2de5
	default:
Packit Service 4d2de5
		panic("invalid compose state")
Packit Service 4d2de5
	}
Packit Service 4d2de5
Packit Service 4d2de5
	return &composeEntry
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
func sortComposeEntries(entries []*ComposeEntry) {
Packit Service 4d2de5
	sort.Slice(entries, func(i, j int) bool {
Packit Service 4d2de5
		return entries[i].ID.String() < entries[j].ID.String()
Packit Service 4d2de5
	})
Packit Service 4d2de5
}