From 89a398371dbf843c55a94a99a1a75120c0c0a953 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Wed, 31 May 2023 16:55:21 +0200 Subject: [PATCH] manifest: add resolved commit specs to Serialize() Same as with package specs and container specs, the commit specs are added to the manifest serialization after being resolved. --- cmd/gen-manifests/main.go | 21 ++++++++++++++++++- cmd/osbuild-pipeline/main.go | 21 +++++++++++++------ cmd/osbuild-playground/playground.go | 2 +- cmd/osbuild-store-dump/main.go | 2 +- internal/cloudapi/v2/server.go | 3 ++- internal/distro/distro_test.go | 15 ++++++++++++- .../distro_test_common/distro_test_common.go | 16 +++++++++++++- internal/manifest/anaconda.go | 3 ++- internal/manifest/build.go | 3 ++- internal/manifest/commit_server_tree.go | 3 ++- internal/manifest/coreos_installer.go | 3 ++- internal/manifest/manifest.go | 4 ++-- internal/manifest/os.go | 2 +- internal/manifest/os_test.go | 2 +- internal/manifest/pipeline.go | 4 ++-- internal/store/fixtures.go | 4 ++-- internal/store/store_test.go | 2 +- internal/weldr/api.go | 4 +++- internal/weldr/api_test.go | 8 +++---- internal/weldr/compose_test.go | 4 ++-- internal/worker/server_test.go | 14 ++++++------- 21 files changed, 101 insertions(+), 39 deletions(-) diff --git a/cmd/gen-manifests/main.go b/cmd/gen-manifests/main.go index ab9de66ee..0f4eafda6 100644 --- a/cmd/gen-manifests/main.go +++ b/cmd/gen-manifests/main.go @@ -181,7 +181,9 @@ func makeManifestJob(name string, imgType distro.ImageType, cr composeRequest, d return fmt.Errorf("[%s] container resolution failed: %s", filename, err.Error()) } - mf, err := manifest.Serialize(packageSpecs, containerSpecs) + commitSpecs := resolvePipelineCommits(manifest.Content.OSTreeCommits) + + mf, err := manifest.Serialize(packageSpecs, containerSpecs, commitSpecs) if err != nil { return fmt.Errorf("[%s] manifest serialization failed: %s", filename, err.Error()) } @@ -279,6 +281,23 @@ func resolvePipelineContainers(containerSources map[string][]container.SourceSpe return containerSpecs, nil } +func resolvePipelineCommits(commitSources map[string][]ostree.SourceSpec) map[string][]ostree.CommitSpec { + // "resolve" ostree commits by copying the source specs into commit specs + commits := make(map[string][]ostree.CommitSpec, len(commitSources)) + for name, commitSources := range commitSources { + commitSpecs := make([]ostree.CommitSpec, len(commitSources)) + for idx, commitSource := range commitSources { + commitSpecs[idx] = ostree.CommitSpec{ + Ref: commitSource.Ref, + URL: commitSource.URL, + Checksum: commitSource.Parent, + } + } + commits[name] = commitSpecs + } + return commits +} + func depsolve(cacheDir string, packageSets map[string][]rpmmd.PackageSet, d distro.Distro, arch string) (map[string][]rpmmd.PackageSpec, error) { solver := dnfjson.NewSolver(d.ModulePlatformID(), d.Releasever(), arch, d.Name(), cacheDir) solver.SetDNFJSONPath("./dnf-json") diff --git a/cmd/osbuild-pipeline/main.go b/cmd/osbuild-pipeline/main.go index 8dd619fe3..68d61ec76 100644 --- a/cmd/osbuild-pipeline/main.go +++ b/cmd/osbuild-pipeline/main.go @@ -223,6 +223,20 @@ func main() { containers[name] = containerSpecs } + // "resolve" ostree commits by copying the source specs into commit specs + commits := make(map[string][]ostree.CommitSpec, len(manifest.Content.OSTreeCommits)) + for name, commitSources := range manifest.Content.OSTreeCommits { + commitSpecs := make([]ostree.CommitSpec, len(commitSources)) + for idx, commitSource := range commitSources { + commitSpecs[idx] = ostree.CommitSpec{ + Ref: commitSource.Ref, + URL: commitSource.URL, + Checksum: commitSource.Parent, + } + } + commits[name] = commitSpecs + } + var bytes []byte if rpmmdArg { bytes, err = json.Marshal(depsolvedSets) @@ -230,12 +244,7 @@ func main() { panic(err) } } else { - if composeRequest.OSTree.Ref == "" { - // use default OSTreeRef for image type - composeRequest.OSTree.Ref = imageType.OSTreeRef() - } - - ms, err := manifest.Serialize(depsolvedSets, containers) + ms, err := manifest.Serialize(depsolvedSets, containers, commits) if err != nil { panic(err.Error()) } diff --git a/cmd/osbuild-playground/playground.go b/cmd/osbuild-playground/playground.go index e13d67d91..ffae7093b 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, nil) + bytes, err := manifest.Serialize(packageSpecs, nil, 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 1f06aba9a..d5a5fdc9a 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, nil) + mf, err := manifest.Serialize(pkgSpecSets, nil, nil) if err != nil { panic(err) } diff --git a/internal/cloudapi/v2/server.go b/internal/cloudapi/v2/server.go index a7af57efa..ef0d26b51 100644 --- a/internal/cloudapi/v2/server.go +++ b/internal/cloudapi/v2/server.go @@ -507,7 +507,8 @@ func generateManifest(ctx context.Context, workers *worker.Server, depsolveJobID } else { panic(fmt.Sprintf("ImageType %q does not define payload pipelines - this is a programming error", imageType.Name())) } - ms, err := manifest.Serialize(depsolveResults.PackageSpecs, map[string][]container.Spec{payloadPipelineName: containerSpecs}) + // TODO: resolve ostree source spec from manifest content and pass here. + ms, err := manifest.Serialize(depsolveResults.PackageSpecs, map[string][]container.Spec{payloadPipelineName: containerSpecs}, nil) jobResult.Manifest = ms } diff --git a/internal/distro/distro_test.go b/internal/distro/distro_test.go index a3d8dc3e8..2c3462d28 100644 --- a/internal/distro/distro_test.go +++ b/internal/distro/distro_test.go @@ -171,7 +171,20 @@ func TestImageTypePipelineNames(t *testing.T) { assert.NoError(err) containers := make(map[string][]container.Spec, 0) - mf, err := m.Serialize(packageSets, containers) + // "resolve" ostree commits by copying the source specs into commit specs + commits := make(map[string][]ostree.CommitSpec, len(m.Content.OSTreeCommits)) + for name, commitSources := range m.Content.OSTreeCommits { + commitSpecs := make([]ostree.CommitSpec, len(commitSources)) + for idx, commitSource := range commitSources { + commitSpecs[idx] = ostree.CommitSpec{ + Ref: commitSource.Ref, + URL: commitSource.URL, + Checksum: commitSource.Parent, + } + } + commits[name] = commitSpecs + } + mf, err := m.Serialize(packageSets, containers, commits) 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 91901e5ce..58d6df1e8 100644 --- a/internal/distro/distro_test_common/distro_test_common.go +++ b/internal/distro/distro_test_common/distro_test_common.go @@ -149,7 +149,21 @@ func TestDistro_Manifest(t *testing.T, pipelinePath string, prefix string, regis t.Errorf("distro.Manifest() error = %v", err) return } - got, err := manifest.Serialize(imgPackageSpecSets, tt.Containers) + + // "resolve" ostree commits by copying the source specs into commit specs + commits := make(map[string][]ostree.CommitSpec, len(manifest.Content.OSTreeCommits)) + for name, commitSources := range manifest.Content.OSTreeCommits { + commitSpecs := make([]ostree.CommitSpec, len(commitSources)) + for idx, commitSource := range commitSources { + commitSpecs[idx] = ostree.CommitSpec{ + Ref: commitSource.Ref, + URL: commitSource.URL, + Checksum: commitSource.Parent, + } + } + commits[name] = commitSpecs + } + got, err := manifest.Serialize(imgPackageSpecSets, tt.Containers, commits) 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 377122259..ace178c8e 100644 --- a/internal/manifest/anaconda.go +++ b/internal/manifest/anaconda.go @@ -5,6 +5,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/osbuild" + "github.com/osbuild/osbuild-composer/internal/ostree" "github.com/osbuild/osbuild-composer/internal/platform" "github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/users" @@ -141,7 +142,7 @@ func (p *Anaconda) getPackageSpecs() []rpmmd.PackageSpec { return p.packageSpecs } -func (p *Anaconda) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec) { +func (p *Anaconda) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec, _ []ostree.CommitSpec) { if len(p.packageSpecs) > 0 { panic("double call to serializeStart()") } diff --git a/internal/manifest/build.go b/internal/manifest/build.go index d671af099..1c92ba93b 100644 --- a/internal/manifest/build.go +++ b/internal/manifest/build.go @@ -3,6 +3,7 @@ package manifest import ( "github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/osbuild" + "github.com/osbuild/osbuild-composer/internal/ostree" "github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/runner" ) @@ -68,7 +69,7 @@ func (p *Build) getPackageSpecs() []rpmmd.PackageSpec { return p.packageSpecs } -func (p *Build) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec) { +func (p *Build) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec, _ []ostree.CommitSpec) { 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 96d2eb58d..1f30d6753 100644 --- a/internal/manifest/commit_server_tree.go +++ b/internal/manifest/commit_server_tree.go @@ -6,6 +6,7 @@ import ( "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/ostree" "github.com/osbuild/osbuild-composer/internal/platform" "github.com/osbuild/osbuild-composer/internal/rpmmd" ) @@ -83,7 +84,7 @@ func (p *OSTreeCommitServer) getPackageSpecs() []rpmmd.PackageSpec { return p.packageSpecs } -func (p *OSTreeCommitServer) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec) { +func (p *OSTreeCommitServer) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec, _ []ostree.CommitSpec) { 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 80d07567a..5bcf6c6fe 100644 --- a/internal/manifest/coreos_installer.go +++ b/internal/manifest/coreos_installer.go @@ -7,6 +7,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/fdo" "github.com/osbuild/osbuild-composer/internal/ignition" "github.com/osbuild/osbuild-composer/internal/osbuild" + "github.com/osbuild/osbuild-composer/internal/ostree" "github.com/osbuild/osbuild-composer/internal/platform" "github.com/osbuild/osbuild-composer/internal/rpmmd" ) @@ -122,7 +123,7 @@ func (p *CoreOSInstaller) getPackageSpecs() []rpmmd.PackageSpec { return p.packageSpecs } -func (p *CoreOSInstaller) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec) { +func (p *CoreOSInstaller) serializeStart(packages []rpmmd.PackageSpec, _ []container.Spec, _ []ostree.CommitSpec) { if len(p.packageSpecs) > 0 { panic("double call to serializeStart()") } diff --git a/internal/manifest/manifest.go b/internal/manifest/manifest.go index db2acbd19..b9085ffb7 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, containerSpecs map[string][]container.Spec) (OSBuildManifest, error) { +func (m Manifest) Serialize(packageSets map[string][]rpmmd.PackageSpec, containerSpecs map[string][]container.Spec, ostreeCommits map[string][]ostree.CommitSpec) (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()], containerSpecs[pipeline.Name()]) + pipeline.serializeStart(packageSets[pipeline.Name()], containerSpecs[pipeline.Name()], ostreeCommits[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 b91e051ec..ccbe783f6 100644 --- a/internal/manifest/os.go +++ b/internal/manifest/os.go @@ -291,7 +291,7 @@ func (p *OS) getContainerSpecs() []container.Spec { return p.containerSpecs } -func (p *OS) serializeStart(packages []rpmmd.PackageSpec, containers []container.Spec) { +func (p *OS) serializeStart(packages []rpmmd.PackageSpec, containers []container.Spec, commits []ostree.CommitSpec) { if len(p.packageSpecs) > 0 { panic("double call to serializeStart()") } diff --git a/internal/manifest/os_test.go b/internal/manifest/os_test.go index da556c3fc..f4cb115fd 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, nil) + os.serializeStart(packages, nil, nil) return os } diff --git a/internal/manifest/pipeline.go b/internal/manifest/pipeline.go index 77721b56b..84ac7a489 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, []container.Spec) + serializeStart([]rpmmd.PackageSpec, []container.Spec, []ostree.CommitSpec) 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, []container.Spec) { +func (p Base) serializeStart([]rpmmd.PackageSpec, []container.Spec, []ostree.CommitSpec) { } // serializeEnd must be called exactly once after each call to diff --git a/internal/store/fixtures.go b/internal/store/fixtures.go index 2ad93815d..1336174a0 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, nil) + mf, err := manifest.Serialize(nil, 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, nil) + mf, err := manifest.Serialize(nil, 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 b8f790c43..735c22ff0 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, 0) - suite.myManifest, _ = manifest.Serialize(nil, nil) + suite.myManifest, _ = manifest.Serialize(nil, nil, nil) suite.mySourceConfig = SourceConfig{ Name: "testSourceConfig", } diff --git a/internal/weldr/api.go b/internal/weldr/api.go index 6bb2c884f..cf449b644 100644 --- a/internal/weldr/api.go +++ b/internal/weldr/api.go @@ -2450,6 +2450,7 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request // Fake a parent commit for test requests cr.OSTree.Parent = "02604b2da6e954bd34b8b82a835e5a77d2b60ffa" } else if imageType.OSTreeRef() != "" { + // TODO: don't read image ref from image type directly; instead get it from the manifest after initialising. // If the image type has a default ostree ref, assume this is an OSTree image reqParams := cr.OSTree if reqParams.Ref == "" { @@ -2533,7 +2534,8 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request return } - mf, err := manifest.Serialize(packageSets, containerSpecs) + // TODO: resolve ostree source spec from manifest content and pass here. + mf, err := manifest.Serialize(packageSets, containerSpecs, nil) if err != nil { errors := responseError{ ID: "ManifestCreationFailed", diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go index d35728a14..c73b05bbf 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, 0) require.NoError(t, err) - mf, err := manifest.Serialize(nil, nil) + mf, err := manifest.Serialize(nil, 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, 0) require.NoError(t, err) - omf, err := ostreeManifest.Serialize(nil, nil) + omf, err := ostreeManifest.Serialize(nil, 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, 0) require.NoError(t, err) - mf2, err := manifest2.Serialize(nil, nil) + mf2, err := manifest2.Serialize(nil, 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, 0) require.NoError(t, err) - mf, err := manifest.Serialize(nil, nil) + mf, err := manifest.Serialize(nil, nil, nil) require.NoError(t, err) expectedComposeLocal := &store.Compose{ diff --git a/internal/weldr/compose_test.go b/internal/weldr/compose_test.go index 54cb5418e..68534b9ba 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, nil) + mf, err := manifest.Serialize(nil, 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, nil) + mf, err := manifest.Serialize(nil, 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 5bd3d8ad5..f9e91cab2 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, nil) + mf, err := manifest.Serialize(nil, 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, nil) + mf, err := manifest.Serialize(nil, 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, nil) + mf, err := manifest.Serialize(nil, 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, 0) require.NoError(t, err) - mf, err := manifest.Serialize(nil, nil) + mf, err := manifest.Serialize(nil, 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, nil) + mf, err := manifest.Serialize(nil, 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, nil) + mf, _ := manifest.Serialize(nil, 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, nil) + mf, err := manifest.Serialize(nil, nil, nil) if err != nil { t.Fatalf("error creating osbuild manifest: %v", err) }