diff --git a/pkg/types/v1/config.go b/pkg/types/v1/config.go index 9233889..f524470 100644 --- a/pkg/types/v1/config.go +++ b/pkg/types/v1/config.go @@ -98,6 +98,11 @@ func (i *InstallSpec) Sanitize() error { if extraPartsSizeCheck == 1 && i.Partitions.Persistent.Size == 0 { return fmt.Errorf("both persistent partition and extra partitions have size set to 0. Only one partition can have its size set to 0 which means that it will take all the available disk space in the device") } + + // Set default labels in case the config from cloud/config overrides this values. + // we need them to be on fixed values, otherwise we wont know where to find things on boot, on reset, etc... + i.Partitions.SetDefaultLabels() + return i.Partitions.SetFirmwarePartitions(i.Firmware, i.PartTable) } @@ -271,6 +276,18 @@ func (ep *ElementalPartitions) SetFirmwarePartitions(firmware string, partTable return nil } +// SetDefaultLabels sets the default labels for oem, state, persistent and recovery partitions. +func (ep *ElementalPartitions) SetDefaultLabels() { + ep.OEM.FilesystemLabel = constants.OEMLabel + ep.OEM.Name = constants.OEMPartName + ep.State.FilesystemLabel = constants.StateLabel + ep.State.Name = constants.StatePartName + ep.Persistent.FilesystemLabel = constants.PersistentLabel + ep.Persistent.Name = constants.PersistentPartName + ep.Recovery.FilesystemLabel = constants.RecoveryLabel + ep.Recovery.Name = constants.RecoveryPartName +} + // NewElementalPartitionsFromList fills an ElementalPartitions instance from given // partitions list. First tries to match partitions by partition label, if not, // it tries to match partitions by default filesystem label diff --git a/pkg/types/v1/config_test.go b/pkg/types/v1/config_test.go index b4dc344..80916f0 100644 --- a/pkg/types/v1/config_test.go +++ b/pkg/types/v1/config_test.go @@ -239,7 +239,11 @@ var _ = Describe("Types", Label("types", "config"), func() { Passive: v1.Image{ Source: v1.NewEmptySrc(), }, - Partitions: v1.ElementalPartitions{}, + Partitions: v1.ElementalPartitions{ + OEM: &v1.Partition{}, + Recovery: &v1.Partition{}, + Persistent: &v1.Partition{}, + }, ExtraPartitions: v1.PartitionList{}, } }) @@ -276,6 +280,14 @@ var _ = Describe("Types", Label("types", "config"), func() { Expect(spec.Partitions.EFI).To(BeNil()) Expect(spec.Partitions.BIOS).ToNot(BeNil()) Expect(spec.Partitions.BIOS.Flags).To(ContainElement("bios_grub")) + Expect(spec.Partitions.OEM.FilesystemLabel).To(Equal(constants.OEMLabel)) + Expect(spec.Partitions.OEM.Name).To(Equal(constants.OEMPartName)) + Expect(spec.Partitions.Recovery.FilesystemLabel).To(Equal(constants.RecoveryLabel)) + Expect(spec.Partitions.Recovery.Name).To(Equal(constants.RecoveryPartName)) + Expect(spec.Partitions.Persistent.FilesystemLabel).To(Equal(constants.PersistentLabel)) + Expect(spec.Partitions.Persistent.Name).To(Equal(constants.PersistentPartName)) + Expect(spec.Partitions.State.FilesystemLabel).To(Equal(constants.StateLabel)) + Expect(spec.Partitions.State.Name).To(Equal(constants.StatePartName)) }) It("fills the spec with defaults (EFI)", func() { spec.Active.Source = v1.NewFileSrc("/tmp") @@ -295,6 +307,14 @@ var _ = Describe("Types", Label("types", "config"), func() { Expect(spec.Partitions.EFI.Size).To(Equal(constants.EfiSize)) Expect(spec.Partitions.EFI.FS).To(Equal(constants.EfiFs)) Expect(spec.Partitions.EFI.Flags).To(ContainElement("esp")) + Expect(spec.Partitions.OEM.FilesystemLabel).To(Equal(constants.OEMLabel)) + Expect(spec.Partitions.OEM.Name).To(Equal(constants.OEMPartName)) + Expect(spec.Partitions.Recovery.FilesystemLabel).To(Equal(constants.RecoveryLabel)) + Expect(spec.Partitions.Recovery.Name).To(Equal(constants.RecoveryPartName)) + Expect(spec.Partitions.Persistent.FilesystemLabel).To(Equal(constants.PersistentLabel)) + Expect(spec.Partitions.Persistent.Name).To(Equal(constants.PersistentPartName)) + Expect(spec.Partitions.State.FilesystemLabel).To(Equal(constants.StateLabel)) + Expect(spec.Partitions.State.Name).To(Equal(constants.StatePartName)) }) It("Cannot add extra partitions with 0 size + persistent with 0 size", func() { spec.Active.Source = v1.NewFileSrc("/tmp") @@ -381,6 +401,9 @@ var _ = Describe("Types", Label("types", "config"), func() { spec.Partitions.State = &v1.Partition{ MountPoint: "/tmp", } + spec.Partitions.OEM = &v1.Partition{} + spec.Partitions.Recovery = &v1.Partition{} + spec.Partitions.Persistent = &v1.Partition{} err := spec.Sanitize() Expect(err).ToNot(HaveOccurred()) })