diff --git a/cmd/gen-manifests/main.go b/cmd/gen-manifests/main.go index bf7ba1239..703dea4d6 100644 --- a/cmd/gen-manifests/main.go +++ b/cmd/gen-manifests/main.go @@ -180,7 +180,7 @@ func makeManifestJob(name string, imgType distro.ImageType, cr composeRequest, d if cr.Blueprint != nil { bp = blueprint.Blueprint(*cr.Blueprint) } - mf, err := manifest.Serialize(packageSpecs) + mf, err := manifest.Serialize(packageSpecs, nil) request := composeRequest{ Distro: distribution.Name(), diff --git a/cmd/osbuild-pipeline/main.go b/cmd/osbuild-pipeline/main.go index 35038c280..7d3a7028b 100644 --- a/cmd/osbuild-pipeline/main.go +++ b/cmd/osbuild-pipeline/main.go @@ -236,7 +236,7 @@ func main() { composeRequest.OSTree.Ref = imageType.OSTreeRef() } - ms, err := manifest.Serialize(depsolvedSets) + ms, err := manifest.Serialize(depsolvedSets, nil) if err != nil { panic(err.Error()) } diff --git a/cmd/osbuild-playground/playground.go b/cmd/osbuild-playground/playground.go index 4687db083..e13d67d91 100644 --- a/cmd/osbuild-playground/playground.go +++ b/cmd/osbuild-playground/playground.go @@ -48,7 +48,7 @@ func RunPlayground(img image.ImageKind, d distro.Distro, arch distro.Arch, repos fmt.Fprintf(os.Stderr, "could not clean dnf cache: %s", err.Error()) } - bytes, err := manifest.Serialize(packageSpecs) + bytes, err := manifest.Serialize(packageSpecs, nil) if err != nil { panic("failed to serialize manifest: " + err.Error()) } diff --git a/cmd/osbuild-store-dump/main.go b/cmd/osbuild-store-dump/main.go index 40918d79b..f20989f93 100644 --- a/cmd/osbuild-store-dump/main.go +++ b/cmd/osbuild-store-dump/main.go @@ -36,7 +36,7 @@ func getManifest(bp blueprint.Blueprint, t distro.ImageType, a distro.Arch, d di pkgSpecSets[name] = res } - mf, err := manifest.Serialize(pkgSpecSets) + mf, err := manifest.Serialize(pkgSpecSets, nil) if err != nil { panic(err) } diff --git a/internal/cloudapi/v2/server.go b/internal/cloudapi/v2/server.go index be055add6..e79df5a74 100644 --- a/internal/cloudapi/v2/server.go +++ b/internal/cloudapi/v2/server.go @@ -468,7 +468,7 @@ func generateManifest(ctx context.Context, workers *worker.Server, depsolveJobID jobResult.JobError = clienterrors.WorkerClientError(clienterrors.ErrorManifestGeneration, reason, nil) return } - ms, err := manifest.Serialize(depsolveResults.PackageSpecs) + ms, err := manifest.Serialize(depsolveResults.PackageSpecs, nil) jobResult.Manifest = ms } diff --git a/internal/distro/distro_test.go b/internal/distro/distro_test.go index 304a994e1..2b9c88322 100644 --- a/internal/distro/distro_test.go +++ b/internal/distro/distro_test.go @@ -169,7 +169,7 @@ func TestImageTypePipelineNames(t *testing.T) { m, _, err := imageType.Manifest(&bp, options, repos, nil, containers, seed) assert.NoError(err) - mf, err := m.Serialize(packageSets) + mf, err := m.Serialize(packageSets, nil) assert.NoError(err) pm := new(manifest) err = json.Unmarshal(mf, pm) diff --git a/internal/distro/distro_test_common/distro_test_common.go b/internal/distro/distro_test_common/distro_test_common.go index 2c1e613e3..c14e627f8 100644 --- a/internal/distro/distro_test_common/distro_test_common.go +++ b/internal/distro/distro_test_common/distro_test_common.go @@ -154,7 +154,7 @@ func TestDistro_Manifest(t *testing.T, pipelinePath string, prefix string, regis t.Errorf("distro.Manifest() error = %v", err) return } - got, err := manifest.Serialize(imgPackageSpecSets) + got, err := manifest.Serialize(imgPackageSpecSets, nil) if (err == nil && tt.Manifest == nil) || (err != nil && tt.Manifest != nil) { t.Errorf("distro.Manifest() error = %v", err) diff --git a/internal/manifest/anaconda.go b/internal/manifest/anaconda.go index 4099eefbd..377122259 100644 --- a/internal/manifest/anaconda.go +++ b/internal/manifest/anaconda.go @@ -3,6 +3,7 @@ package manifest import ( "fmt" + "github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/platform" "github.com/osbuild/osbuild-composer/internal/rpmmd" @@ -140,7 +141,7 @@ func (p *Anaconda) getPackageSpecs() []rpmmd.PackageSpec { return p.packageSpecs } -func (p *Anaconda) serializeStart(packages []rpmmd.PackageSpec) { +func (p *Anaconda) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec) { if len(p.packageSpecs) > 0 { panic("double call to serializeStart()") } diff --git a/internal/manifest/build.go b/internal/manifest/build.go index d19957793..d671af099 100644 --- a/internal/manifest/build.go +++ b/internal/manifest/build.go @@ -1,6 +1,7 @@ package manifest import ( + "github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/runner" @@ -67,7 +68,7 @@ func (p *Build) getPackageSpecs() []rpmmd.PackageSpec { return p.packageSpecs } -func (p *Build) serializeStart(packages []rpmmd.PackageSpec) { +func (p *Build) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec) { if len(p.packageSpecs) > 0 { panic("double call to serializeStart()") } diff --git a/internal/manifest/commit_server_tree.go b/internal/manifest/commit_server_tree.go index dd22dfb3f..96d2eb58d 100644 --- a/internal/manifest/commit_server_tree.go +++ b/internal/manifest/commit_server_tree.go @@ -4,6 +4,7 @@ import ( "path/filepath" "github.com/osbuild/osbuild-composer/internal/common" + "github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/platform" "github.com/osbuild/osbuild-composer/internal/rpmmd" @@ -82,7 +83,7 @@ func (p *OSTreeCommitServer) getPackageSpecs() []rpmmd.PackageSpec { return p.packageSpecs } -func (p *OSTreeCommitServer) serializeStart(packages []rpmmd.PackageSpec) { +func (p *OSTreeCommitServer) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec) { if len(p.packageSpecs) > 0 { panic("double call to serializeStart()") } diff --git a/internal/manifest/coreos_installer.go b/internal/manifest/coreos_installer.go index 454da1ab7..80d07567a 100644 --- a/internal/manifest/coreos_installer.go +++ b/internal/manifest/coreos_installer.go @@ -3,6 +3,7 @@ package manifest import ( "fmt" + "github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/fdo" "github.com/osbuild/osbuild-composer/internal/ignition" "github.com/osbuild/osbuild-composer/internal/osbuild" @@ -121,7 +122,7 @@ func (p *CoreOSInstaller) getPackageSpecs() []rpmmd.PackageSpec { return p.packageSpecs } -func (p *CoreOSInstaller) serializeStart(packages []rpmmd.PackageSpec) { +func (p *CoreOSInstaller) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec) { if len(p.packageSpecs) > 0 { panic("double call to serializeStart()") } diff --git a/internal/manifest/manifest.go b/internal/manifest/manifest.go index 0b76f6740..db2acbd19 100644 --- a/internal/manifest/manifest.go +++ b/internal/manifest/manifest.go @@ -131,14 +131,14 @@ func (m Manifest) GetOSTreeSourceSpecs() map[string][]ostree.SourceSpec { return ostreeSpecs } -func (m Manifest) Serialize(packageSets map[string][]rpmmd.PackageSpec) (OSBuildManifest, error) { +func (m Manifest) Serialize(packageSets map[string][]rpmmd.PackageSpec, containerSpecs map[string][]container.Spec) (OSBuildManifest, error) { pipelines := make([]osbuild.Pipeline, 0) packages := make([]rpmmd.PackageSpec, 0) commits := make([]ostree.CommitSpec, 0) inline := make([]string, 0) containers := make([]container.Spec, 0) for _, pipeline := range m.pipelines { - pipeline.serializeStart(packageSets[pipeline.Name()]) + pipeline.serializeStart(packageSets[pipeline.Name()], containerSpecs[pipeline.Name()]) } for _, pipeline := range m.pipelines { commits = append(commits, pipeline.getOSTreeCommits()...) diff --git a/internal/manifest/os.go b/internal/manifest/os.go index dc4d5fe19..b91e051ec 100644 --- a/internal/manifest/os.go +++ b/internal/manifest/os.go @@ -291,11 +291,14 @@ func (p *OS) getContainerSpecs() []container.Spec { return p.containerSpecs } -func (p *OS) serializeStart(packages []rpmmd.PackageSpec) { +func (p *OS) serializeStart(packages []rpmmd.PackageSpec, containers []container.Spec) { if len(p.packageSpecs) > 0 { panic("double call to serializeStart()") } + p.packageSpecs = packages + p.containerSpecs = containers + if p.KernelName != "" { p.kernelVer = rpmmd.GetVerStrFromPackageSpecListPanic(p.packageSpecs, p.KernelName) } diff --git a/internal/manifest/os_test.go b/internal/manifest/os_test.go index c02e36bda..1cf2371aa 100644 --- a/internal/manifest/os_test.go +++ b/internal/manifest/os_test.go @@ -30,7 +30,7 @@ func NewTestOS() *OS { packages := []rpmmd.PackageSpec{ rpmmd.PackageSpec{Name: "pkg1"}, } - os.serializeStart(packages) + os.serializeStart(packages, nil) return os } diff --git a/internal/manifest/pipeline.go b/internal/manifest/pipeline.go index 63b0b08e9..77721b56b 100644 --- a/internal/manifest/pipeline.go +++ b/internal/manifest/pipeline.go @@ -44,7 +44,7 @@ type Pipeline interface { // its full Spec. See the ostree package for more details. getOSTreeCommitSources() []ostree.SourceSpec - serializeStart([]rpmmd.PackageSpec) + serializeStart([]rpmmd.PackageSpec, []container.Spec) serializeEnd() serialize() osbuild.Pipeline @@ -155,7 +155,7 @@ func NewBase(m *Manifest, name string, build *Build) Base { // serializeStart must be called exactly once before each call // to serialize(). -func (p Base) serializeStart([]rpmmd.PackageSpec) { +func (p Base) serializeStart([]rpmmd.PackageSpec, []container.Spec) { } // serializeEnd must be called exactly once after each call to diff --git a/internal/store/fixtures.go b/internal/store/fixtures.go index 60a3c02a4..ef635c4e0 100644 --- a/internal/store/fixtures.go +++ b/internal/store/fixtures.go @@ -56,7 +56,7 @@ func FixtureBase() *Store { panic(fmt.Sprintf("failed to create a manifest: %v", err)) } - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { panic(fmt.Sprintf("failed to create a manifest: %v", err)) } @@ -198,7 +198,7 @@ func FixtureFinished() *Store { panic(fmt.Sprintf("failed to create a manifest: %v", err)) } - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { panic(fmt.Sprintf("failed to create a manifest: %v", err)) } diff --git a/internal/store/store_test.go b/internal/store/store_test.go index d481c7d14..67b4a0e49 100644 --- a/internal/store/store_test.go +++ b/internal/store/store_test.go @@ -53,7 +53,7 @@ func (suite *storeTest) SetupSuite() { suite.myArch, _ = suite.myDistro.GetArch(test_distro.TestArchName) suite.myImageType, _ = suite.myArch.GetImageType(test_distro.TestImageTypeName) manifest, _, _ := suite.myImageType.Manifest(&suite.myBP, suite.myImageOptions, suite.myRepoConfig, nil, nil, 0) - suite.myManifest, _ = manifest.Serialize(nil) + suite.myManifest, _ = manifest.Serialize(nil, nil) suite.mySourceConfig = SourceConfig{ Name: "testSourceConfig", } diff --git a/internal/weldr/api.go b/internal/weldr/api.go index 2305a1a07..47f54110d 100644 --- a/internal/weldr/api.go +++ b/internal/weldr/api.go @@ -2532,7 +2532,7 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request return } - mf, err := manifest.Serialize(packageSets) + mf, err := manifest.Serialize(packageSets, nil) if err != nil { errors := responseError{ ID: "ManifestCreationFailed", diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go index fb91c9abc..724bda1c4 100644 --- a/internal/weldr/api_test.go +++ b/internal/weldr/api_test.go @@ -886,7 +886,7 @@ func TestCompose(t *testing.T) { manifest, _, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil, 0) require.NoError(t, err) - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) require.NoError(t, err) ostreeImgType, err := arch.GetImageType(test_distro.TestImageTypeOSTree) @@ -894,7 +894,7 @@ func TestCompose(t *testing.T) { ostreeManifest, _, err := ostreeImgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil, 0) require.NoError(t, err) - omf, err := ostreeManifest.Serialize(nil) + omf, err := ostreeManifest.Serialize(nil, nil) require.NoError(t, err) expectedComposeLocal := &store.Compose{ @@ -1004,7 +1004,7 @@ func TestCompose(t *testing.T) { manifest2, _, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil, 0) require.NoError(t, err) - mf2, err := manifest2.Serialize(nil) + mf2, err := manifest2.Serialize(nil, nil) require.NoError(t, err) expectedComposeGoodDistro := &store.Compose{ @@ -1998,7 +1998,7 @@ func TestComposePOST_ImageTypeDenylist(t *testing.T) { manifest, _, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil, 0) require.NoError(t, err) - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) require.NoError(t, err) expectedComposeLocal := &store.Compose{ diff --git a/internal/weldr/compose_test.go b/internal/weldr/compose_test.go index a2ac5cb47..513f44542 100644 --- a/internal/weldr/compose_test.go +++ b/internal/weldr/compose_test.go @@ -36,7 +36,7 @@ func TestComposeStatusFromLegacyError(t *testing.T) { if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { t.Fatalf("error serializing osbuild manifest: %v", err) } @@ -89,7 +89,7 @@ func TestComposeStatusFromJobError(t *testing.T) { if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { t.Fatalf("error serializing osbuild manifest: %v", err) } diff --git a/internal/worker/server_test.go b/internal/worker/server_test.go index 8853a2250..ec2085360 100644 --- a/internal/worker/server_test.go +++ b/internal/worker/server_test.go @@ -135,7 +135,7 @@ func TestCreate(t *testing.T) { if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } @@ -165,7 +165,7 @@ func TestCancel(t *testing.T) { t.Fatalf("error creating osbuild manifest: %v", err) } server := newTestServer(t, t.TempDir(), time.Duration(0), "/api/worker/v1", false) - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } @@ -206,7 +206,7 @@ func TestUpdate(t *testing.T) { t.Fatalf("error creating osbuild manifest: %v", err) } server := newTestServer(t, t.TempDir(), time.Duration(0), "/api/worker/v1", false) - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } @@ -238,7 +238,7 @@ func TestArgs(t *testing.T) { manifest, _, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil, 0) require.NoError(t, err) - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) require.NoError(t, err) job := worker.OSBuildJob{ @@ -289,7 +289,7 @@ func TestUpload(t *testing.T) { t.Fatalf("error creating osbuild manifest: %v", err) } server := newTestServer(t, t.TempDir(), time.Duration(0), "/api/worker/v1", true) - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } @@ -324,7 +324,7 @@ func TestUploadNotAcceptingArtifacts(t *testing.T) { } server := newTestServer(t, t.TempDir(), time.Duration(0), "/api/worker/v1", false) handler := server.Handler() - mf, _ := manifest.Serialize(nil) + mf, _ := manifest.Serialize(nil, nil) if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } @@ -356,7 +356,7 @@ func TestUploadAlteredBasePath(t *testing.T) { if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) } - mf, err := manifest.Serialize(nil) + mf, err := manifest.Serialize(nil, nil) if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) }