diff --git a/internal/compose/compose.go b/internal/store/compose.go similarity index 71% rename from internal/compose/compose.go rename to internal/store/compose.go index a6811534e..3b26214cd 100644 --- a/internal/compose/compose.go +++ b/internal/store/compose.go @@ -1,6 +1,4 @@ -// Package compose encapsulates the concept of a compose. It is a separate module from common, because it includes -// target which in turn includes common and thus it would create a cyclic dependency, which is forbidden in golang. -package compose +package store import ( "time" @@ -22,20 +20,19 @@ func (ste *StateTransitionError) Error() string { // ImageBuild represents a single image build inside a compose type ImageBuild struct { - Id int `json:"id"` - ImageType common.ImageType `json:"image_type"` - Manifest *osbuild.Manifest `json:"manifest"` - Targets []*target.Target `json:"targets"` - JobCreated time.Time `json:"job_created"` - JobStarted time.Time `json:"job_started"` - JobFinished time.Time `json:"job_finished"` - Size uint64 `json:"size"` - JobId uuid.UUID `json:"jobid,omitempty"` - + Id int + ImageType common.ImageType + Manifest *osbuild.Manifest + Targets []*target.Target + JobCreated time.Time + JobStarted time.Time + JobFinished time.Time + Size uint64 + JobId uuid.UUID // Kept for backwards compatibility. Image builds which were done // before the move to the job queue use this to store whether they // finished successfully. - QueueStatus common.ImageBuildState `json:"queue_status,omitempty"` + QueueStatus common.ImageBuildState } // DeepCopy creates a copy of the ImageBuild structure @@ -80,8 +77,8 @@ func (ib *ImageBuild) GetLocalTargetOptions() *target.LocalTargetOptions { // It contains all the information necessary to generate the inputs for the job, as // well as the job's state. type Compose struct { - Blueprint *blueprint.Blueprint `json:"blueprint"` - ImageBuilds []ImageBuild `json:"image_builds"` + Blueprint *blueprint.Blueprint + ImageBuilds []ImageBuild } // DeepCopy creates a copy of the Compose structure diff --git a/internal/store/fixtures.go b/internal/store/fixtures.go index b6a26b91c..bbcd819da 100644 --- a/internal/store/fixtures.go +++ b/internal/store/fixtures.go @@ -6,7 +6,6 @@ import ( "github.com/google/uuid" "github.com/osbuild/osbuild-composer/internal/blueprint" "github.com/osbuild/osbuild-composer/internal/common" - "github.com/osbuild/osbuild-composer/internal/compose" "github.com/osbuild/osbuild-composer/internal/target" ) @@ -50,10 +49,10 @@ func FixtureBase() *Store { s := New(nil) s.blueprints[bName] = b - s.composes = map[uuid.UUID]compose.Compose{ - uuid.MustParse("30000000-0000-0000-0000-000000000000"): compose.Compose{ + s.composes = map[uuid.UUID]Compose{ + uuid.MustParse("30000000-0000-0000-0000-000000000000"): Compose{ Blueprint: &b, - ImageBuilds: []compose.ImageBuild{ + ImageBuilds: []ImageBuild{ { QueueStatus: common.IBWaiting, ImageType: common.Qcow2Generic, @@ -62,9 +61,9 @@ func FixtureBase() *Store { }, }, }, - uuid.MustParse("30000000-0000-0000-0000-000000000001"): compose.Compose{ + uuid.MustParse("30000000-0000-0000-0000-000000000001"): Compose{ Blueprint: &b, - ImageBuilds: []compose.ImageBuild{ + ImageBuilds: []ImageBuild{ { QueueStatus: common.IBRunning, ImageType: common.Qcow2Generic, @@ -74,9 +73,9 @@ func FixtureBase() *Store { }, }, }, - uuid.MustParse("30000000-0000-0000-0000-000000000002"): compose.Compose{ + uuid.MustParse("30000000-0000-0000-0000-000000000002"): Compose{ Blueprint: &b, - ImageBuilds: []compose.ImageBuild{ + ImageBuilds: []ImageBuild{ { QueueStatus: common.IBFinished, ImageType: common.Qcow2Generic, @@ -87,9 +86,9 @@ func FixtureBase() *Store { }, }, }, - uuid.MustParse("30000000-0000-0000-0000-000000000003"): compose.Compose{ + uuid.MustParse("30000000-0000-0000-0000-000000000003"): Compose{ Blueprint: &b, - ImageBuilds: []compose.ImageBuild{ + ImageBuilds: []ImageBuild{ { QueueStatus: common.IBFailed, ImageType: common.Qcow2Generic, diff --git a/internal/store/json.go b/internal/store/json.go index 464e35fb5..01d64008a 100644 --- a/internal/store/json.go +++ b/internal/store/json.go @@ -8,7 +8,6 @@ import ( "github.com/google/uuid" "github.com/osbuild/osbuild-composer/internal/blueprint" "github.com/osbuild/osbuild-composer/internal/common" - "github.com/osbuild/osbuild-composer/internal/compose" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/target" ) @@ -91,18 +90,18 @@ func newWorkspaceFromV0(workspaceStruct workspaceV0) map[string]blueprint.Bluepr return workspace } -func newComposesFromV0(composesStruct composesV0) map[uuid.UUID]compose.Compose { - composes := make(map[uuid.UUID]compose.Compose) +func newComposesFromV0(composesStruct composesV0) map[uuid.UUID]Compose { + composes := make(map[uuid.UUID]Compose) for composeID, composeStruct := range composesStruct { - c := compose.Compose{ + c := Compose{ Blueprint: composeStruct.Blueprint, } if len(composeStruct.ImageBuilds) == 0 { panic("the was a compose with zero image builds, that is forbidden") } for _, imgBuild := range composeStruct.ImageBuilds { - ib := compose.ImageBuild{ + ib := ImageBuild{ Id: imgBuild.ID, ImageType: imgBuild.ImageType, Manifest: imgBuild.Manifest, @@ -229,7 +228,7 @@ func newStoreFromV0(storeStruct storeV0) *Store { return &store } -func newComposesV0(composes map[uuid.UUID]compose.Compose) composesV0 { +func newComposesV0(composes map[uuid.UUID]Compose) composesV0 { composesStruct := make(composesV0) for composeID, compose := range composes { c := composeV0{ diff --git a/internal/store/store.go b/internal/store/store.go index 67b6885c8..131e93217 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -18,7 +18,6 @@ import ( "sync" "time" - "github.com/osbuild/osbuild-composer/internal/compose" "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/jsondb" "github.com/osbuild/osbuild-composer/internal/osbuild" @@ -39,7 +38,7 @@ const StoreDBName = "state" type Store struct { blueprints map[string]blueprint.Blueprint workspace map[string]blueprint.Blueprint - composes map[uuid.UUID]compose.Compose + composes map[uuid.UUID]Compose sources map[string]SourceConfig blueprintsChanges map[string]map[string]blueprint.Change blueprintsCommits map[string][]string @@ -319,7 +318,7 @@ func (s *Store) TagBlueprint(name string) error { }) } -func (s *Store) GetCompose(id uuid.UUID) (compose.Compose, bool) { +func (s *Store) GetCompose(id uuid.UUID) (Compose, bool) { s.mu.RLock() defer s.mu.RUnlock() @@ -329,11 +328,11 @@ func (s *Store) GetCompose(id uuid.UUID) (compose.Compose, bool) { // GetAllComposes creates a deep copy of all composes present in this store // and returns them as a dictionary with compose UUIDs as keys -func (s *Store) GetAllComposes() map[uuid.UUID]compose.Compose { +func (s *Store) GetAllComposes() map[uuid.UUID]Compose { s.mu.RLock() defer s.mu.RUnlock() - composes := make(map[uuid.UUID]compose.Compose) + composes := make(map[uuid.UUID]Compose) for id, singleCompose := range s.composes { newCompose := singleCompose.DeepCopy() @@ -415,9 +414,9 @@ func (s *Store) PushCompose(composeID uuid.UUID, manifest *osbuild.Manifest, ima // FIXME: handle or comment this possible error _ = s.change(func() error { - s.composes[composeID] = compose.Compose{ + s.composes[composeID] = Compose{ Blueprint: bp, - ImageBuilds: []compose.ImageBuild{ + ImageBuilds: []ImageBuild{ { Manifest: manifest, ImageType: imageTypeCommon, @@ -474,9 +473,9 @@ func (s *Store) PushTestCompose(composeID uuid.UUID, manifest *osbuild.Manifest, // FIXME: handle or comment this possible error _ = s.change(func() error { - s.composes[composeID] = compose.Compose{ + s.composes[composeID] = Compose{ Blueprint: bp, - ImageBuilds: []compose.ImageBuild{ + ImageBuilds: []ImageBuild{ { QueueStatus: status, Manifest: manifest, diff --git a/internal/weldr/api.go b/internal/weldr/api.go index 96dcf779e..5922112e3 100644 --- a/internal/weldr/api.go +++ b/internal/weldr/api.go @@ -23,7 +23,6 @@ import ( "github.com/osbuild/osbuild-composer/internal/blueprint" "github.com/osbuild/osbuild-composer/internal/common" - "github.com/osbuild/osbuild-composer/internal/compose" "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/store" @@ -146,7 +145,7 @@ func (api *API) ServeHTTP(writer http.ResponseWriter, request *http.Request) { // Returns the state of the image in `compose` and the times the job was // queued, started, and finished. Assumes that there's only one image in the // compose. Returns CWaiting on error. -func (api *API) getComposeState(compose compose.Compose) (state common.ComposeState, queued, started, finished time.Time) { +func (api *API) getComposeState(compose store.Compose) (state common.ComposeState, queued, started, finished time.Time) { if len(compose.ImageBuilds) == 0 { return } diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go index 876fb3a43..f7f2d6280 100644 --- a/internal/weldr/api_test.go +++ b/internal/weldr/api_test.go @@ -13,7 +13,6 @@ import ( "time" "github.com/osbuild/osbuild-composer/internal/common" - "github.com/osbuild/osbuild-composer/internal/compose" "github.com/osbuild/osbuild-composer/internal/target" "github.com/osbuild/osbuild-composer/internal/blueprint" @@ -434,7 +433,7 @@ func TestBlueprintsDepsolve(t *testing.T) { } func TestCompose(t *testing.T) { - expectedComposeLocal := &compose.Compose{ + expectedComposeLocal := &store.Compose{ Blueprint: &blueprint.Blueprint{ Name: "test", Version: "0.0.0", @@ -443,7 +442,7 @@ func TestCompose(t *testing.T) { Groups: []blueprint.Group{}, Customizations: nil, }, - ImageBuilds: []compose.ImageBuild{ + ImageBuilds: []store.ImageBuild{ { QueueStatus: common.IBWaiting, ImageType: common.Qcow2Generic, @@ -459,7 +458,7 @@ func TestCompose(t *testing.T) { }, }, } - expectedComposeLocalAndAws := &compose.Compose{ + expectedComposeLocalAndAws := &store.Compose{ Blueprint: &blueprint.Blueprint{ Name: "test", Version: "0.0.0", @@ -468,7 +467,7 @@ func TestCompose(t *testing.T) { Groups: []blueprint.Group{}, Customizations: nil, }, - ImageBuilds: []compose.ImageBuild{ + ImageBuilds: []store.ImageBuild{ { QueueStatus: common.IBWaiting, ImageType: common.Qcow2Generic, @@ -505,7 +504,7 @@ func TestCompose(t *testing.T) { Body string ExpectedStatus int ExpectedJSON string - ExpectedCompose *compose.Compose + ExpectedCompose *store.Compose IgnoreFields []string }{ {true, "POST", "/api/v0/compose", `{"blueprint_name": "http-server","compose_type": "qcow2","branch": "master"}`, http.StatusBadRequest, `{"status":false,"errors":[{"id":"UnknownBlueprint","msg":"Unknown blueprint name: http-server"}]}`, nil, []string{"build_id"}}, @@ -526,7 +525,7 @@ func TestCompose(t *testing.T) { require.Equalf(t, 1, len(composes), "%s: bad compose count in store", c.Path) // I have no idea how to get the compose in better way - var composeStruct compose.Compose + var composeStruct store.Compose for _, c := range composes { composeStruct = c break diff --git a/internal/weldr/compose.go b/internal/weldr/compose.go index ca0f7f6a3..678c18b5b 100644 --- a/internal/weldr/compose.go +++ b/internal/weldr/compose.go @@ -6,7 +6,7 @@ import ( "github.com/google/uuid" "github.com/osbuild/osbuild-composer/internal/common" - "github.com/osbuild/osbuild-composer/internal/compose" + "github.com/osbuild/osbuild-composer/internal/store" ) type ComposeEntry struct { @@ -22,7 +22,7 @@ type ComposeEntry struct { Uploads []uploadResponse `json:"uploads,omitempty"` } -func composeToComposeEntry(id uuid.UUID, compose compose.Compose, state common.ComposeState, queued, started, finished time.Time, includeUploads bool) *ComposeEntry { +func composeToComposeEntry(id uuid.UUID, compose store.Compose, state common.ComposeState, queued, started, finished time.Time, includeUploads bool) *ComposeEntry { var composeEntry ComposeEntry composeEntry.ID = id