From 8d1aed19c6881d9e42a087fa88b9cd05e9690b0e Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Mon, 25 Nov 2024 16:17:19 +0100 Subject: [PATCH] image: run ValidateLayoutConstraints() when using DiskCustomizations This commit will run ValidateLayoutConstraints() when a `DiskCustomization` is used. --- bib/cmd/bootc-image-builder/image.go | 4 ++++ bib/cmd/bootc-image-builder/image_test.go | 25 +++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/bib/cmd/bootc-image-builder/image.go b/bib/cmd/bootc-image-builder/image.go index 5a5f9e22..3e69abad 100644 --- a/bib/cmd/bootc-image-builder/image.go +++ b/bib/cmd/bootc-image-builder/image.go @@ -219,6 +219,10 @@ func genPartitionTable(c *ManifestConfig, customizations *blueprint.Customizatio } func genPartitionTableDiskCust(c *ManifestConfig, diskCust *blueprint.DiskCustomization, rng *rand.Rand) (*disk.PartitionTable, error) { + if err := diskCust.ValidateLayoutConstraints(); err != nil { + return nil, fmt.Errorf("cannot use disk customization: %w", err) + } + diskCust.MinSize = max(diskCust.MinSize, c.RootfsMinsize) basept, ok := partitionTables[c.Architecture.String()] diff --git a/bib/cmd/bootc-image-builder/image_test.go b/bib/cmd/bootc-image-builder/image_test.go index 68b32713..10ae8341 100644 --- a/bib/cmd/bootc-image-builder/image_test.go +++ b/bib/cmd/bootc-image-builder/image_test.go @@ -423,3 +423,28 @@ func TestGenPartitionTableSetsRootfsForAllFilesystemsBtrfs(t *testing.T) { mnt, _ = findMountableSizeableFor(pt, "/boot/efi") assert.Equal(t, "vfat", mnt.GetFSType()) } + +func TestGenPartitionTableDiskCustomizationRunsValidateLayoutConstraints(t *testing.T) { + rng := bib.CreateRand() + + cnf := &bib.ManifestConfig{ + Architecture: arch.FromString("amd64"), + RootFSType: "xfs", + } + cus := &blueprint.Customizations{ + Disk: &blueprint.DiskCustomization{ + Partitions: []blueprint.PartitionCustomization{ + { + Type: "lvm", + VGCustomization: blueprint.VGCustomization{}, + }, + { + Type: "lvm", + VGCustomization: blueprint.VGCustomization{}, + }, + }, + }, + } + _, err := bib.GenPartitionTable(cnf, cus, rng) + assert.EqualError(t, err, "cannot use disk customization: multiple LVM volume groups are not yet supported") +}