Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 28 additions & 24 deletions pkg/distro/bootc/bootc.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,9 @@ var _ = distro.ImageType(&BootcImageType{})
type BootcImageType struct {
arch *BootcArch

name string
export string
// file extension
ext string
name string
export string
filename string
}

func (d *BootcDistro) SetBuildContainer(imgref string) (err error) {
Expand Down Expand Up @@ -215,7 +214,7 @@ func (t *BootcImageType) Arch() distro.Arch {
}

func (t *BootcImageType) Filename() string {
return fmt.Sprintf("disk.%s", t.ext)
return t.filename
}

func (t *BootcImageType) MIMEType() string {
Expand Down Expand Up @@ -329,7 +328,7 @@ func (t *BootcImageType) Manifest(bp *blueprint.Blueprint, options distro.ImageO
}
// For the bootc-disk image, the filename is the basename and
// the extension is added automatically for each disk format
filename := "disk"
filename := strings.Split(t.filename, ".")[0]

img := image.NewBootcDiskImage(platform, filename, containerSource, buildContainerSource)
img.OSCustomizations.Users = users.UsersFromBP(customizations.GetUsers())
Expand Down Expand Up @@ -453,34 +452,39 @@ func newBootcDistroAfterIntrospect(archStr string, info *osinfo.Info, imgref, de
// XXX: find a way to avoid this duplication
ba.addImageTypes(
BootcImageType{
name: "ami",
export: "image",
ext: "raw",
name: "ami",
export: "image",
filename: "disk.raw",
},
BootcImageType{
name: "qcow2",
export: "qcow2",
ext: "qcow2",
name: "qcow2",
export: "qcow2",
filename: "disk.qcow2",
},
BootcImageType{
name: "raw",
export: "image",
ext: "raw",
name: "raw",
export: "image",
filename: "disk.raw",
},
BootcImageType{
name: "vmdk",
export: "vmdk",
ext: "vmdk",
name: "vmdk",
export: "vmdk",
filename: "disk.vmdk",
},
BootcImageType{
name: "vhd",
export: "bpc",
ext: "vhd",
name: "vhd",
export: "bpc",
filename: "disk.vhd",
},
BootcImageType{
name: "gce",
export: "gce",
ext: "tar.gz",
name: "gce",
export: "gce",
filename: "image.tar.gz",
},
BootcImageType{
name: "ova",
export: "archive",
filename: "image.ova",
},
)
bd.addArches(ba)
Expand Down
28 changes: 27 additions & 1 deletion pkg/distro/bootc/bootc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import (
"github.com/osbuild/images/pkg/depsolvednf"
"github.com/osbuild/images/pkg/distro"
"github.com/osbuild/images/pkg/manifest"
"github.com/osbuild/images/pkg/osbuild"
"github.com/osbuild/images/pkg/osbuild/manifesttest"
)

type manifestTestCase struct {
Expand Down Expand Up @@ -209,7 +211,7 @@ func TestManifestSerialization(t *testing.T) {
"qcow2-nocontainer": {
config: userConfig,
imageTypes: []string{"qcow2"},
err: `cannot serialize pipeline "target": BuildrootFromContainer: serialization not started`,
err: `cannot serialize pipeline "build": BuildrootFromContainer: serialization not started`,
},
}

Expand Down Expand Up @@ -245,3 +247,27 @@ func TestBootcDistroGetArch(t *testing.T) {
_, err = distro.GetArch("aarch64")
assert.EqualError(t, err, `requested bootc arch "aarch64" does not match available arches [x86_64]`)
}

func TestManifestGenerationOvaFilename(t *testing.T) {
bp := getUserConfig()
imgOptions := distro.ImageOptions{}

bd := NewTestBootcDistro()
imgType, err := bd.arches["x86_64"].GetImageType("ova")
assert.NoError(t, err)

mf, _, err := imgType.Manifest(bp, imgOptions, nil, common.ToPtr(int64(0)))
assert.NoError(t, err)
manifestJson, err := mf.Serialize(nil, diskContainers, nil, nil)
assert.NoError(t, err)
mani, err := manifesttest.NewManifestFromBytes(manifestJson)
assert.NoError(t, err)
archivePipeline := mani.Pipeline("archive")
assert.NotNil(t, archivePipeline)
stages := archivePipeline.Stages
assert.Len(t, stages, 1)
var tarStageOptions osbuild.TarStageOptions
err = json.Unmarshal(stages[0].Options, &tarStageOptions)
assert.NoError(t, err)
assert.Equal(t, "image.ova", tarStageOptions.Filename)
}
35 changes: 13 additions & 22 deletions pkg/distro/bootc/export_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@ import (

"github.com/osbuild/blueprint/pkg/blueprint"

"github.com/osbuild/images/pkg/arch"
"github.com/osbuild/images/internal/common"
"github.com/osbuild/images/pkg/bib/osinfo"
"github.com/osbuild/images/pkg/disk"
"github.com/osbuild/images/pkg/distro"
)

var (
Expand All @@ -20,30 +19,22 @@ var (
TestDiskContainers = diskContainers
)

func NewTestBootcImageType() *BootcImageType {
d := &BootcDistro{
sourceInfo: &osinfo.Info{
OSRelease: osinfo.OSRelease{
ID: "bootc-test",
},
func NewTestBootcDistro() *BootcDistro {
info := &osinfo.Info{
OSRelease: osinfo.OSRelease{
ID: "bootc-test",
},
imgref: "quay.io/example/example:ref",
defaultFs: "xfs",
}
a := &BootcArch{distro: d, arch: arch.ARCH_X86_64}
d.arches = map[string]distro.Arch{
"x86_64": a,
}
return common.Must(newBootcDistroAfterIntrospect("x86_64", info, "quay.io/example/example:ref", "xfs", 0))
}

imgType := &BootcImageType{
arch: a,
name: "qcow2",
export: "qcow2",
ext: "qcow2",
func NewTestBootcImageType() *BootcImageType {
d := NewTestBootcDistro()
it, err := d.arches["x86_64"].GetImageType("qcow2")
if err != nil {
panic(err)
}
a.addImageTypes(*imgType)

return imgType
return it.(*BootcImageType)
}

func (t *BootcImageType) SetSourceInfoPartitionTable(basept *disk.PartitionTable) {
Expand Down
3 changes: 1 addition & 2 deletions pkg/image/bootc_disk.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,13 +134,12 @@ func (img *BootcDiskImage) InstantiateManifestFromContainers(m *manifest.Manifes
ovfPipeline := manifest.NewOVF(hostPipeline, vmdkPipeline)
tarPipeline := manifest.NewTar(hostPipeline, ovfPipeline, "archive")
tarPipeline.Format = osbuild.TarArchiveFormatUstar
tarPipeline.SetFilename(fmt.Sprintf("%s.tar", fileBasename))
tarPipeline.SetFilename(fmt.Sprintf("%s.ova", fileBasename))
// The .ovf descriptor needs to be the first file in the archive
tarPipeline.Paths = []string{
fmt.Sprintf("%s.ovf", fileBasename),
fmt.Sprintf("%s.mf", fileBasename),
fmt.Sprintf("%s.vmdk", fileBasename),
fmt.Sprintf("%s.vhd", fileBasename),
}

gcePipeline := newGCETarPipelineForImg(buildPipeline, rawImage, "gce")
Expand Down
9 changes: 9 additions & 0 deletions pkg/osbuild/manifesttest/manifesttest.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,15 @@ func (p *Pipeline) Stage(typ string) *Stage {
return nil
}

func (m *Manifest) Pipeline(name string) *Pipeline {
for _, p := range m.Pipelines {
if p.Name == name {
return &p
}
}
return nil
}

// Stage is a unmarshalable version of osbuild.Stage with extra
// debug helpers
type Stage struct {
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b8a2e3722b12d0327672c2ff1765c0e6cbd355df
be92367cbe05c5dba5c6061ad09d70d8e8357592
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3c444830b05ee7e9bbf7a44494701130087e0ed0
5a2e44f05d0775d9cc7c988cf4479a211100e93e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
84fe6462a56271c998d3b51c9d74d9514aae21a4
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22d208e39a11ba5feb8f586be9b3b9f8257f8263
439078c68a3c2225d89dd9c925919a13b69bc4f0
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f4f2f3508999911db0befd41b6429ae0c0a525ab
d849973f6298f868a5fa965db6912d9a4b1b7da8
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5b3da86b3a2abfafe5cb2d3de4acfa01ab4beebb
b05ae8d20f891817ae01e8e930dfe5c694ab9832
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6a70959d7e673cde56b11b89785a2ac9dec7106c
f2219c91de6431632f2addbe3c9524bd1b299e93
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b7ddbad816724cb66eec36cf7ca2b643d15f4c9d
e59e82acecb24375bc56f4bcf7ede6a9f966d357
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ad12dee18e7f6e33b076b9377c1fd1879dcead7e
adac2acafceacc285567182b2bb34ee852b0d349
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
94cbbc242f012edcc26e135843ab9c8dc5e5553b
Original file line number Diff line number Diff line change
@@ -1 +1 @@
14d6cffd05250e0b6ac1113aa2a5cb1ccb3b33d2
8094e94ce116d8dc76554058e220c51c2b994ee8
Original file line number Diff line number Diff line change
@@ -1 +1 @@
49ad8d143bbbf96bce01a029745e7bfba4d7b900
0bbeb4ef032a713f89e0f8d5eae0ecf6b4e103e2
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2d31fe3c4c747c4b5ae3094bf4182ecc8dc7caeb
83ddce6c176a16644a1686d5907462e9d739b56e
Original file line number Diff line number Diff line change
@@ -1 +1 @@
498f8bde1ec3ce0f704fe98ec4f8050d850d73f4
22b19f974d84d60296eb9092770b887c89f0ca44
Original file line number Diff line number Diff line change
@@ -1 +1 @@
54bf9201635e54806ddea4cda2947fd99d7c276c
1f70e6bcf60915aefc48c2483dfe74332519c8da
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c1ef1aac4823032a85371c75a111638c37e31ffe
afac907d5169b9d081f6b40c67ebbecd40a50732
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b1c8df167d7ccc1fdf1c0421621e3f1a13f5c60f
Original file line number Diff line number Diff line change
@@ -1 +1 @@
554badbf13db66e073446315b25c8dd8ac974a9e
9934911972c90d344f1115d43cae1a0766f72bdc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
465de5127abee6828a1b60a280b8630f9ac5457a
32e1db1f27426b828ea41dee6f070ac90f8e7981
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ff19bdec8c095f3d146e84498877932249aded4a
8a35a0035c632e2b7c88d7b48c0a793b6f8a9118
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d634826c27a2993ef59e6bfa5a764219b2a83325
9d00abbb11187099bfba2853b6f0a8557d103b59
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eece2136444b81ffec6edcfb4f14f69ab7218ed4
201804dda1d4fc678abf4df10e782fcd22dfdad3
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a6df8aa5feae6b9f7c35dc805baadcf292258896
139423bc4831ed68f726e579e04bb1913a90f57a
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7018c3b6f62d2cd693ab0dd59ecfaa74e0d41012
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6dc585a8846922b1d1486af70f124fb3026f20db
f90228bb378ba066b45add09fc33eaf52d3efd56
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6f73b578193e4b8f3fca9a7c9d408791237cadb9
eedbdd59e9ccbecad2f4be6041600d0241f6692a
Original file line number Diff line number Diff line change
@@ -1 +1 @@
31b7b9f7874a1d94d656028ed06a7fbcf04b9a90
3332836bfe8103d0b210f53f3d7a918ecea315bc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c2ffb4e140c7927fc51af604abd42e58e407e536
b7384e47fdec3ed6ba747dfe1d3a910b2c1426d1
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3acf7e43d917fba754c7dddc6ad793616ff54cce
eb148ebc11dcde5b81b42dbc4d6fe9e3c24a221e
Original file line number Diff line number Diff line change
@@ -1 +1 @@
46ec6c72dc9942552f2fdab02ae0a1b3950954a8
da256b6bbf359f058e6321a77843c4f70c88ecec
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d023453511e433e6b5dab3029879e3fa98fca531
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e2d3eca009d3276d5cc286df48f2c2d9b99aaecc
26c1410ce877a24f4e0023aafdf312f5e1c7a90e
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7f6896bf5f7437f01a08b417077c7f647eea22a3
3a59566c39c6baaa9bfe5939aab8b0d4f1a414e1
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ed2b094ebe4646ad8a305173251128c251de9bf9
89d01a259aac5a45c30f4b94746c3d73756185a9
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a8365d782f5261d21d8e17a947d20faca2422ffe
4cc099d9acd917bf03541b2fdfa3b0ba9fac87ab
Loading