|
Packit |
63bb0d |
package store
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
import (
|
|
Packit |
63bb0d |
"time"
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
"github.com/google/uuid"
|
|
Packit |
63bb0d |
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
|
Packit |
63bb0d |
"github.com/osbuild/osbuild-composer/internal/common"
|
|
Packit |
63bb0d |
"github.com/osbuild/osbuild-composer/internal/distro"
|
|
Packit |
63bb0d |
"github.com/osbuild/osbuild-composer/internal/target"
|
|
Packit |
63bb0d |
)
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
type StateTransitionError struct {
|
|
Packit |
63bb0d |
message string
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (ste *StateTransitionError) Error() string {
|
|
Packit |
63bb0d |
return ste.message
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// ImageBuild represents a single image build inside a compose
|
|
Packit |
63bb0d |
type ImageBuild struct {
|
|
Packit |
63bb0d |
ID int
|
|
Packit |
63bb0d |
ImageType distro.ImageType
|
|
Packit |
63bb0d |
Manifest distro.Manifest
|
|
Packit |
63bb0d |
Targets []*target.Target
|
|
Packit |
63bb0d |
JobCreated time.Time
|
|
Packit |
63bb0d |
JobStarted time.Time
|
|
Packit |
63bb0d |
JobFinished time.Time
|
|
Packit |
63bb0d |
Size uint64
|
|
Packit |
63bb0d |
JobID uuid.UUID
|
|
Packit |
63bb0d |
// Kept for backwards compatibility. Image builds which were done
|
|
Packit |
63bb0d |
// before the move to the job queue use this to store whether they
|
|
Packit |
63bb0d |
// finished successfully.
|
|
Packit |
63bb0d |
QueueStatus common.ImageBuildState
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// DeepCopy creates a copy of the ImageBuild structure
|
|
Packit |
63bb0d |
func (ib *ImageBuild) DeepCopy() ImageBuild {
|
|
Packit |
63bb0d |
var newTargets []*target.Target
|
|
Packit |
63bb0d |
for _, t := range ib.Targets {
|
|
Packit |
63bb0d |
newTarget := *t
|
|
Packit |
63bb0d |
newTargets = append(newTargets, &newTarget)
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
// Create new image build struct
|
|
Packit |
63bb0d |
return ImageBuild{
|
|
Packit |
63bb0d |
ID: ib.ID,
|
|
Packit |
63bb0d |
QueueStatus: ib.QueueStatus,
|
|
Packit |
63bb0d |
ImageType: ib.ImageType,
|
|
Packit |
63bb0d |
Manifest: ib.Manifest,
|
|
Packit |
63bb0d |
Targets: newTargets,
|
|
Packit |
63bb0d |
JobCreated: ib.JobCreated,
|
|
Packit |
63bb0d |
JobStarted: ib.JobStarted,
|
|
Packit |
63bb0d |
JobFinished: ib.JobFinished,
|
|
Packit |
63bb0d |
Size: ib.Size,
|
|
Packit |
63bb0d |
JobID: ib.JobID,
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
func (ib *ImageBuild) GetLocalTargetOptions() *target.LocalTargetOptions {
|
|
Packit |
63bb0d |
for _, t := range ib.Targets {
|
|
Packit |
63bb0d |
switch options := t.Options.(type) {
|
|
Packit |
63bb0d |
case *target.LocalTargetOptions:
|
|
Packit |
63bb0d |
return options
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
return nil
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// A Compose represent the task of building a set of images from a single blueprint.
|
|
Packit |
63bb0d |
// It contains all the information necessary to generate the inputs for the job, as
|
|
Packit |
63bb0d |
// well as the job's state.
|
|
Packit |
63bb0d |
type Compose struct {
|
|
Packit |
63bb0d |
Blueprint *blueprint.Blueprint
|
|
Packit |
63bb0d |
ImageBuild ImageBuild
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
|
|
Packit |
63bb0d |
// DeepCopy creates a copy of the Compose structure
|
|
Packit |
63bb0d |
func (c *Compose) DeepCopy() Compose {
|
|
Packit |
63bb0d |
var newBpPtr *blueprint.Blueprint = nil
|
|
Packit |
63bb0d |
if c.Blueprint != nil {
|
|
Packit |
63bb0d |
bpCopy := *c.Blueprint
|
|
Packit |
63bb0d |
newBpPtr = &bpCopy
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
return Compose{
|
|
Packit |
63bb0d |
Blueprint: newBpPtr,
|
|
Packit |
63bb0d |
ImageBuild: c.ImageBuild.DeepCopy(),
|
|
Packit |
63bb0d |
}
|
|
Packit |
63bb0d |
}
|