|
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 |
}
|