diff --git a/cmd/osbuild-pipeline/main.go b/cmd/osbuild-pipeline/main.go index 56d2c0869..e90153eeb 100644 --- a/cmd/osbuild-pipeline/main.go +++ b/cmd/osbuild-pipeline/main.go @@ -44,6 +44,8 @@ type rpmMD struct { func main() { var rpmmdArg bool flag.BoolVar(&rpmmdArg, "rpmmd", false, "output rpmmd struct instead of pipeline manifest") + var seedArg int64 + flag.Int64Var(&seedArg, "seed", 0, "seed for generating manifests (default: 0)") flag.Parse() // Path to composeRequet or '-' for stdin @@ -152,7 +154,8 @@ func main() { }, repos, packageSpecs, - buildPackageSpecs) + buildPackageSpecs, + seedArg) if err != nil { panic(err.Error()) } diff --git a/cmd/osbuild-store-dump/main.go b/cmd/osbuild-store-dump/main.go index 508e6fae9..a1c381fe0 100644 --- a/cmd/osbuild-store-dump/main.go +++ b/cmd/osbuild-store-dump/main.go @@ -26,7 +26,7 @@ func getManifest(bp blueprint.Blueprint, t distro.ImageType, a distro.Arch, d di if err != nil { panic(err) } - manifest, err := t.Manifest(bp.Customizations, distro.ImageOptions{}, repos, pkgs, buildPkgs) + manifest, err := t.Manifest(bp.Customizations, distro.ImageOptions{}, repos, pkgs, buildPkgs, 0) if err != nil { panic(err) } diff --git a/internal/cloudapi/server.go b/internal/cloudapi/server.go index aa115b3ed..b05ef4eab 100644 --- a/internal/cloudapi/server.go +++ b/internal/cloudapi/server.go @@ -5,6 +5,7 @@ package cloudapi import ( "encoding/json" "fmt" + "math/rand" "net/http" "github.com/go-chi/chi" @@ -81,6 +82,9 @@ func (server *Server) Compose(w http.ResponseWriter, r *http.Request) { imageRequests := make([]imageRequest, len(request.ImageRequests)) var targets []*target.Target + // use the same seed for all images so we get the same IDs + manifestSeed := rand.Int63() + for i, ir := range request.ImageRequests { arch, err := distribution.GetArch(ir.Architecture) if err != nil { @@ -139,7 +143,7 @@ func (server *Server) Compose(w http.ResponseWriter, r *http.Request) { } } - manifest, err := imageType.Manifest(nil, imageOptions, repositories, packages, buildPackages) + manifest, err := imageType.Manifest(nil, imageOptions, repositories, packages, buildPackages, manifestSeed) if err != nil { http.Error(w, fmt.Sprintf("Failed to get manifest for for %s/%s/%s: %s", ir.ImageType, ir.Architecture, request.Distribution, err), http.StatusBadRequest) return diff --git a/internal/distro/distro.go b/internal/distro/distro.go index 54484cd9b..345459a6a 100644 --- a/internal/distro/distro.go +++ b/internal/distro/distro.go @@ -79,7 +79,7 @@ type ImageType interface { // Returns an osbuild manifest, containing the sources and pipeline necessary // to build an image, given output format with all packages and customizations // specified in the given blueprint. - Manifest(b *blueprint.Customizations, options ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec) (Manifest, error) + Manifest(b *blueprint.Customizations, options ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec, seed int64) (Manifest, error) } // The ImageOptions specify options for a specific image build diff --git a/internal/distro/distro_test_common/distro_test_common.go b/internal/distro/distro_test_common/distro_test_common.go index 4a70b036e..4dfde1cf4 100644 --- a/internal/distro/distro_test_common/distro_test_common.go +++ b/internal/distro/distro_test_common/distro_test_common.go @@ -16,6 +16,8 @@ import ( "github.com/stretchr/testify/require" ) +const RandomTestSeed = 0 + func TestDistro_Manifest(t *testing.T, pipelinePath string, prefix string, distros ...distro.Distro) { assert := assert.New(t) fileNames, err := filepath.Glob(filepath.Join(pipelinePath, prefix)) @@ -89,7 +91,8 @@ func TestDistro_Manifest(t *testing.T, pipelinePath string, prefix string, distr }, repos, tt.RpmMD.Packages, - tt.RpmMD.BuildPackages) + tt.RpmMD.BuildPackages, + RandomTestSeed) if (err == nil && tt.Manifest == nil) || (err != nil && tt.Manifest != nil) { t.Errorf("distro.Manifest() error = %v", err) diff --git a/internal/distro/fedora32/distro.go b/internal/distro/fedora32/distro.go index 81d13e22c..b2a59deda 100644 --- a/internal/distro/fedora32/distro.go +++ b/internal/distro/fedora32/distro.go @@ -183,7 +183,8 @@ func (t *imageType) Manifest(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, - buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + buildPackageSpecs []rpmmd.PackageSpec, + seed int64) (distro.Manifest, error) { pipeline, err := t.pipeline(c, options, repos, packageSpecs, buildPackageSpecs) if err != nil { return distro.Manifest{}, err diff --git a/internal/distro/fedora33/distro.go b/internal/distro/fedora33/distro.go index 3d27483f3..4ac4ca35e 100644 --- a/internal/distro/fedora33/distro.go +++ b/internal/distro/fedora33/distro.go @@ -183,7 +183,8 @@ func (t *imageType) Manifest(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, - buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + buildPackageSpecs []rpmmd.PackageSpec, + seed int64) (distro.Manifest, error) { pipeline, err := t.pipeline(c, options, repos, packageSpecs, buildPackageSpecs) if err != nil { return distro.Manifest{}, err diff --git a/internal/distro/fedoratest/distro.go b/internal/distro/fedoratest/distro.go index 8cb644915..b262aacd3 100644 --- a/internal/distro/fedoratest/distro.go +++ b/internal/distro/fedoratest/distro.go @@ -95,7 +95,8 @@ func (t *imageType) Manifest(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, - buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + buildPackageSpecs []rpmmd.PackageSpec, + seed int64) (distro.Manifest, error) { return json.Marshal( osbuild.Manifest{ diff --git a/internal/distro/rhel8/distro.go b/internal/distro/rhel8/distro.go index 7d8b769be..b76a721ba 100644 --- a/internal/distro/rhel8/distro.go +++ b/internal/distro/rhel8/distro.go @@ -185,7 +185,8 @@ func (t *imageType) Manifest(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, - buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { + buildPackageSpecs []rpmmd.PackageSpec, + seed int64) (distro.Manifest, error) { pipeline, err := t.pipeline(c, options, repos, packageSpecs, buildPackageSpecs) if err != nil { return distro.Manifest{}, err diff --git a/internal/distro/rhel84/distro.go b/internal/distro/rhel84/distro.go index d2d62acf1..575b15b5a 100644 --- a/internal/distro/rhel84/distro.go +++ b/internal/distro/rhel84/distro.go @@ -4,6 +4,8 @@ import ( "encoding/json" "errors" "fmt" + "io" + "math/rand" "sort" "github.com/osbuild/osbuild-composer/internal/disk" @@ -50,7 +52,7 @@ type imageType struct { bootable bool rpmOstree bool defaultSize uint64 - partitionTableGenerator func(imageOptions distro.ImageOptions, arch distro.Arch) disk.PartitionTable + partitionTableGenerator func(imageOptions distro.ImageOptions, arch distro.Arch, rng *rand.Rand) disk.PartitionTable assembler func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler } @@ -188,8 +190,11 @@ func (t *imageType) Manifest(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, - buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { - pipeline, err := t.pipeline(c, options, repos, packageSpecs, buildPackageSpecs) + buildPackageSpecs []rpmmd.PackageSpec, + seed int64) (distro.Manifest, error) { + source := rand.NewSource(seed) + rng := rand.New(source) + pipeline, err := t.pipeline(c, options, repos, packageSpecs, buildPackageSpecs, rng) if err != nil { return distro.Manifest{}, err } @@ -230,10 +235,10 @@ func sources(packages []rpmmd.PackageSpec) *osbuild.Sources { } } -func (t *imageType) pipeline(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec) (*osbuild.Pipeline, error) { +func (t *imageType) pipeline(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec, rng *rand.Rand) (*osbuild.Pipeline, error) { var pt *disk.PartitionTable if t.partitionTableGenerator != nil { - table := t.partitionTableGenerator(options, t.arch) + table := t.partitionTableGenerator(options, t.arch, rng) pt = &table } @@ -497,7 +502,7 @@ func (t *imageType) selinuxStageOptions() *osbuild.SELinuxStageOptions { } } -func defaultPartitionTable(imageOptions distro.ImageOptions, arch distro.Arch) disk.PartitionTable { +func defaultPartitionTable(imageOptions distro.ImageOptions, arch distro.Arch, rng *rand.Rand) disk.PartitionTable { if arch.Name() == "x86_64" { return disk.PartitionTable{ Size: imageOptions.Size, @@ -531,7 +536,7 @@ func defaultPartitionTable(imageOptions distro.ImageOptions, arch distro.Arch) d UUID: "6264D520-3FB9-423F-8AB8-7A0A8E3D3562", Filesystem: &disk.Filesystem{ Type: "xfs", - UUID: "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + UUID: uuid.Must(newRandomUUIDFromReader(rng)).String(), Label: "root", Mountpoint: "/", FSTabOptions: "defaults", @@ -567,7 +572,7 @@ func defaultPartitionTable(imageOptions distro.ImageOptions, arch distro.Arch) d UUID: "6264D520-3FB9-423F-8AB8-7A0A8E3D3562", Filesystem: &disk.Filesystem{ Type: "xfs", - UUID: "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + UUID: uuid.Must(newRandomUUIDFromReader(rng)).String(), Label: "root", Mountpoint: "/", FSTabOptions: "defaults", @@ -592,7 +597,7 @@ func defaultPartitionTable(imageOptions distro.ImageOptions, arch distro.Arch) d Start: 10240, Filesystem: &disk.Filesystem{ Type: "xfs", - UUID: "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + UUID: uuid.Must(newRandomUUIDFromReader(rng)).String(), Mountpoint: "/", FSTabOptions: "defaults", FSTabFreq: 0, @@ -612,7 +617,7 @@ func defaultPartitionTable(imageOptions distro.ImageOptions, arch distro.Arch) d Bootable: true, Filesystem: &disk.Filesystem{ Type: "xfs", - UUID: "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + UUID: uuid.Must(newRandomUUIDFromReader(rng)).String(), Mountpoint: "/", FSTabOptions: "defaults", FSTabFreq: 0, @@ -673,6 +678,17 @@ func ostreeCommitAssembler(options distro.ImageOptions, arch distro.Arch) *osbui ) } +func newRandomUUIDFromReader(r io.Reader) (uuid.UUID, error) { + var id uuid.UUID + _, err := io.ReadFull(r, id[:]) + if err != nil { + return uuid.Nil, err + } + id[6] = (id[6] & 0x0f) | 0x40 // Version 4 + id[8] = (id[8] & 0x3f) | 0x80 // Variant is 10 + return id, nil +} + // New creates a new distro object, defining the supported architectures and image types func New() distro.Distro { const GigaByte = 1024 * 1024 * 1024 diff --git a/internal/distro/test_distro/distro.go b/internal/distro/test_distro/distro.go index a0d2c9dd9..a0c610944 100644 --- a/internal/distro/test_distro/distro.go +++ b/internal/distro/test_distro/distro.go @@ -75,7 +75,7 @@ func (t *TestImageType) BuildPackages() []string { return nil } -func (t *TestImageType) Manifest(b *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec) (distro.Manifest, error) { +func (t *TestImageType) Manifest(b *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec, seed int64) (distro.Manifest, error) { return json.Marshal( osbuild.Manifest{ Sources: osbuild.Sources{}, diff --git a/internal/kojiapi/server.go b/internal/kojiapi/server.go index 55d60658b..aaf88f9f2 100644 --- a/internal/kojiapi/server.go +++ b/internal/kojiapi/server.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "log" + "math/rand" "net/http" "strings" "time" @@ -87,6 +88,9 @@ func (h *apiHandlers) PostCompose(ctx echo.Context) error { kojiFilenames := make([]string, len(request.ImageRequests)) kojiDirectory := "osbuild-composer-koji-" + uuid.New().String() + // use the same seed for all images so we get the same IDs + manifestSeed := rand.Int63() + for i, ir := range request.ImageRequests { arch, err := d.GetArch(ir.Architecture) if err != nil { @@ -119,7 +123,7 @@ func (h *apiHandlers) PostCompose(ctx echo.Context) error { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Failed to depsolve build packages for %s/%s/%s: %s", ir.ImageType, ir.Architecture, request.Distribution, err)) } - manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, repositories, packages, buildPackages) + manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, repositories, packages, buildPackages, manifestSeed) if err != nil { return echo.NewHTTPError(http.StatusBadGateway, fmt.Sprintf("Failed to get manifest for for %s/%s/%s: %s", ir.ImageType, ir.Architecture, request.Distribution, err)) } diff --git a/internal/store/fixtures.go b/internal/store/fixtures.go index 0fc50723b..f72e8a592 100644 --- a/internal/store/fixtures.go +++ b/internal/store/fixtures.go @@ -57,7 +57,7 @@ func FixtureBase() *Store { if err != nil { panic("invalid image type qcow2 for x86_64 @ fedoratest") } - manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil) + manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil, 0) if err != nil { panic("could not create manifest") } @@ -160,7 +160,7 @@ func FixtureFinished() *Store { if err != nil { panic("invalid image type qcow2 for x86_64 @ fedoratest") } - manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil) + manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil, 0) if err != nil { panic("could not create manifest") } diff --git a/internal/store/store_test.go b/internal/store/store_test.go index 674b073cd..9a5844149 100644 --- a/internal/store/store_test.go +++ b/internal/store/store_test.go @@ -51,7 +51,7 @@ func (suite *storeTest) SetupSuite() { suite.myDistro = test_distro.New() suite.myArch, _ = suite.myDistro.GetArch("test_arch") suite.myImageType, _ = suite.myArch.GetImageType("test_type") - suite.myManifest, _ = suite.myImageType.Manifest(&suite.myCustomizations, suite.myImageOptions, suite.myRepoConfig, nil, suite.myPackageSpec) + suite.myManifest, _ = suite.myImageType.Manifest(&suite.myCustomizations, suite.myImageOptions, suite.myRepoConfig, nil, suite.myPackageSpec, 0) suite.mySourceConfig = SourceConfig{ Name: "testSourceConfig", } diff --git a/internal/weldr/api.go b/internal/weldr/api.go index f13614c6a..f1800aec6 100644 --- a/internal/weldr/api.go +++ b/internal/weldr/api.go @@ -8,6 +8,7 @@ import ( "fmt" "io" "log" + "math/rand" "net" "net/http" "net/url" @@ -1846,7 +1847,8 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request }, api.allRepositories(), packages, - buildPackages) + buildPackages, + rand.Int63()) if err != nil { errors := responseError{ ID: "ManifestCreationFailed", diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go index a0d7120d0..86bd19470 100644 --- a/internal/weldr/api_test.go +++ b/internal/weldr/api_test.go @@ -461,7 +461,7 @@ func TestCompose(t *testing.T) { require.NoError(t, err) imgType, err := arch.GetImageType("qcow2") require.NoError(t, err) - manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil) + manifest, err := imgType.Manifest(nil, distro.ImageOptions{}, nil, nil, nil, 0) require.NoError(t, err) expectedComposeLocal := &store.Compose{ Blueprint: &blueprint.Blueprint{ diff --git a/internal/worker/server_test.go b/internal/worker/server_test.go index 864d3239b..277bd4d85 100644 --- a/internal/worker/server_test.go +++ b/internal/worker/server_test.go @@ -60,7 +60,7 @@ func TestCreate(t *testing.T) { if err != nil { t.Fatalf("error getting image type from arch") } - manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil) + manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil, 0) if err != nil { t.Fatalf("error creating osbuild manifest") } @@ -84,7 +84,7 @@ func TestCancel(t *testing.T) { if err != nil { t.Fatalf("error getting image type from arch") } - manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil) + manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil, 0) if err != nil { t.Fatalf("error creating osbuild manifest") } @@ -121,7 +121,7 @@ func TestUpdate(t *testing.T) { if err != nil { t.Fatalf("error getting image type from arch") } - manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil) + manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil, 0) if err != nil { t.Fatalf("error creating osbuild manifest") } @@ -152,7 +152,7 @@ func TestUpload(t *testing.T) { if err != nil { t.Fatalf("error getting image type from arch") } - manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil) + manifest, err := imageType.Manifest(nil, distro.ImageOptions{Size: imageType.Size(0)}, nil, nil, nil, 0) if err != nil { t.Fatalf("error creating osbuild manifest") } diff --git a/test/data/manifests/rhel_84-x86_64-ami-boot.json b/test/data/manifests/rhel_84-x86_64-ami-boot.json index 0ae555619..ff1861825 100644 --- a/test/data/manifests/rhel_84-x86_64-ami-boot.json +++ b/test/data/manifests/rhel_84-x86_64-ami-boot.json @@ -3065,7 +3065,7 @@ "options": { "filesystems": [ { - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "vfs_type": "xfs", "path": "/", "options": "defaults" @@ -3083,7 +3083,7 @@ { "name": "org.osbuild.grub2", "options": { - "root_fs_uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "root_fs_uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "kernel_opts": "console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto", "legacy": "i386-pc", "uefi": { @@ -3140,7 +3140,7 @@ "uuid": "6264D520-3FB9-423F-8AB8-7A0A8E3D3562", "filesystem": { "type": "xfs", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "label": "root", "mountpoint": "/" } @@ -8589,7 +8589,7 @@ }, "image-info": { "boot-environment": { - "kernelopts": "root=UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto" + "kernelopts": "root=UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8 console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto" }, "bootloader": "grub", "bootmenu": [ @@ -8606,6 +8606,14 @@ } ], "fstab": [ + [ + "UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", + "/", + "xfs", + "defaults", + "0", + "0" + ], [ "UUID=7B77-95E7", "/boot/efi", @@ -8613,14 +8621,6 @@ "defaults,uid=0,gid=0,umask=077,shortname=winnt", "0", "2" - ], - [ - "UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d", - "/", - "xfs", - "defaults", - "0", - "0" ] ], "groups": [ @@ -9106,7 +9106,7 @@ "size": 6335479296, "start": 106954752, "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d" + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8" } ], "passwd": [ @@ -9218,4 +9218,4 @@ ], "timezone": "UTC" } -} \ No newline at end of file +} diff --git a/test/data/manifests/rhel_84-x86_64-openstack-boot.json b/test/data/manifests/rhel_84-x86_64-openstack-boot.json index 482f74542..e9be656f4 100644 --- a/test/data/manifests/rhel_84-x86_64-openstack-boot.json +++ b/test/data/manifests/rhel_84-x86_64-openstack-boot.json @@ -3304,7 +3304,7 @@ "options": { "filesystems": [ { - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "vfs_type": "xfs", "path": "/", "options": "defaults" @@ -3322,7 +3322,7 @@ { "name": "org.osbuild.grub2", "options": { - "root_fs_uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "root_fs_uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "kernel_opts": "ro net.ifnames=0", "legacy": "i386-pc", "uefi": { @@ -3389,7 +3389,7 @@ "uuid": "6264D520-3FB9-423F-8AB8-7A0A8E3D3562", "filesystem": { "type": "xfs", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "label": "root", "mountpoint": "/" } @@ -9171,7 +9171,7 @@ }, "image-info": { "boot-environment": { - "kernelopts": "root=UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d ro net.ifnames=0" + "kernelopts": "root=UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8 ro net.ifnames=0" }, "bootloader": "grub", "bootmenu": [ @@ -9193,6 +9193,14 @@ "cockpit" ], "fstab": [ + [ + "UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", + "/", + "xfs", + "defaults", + "0", + "0" + ], [ "UUID=7B77-95E7", "/boot/efi", @@ -9200,14 +9208,6 @@ "defaults,uid=0,gid=0,umask=077,shortname=winnt", "0", "2" - ], - [ - "UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d", - "/", - "xfs", - "defaults", - "0", - "0" ] ], "groups": [ @@ -9730,7 +9730,7 @@ "size": 4187995648, "start": 106954752, "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d" + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8" } ], "passwd": [ @@ -9846,4 +9846,4 @@ ], "timezone": "UTC" } -} \ No newline at end of file +} diff --git a/test/data/manifests/rhel_84-x86_64-qcow2-boot.json b/test/data/manifests/rhel_84-x86_64-qcow2-boot.json index f4483362e..a3f228af8 100644 --- a/test/data/manifests/rhel_84-x86_64-qcow2-boot.json +++ b/test/data/manifests/rhel_84-x86_64-qcow2-boot.json @@ -3433,7 +3433,7 @@ "options": { "filesystems": [ { - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "vfs_type": "xfs", "path": "/", "options": "defaults" @@ -3451,7 +3451,7 @@ { "name": "org.osbuild.grub2", "options": { - "root_fs_uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "root_fs_uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "kernel_opts": "console=tty0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto", "legacy": "i386-pc", "uefi": { @@ -3518,7 +3518,7 @@ "uuid": "6264D520-3FB9-423F-8AB8-7A0A8E3D3562", "filesystem": { "type": "xfs", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "label": "root", "mountpoint": "/" } @@ -9507,7 +9507,7 @@ }, "image-info": { "boot-environment": { - "kernelopts": "root=UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d console=tty0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto" + "kernelopts": "root=UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8 console=tty0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto" }, "bootloader": "grub", "bootmenu": [ @@ -9524,6 +9524,14 @@ } ], "fstab": [ + [ + "UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", + "/", + "xfs", + "defaults", + "0", + "0" + ], [ "UUID=7B77-95E7", "/boot/efi", @@ -9531,14 +9539,6 @@ "defaults,uid=0,gid=0,umask=077,shortname=winnt", "0", "2" - ], - [ - "UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d", - "/", - "xfs", - "defaults", - "0", - "0" ] ], "groups": [ @@ -10091,7 +10091,7 @@ "size": 10630446592, "start": 106954752, "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d" + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8" } ], "passwd": [ @@ -10219,4 +10219,4 @@ ], "timezone": "UTC" } -} \ No newline at end of file +} diff --git a/test/data/manifests/rhel_84-x86_64-qcow2-customize.json b/test/data/manifests/rhel_84-x86_64-qcow2-customize.json index 8e7c66918..3dc436645 100644 --- a/test/data/manifests/rhel_84-x86_64-qcow2-customize.json +++ b/test/data/manifests/rhel_84-x86_64-qcow2-customize.json @@ -3485,7 +3485,7 @@ "options": { "filesystems": [ { - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "vfs_type": "xfs", "path": "/", "options": "defaults" @@ -3503,7 +3503,7 @@ { "name": "org.osbuild.grub2", "options": { - "root_fs_uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "root_fs_uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "kernel_opts": "console=tty0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto debug", "legacy": "i386-pc", "uefi": { @@ -3628,7 +3628,7 @@ "uuid": "6264D520-3FB9-423F-8AB8-7A0A8E3D3562", "filesystem": { "type": "xfs", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "label": "root", "mountpoint": "/" } @@ -9617,7 +9617,7 @@ }, "image-info": { "boot-environment": { - "kernelopts": "root=UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d console=tty0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto debug" + "kernelopts": "root=UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8 console=tty0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto debug" }, "bootloader": "grub", "bootmenu": [ @@ -9634,6 +9634,14 @@ } ], "fstab": [ + [ + "UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", + "/", + "xfs", + "defaults", + "0", + "0" + ], [ "UUID=7B77-95E7", "/boot/efi", @@ -9641,14 +9649,6 @@ "defaults,uid=0,gid=0,umask=077,shortname=winnt", "0", "2" - ], - [ - "UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d", - "/", - "xfs", - "defaults", - "0", - "0" ] ], "groups": [ @@ -10203,7 +10203,7 @@ "size": 10630446592, "start": 106954752, "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d" + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8" } ], "passwd": [ @@ -10333,4 +10333,4 @@ ], "timezone": "London" } -} \ No newline at end of file +} diff --git a/test/data/manifests/rhel_84-x86_64-vhd-boot.json b/test/data/manifests/rhel_84-x86_64-vhd-boot.json index f323d6e04..a394cb7e1 100644 --- a/test/data/manifests/rhel_84-x86_64-vhd-boot.json +++ b/test/data/manifests/rhel_84-x86_64-vhd-boot.json @@ -3259,7 +3259,7 @@ "options": { "filesystems": [ { - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "vfs_type": "xfs", "path": "/", "options": "defaults" @@ -3277,7 +3277,7 @@ { "name": "org.osbuild.grub2", "options": { - "root_fs_uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "root_fs_uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "kernel_opts": "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0", "legacy": "i386-pc", "uefi": { @@ -3354,7 +3354,7 @@ "uuid": "6264D520-3FB9-423F-8AB8-7A0A8E3D3562", "filesystem": { "type": "xfs", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "label": "root", "mountpoint": "/" } @@ -9082,7 +9082,7 @@ }, "image-info": { "boot-environment": { - "kernelopts": "root=UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0" + "kernelopts": "root=UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8 ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0" }, "bootloader": "grub", "bootmenu": [ @@ -9104,6 +9104,14 @@ "cockpit" ], "fstab": [ + [ + "UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", + "/", + "xfs", + "defaults", + "0", + "0" + ], [ "UUID=7B77-95E7", "/boot/efi", @@ -9111,14 +9119,6 @@ "defaults,uid=0,gid=0,umask=077,shortname=winnt", "0", "2" - ], - [ - "UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d", - "/", - "xfs", - "defaults", - "0", - "0" ] ], "groups": [ @@ -9636,7 +9636,7 @@ "size": 4187995648, "start": 106954752, "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d" + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8" } ], "passwd": [ @@ -9756,4 +9756,4 @@ ], "timezone": "UTC" } -} \ No newline at end of file +} diff --git a/test/data/manifests/rhel_84-x86_64-vmdk-boot.json b/test/data/manifests/rhel_84-x86_64-vmdk-boot.json index 0dddefc82..d22078710 100644 --- a/test/data/manifests/rhel_84-x86_64-vmdk-boot.json +++ b/test/data/manifests/rhel_84-x86_64-vmdk-boot.json @@ -3121,7 +3121,7 @@ "options": { "filesystems": [ { - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "vfs_type": "xfs", "path": "/", "options": "defaults" @@ -3139,7 +3139,7 @@ { "name": "org.osbuild.grub2", "options": { - "root_fs_uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "root_fs_uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "kernel_opts": "ro net.ifnames=0", "legacy": "i386-pc", "uefi": { @@ -3206,7 +3206,7 @@ "uuid": "6264D520-3FB9-423F-8AB8-7A0A8E3D3562", "filesystem": { "type": "xfs", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d", + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", "label": "root", "mountpoint": "/" } @@ -8718,7 +8718,7 @@ }, "image-info": { "boot-environment": { - "kernelopts": "root=UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d ro net.ifnames=0" + "kernelopts": "root=UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8 ro net.ifnames=0" }, "bootloader": "grub", "bootmenu": [ @@ -8740,6 +8740,14 @@ "cockpit" ], "fstab": [ + [ + "UUID=0194fdc2-fa2f-4cc0-81d3-ff12045b73c8", + "/", + "xfs", + "defaults", + "0", + "0" + ], [ "UUID=7B77-95E7", "/boot/efi", @@ -8747,14 +8755,6 @@ "defaults,uid=0,gid=0,umask=077,shortname=winnt", "0", "2" - ], - [ - "UUID=efe8afea-c0a8-45dc-8e6e-499279f6fa5d", - "/", - "xfs", - "defaults", - "0", - "0" ] ], "groups": [ @@ -9248,7 +9248,7 @@ "size": 4187995648, "start": 106954752, "type": "0FC63DAF-8483-4772-8E79-3D69D8477DE4", - "uuid": "efe8afea-c0a8-45dc-8e6e-499279f6fa5d" + "uuid": "0194fdc2-fa2f-4cc0-81d3-ff12045b73c8" } ], "passwd": [ @@ -9365,4 +9365,4 @@ ], "timezone": "UTC" } -} \ No newline at end of file +}