manifest: container specs added during serialization

Add a second argument, map[string][]container.Spec, during
serialization, which serves the same purpose as the depsolved package
sets.
This commit is contained in:
Achilleas Koutsou 2023-05-15 21:39:11 +02:00 committed by Simon de Vlieger
parent b1f185959b
commit 267a27a1a8
21 changed files with 41 additions and 34 deletions

View file

@ -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(),

View file

@ -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())
}

View file

@ -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())
}

View file

@ -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)
}

View file

@ -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
}

View file

@ -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)

View file

@ -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)

View file

@ -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()")
}

View file

@ -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()")
}

View file

@ -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()")
}

View file

@ -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()")
}

View file

@ -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()...)

View file

@ -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)
}

View file

@ -30,7 +30,7 @@ func NewTestOS() *OS {
packages := []rpmmd.PackageSpec{
rpmmd.PackageSpec{Name: "pkg1"},
}
os.serializeStart(packages)
os.serializeStart(packages, nil)
return os
}

View file

@ -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

View file

@ -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))
}

View file

@ -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",
}

View file

@ -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",

View file

@ -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{

View file

@ -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)
}

View file

@ -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)
}