Blame internal/store/compose.go

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