From 381615bef2a1c5b445df9f40d6df9c77881f9d11 Mon Sep 17 00:00:00 2001 From: Paul Mars Date: Wed, 25 Oct 2023 11:54:20 +0200 Subject: [PATCH] Remove FstabTruncate option --- internal/imagedefinition/README.rst | 5 +- internal/imagedefinition/error.go | 3 +- internal/imagedefinition/image_definition.go | 1 - internal/statemachine/classic_states.go | 29 +----------- internal/statemachine/classic_test.go | 49 ++------------------ internal/statemachine/helper.go | 4 -- 6 files changed, 8 insertions(+), 83 deletions(-) diff --git a/internal/imagedefinition/README.rst b/internal/imagedefinition/README.rst index 6edb1e02..44da978d 100644 --- a/internal/imagedefinition/README.rst +++ b/internal/imagedefinition/README.rst @@ -242,6 +242,7 @@ The following specification defines what is supported in the YAML: # ubuntu-image will support creating many different types of # artifacts, including the actual images, manifest files, # changelogs, and a list of files in the rootfs. + # Set a custom fstab. The existing one (if any) will be truncated. fstab: (optional) - # the value of LABEL= for the fstab entry @@ -256,10 +257,6 @@ The following specification defines what is supported in the YAML: dump: (optional) # the order to fsck the filesystem fsck-order: - # Define what to do with the existing (if any) fstab file. - # Default to "false", which will keep existing entries and append new - # ones (if any) - fstab_truncate: (optional) artifacts: # Used to specify that ubuntu-image should create a .img file. img: (optional) diff --git a/internal/imagedefinition/error.go b/internal/imagedefinition/error.go index 17a7385c..19331d2d 100644 --- a/internal/imagedefinition/error.go +++ b/internal/imagedefinition/error.go @@ -3,6 +3,5 @@ package imagedefinition import "errors" var ( - ErrKeepEnabledNil = errors.New("KeepEnabled is nil. Thi value cannot be properly used.") - ErrFstabTruncateNil = errors.New("FstabTruncate is nil. Thi value cannot be properly used.") + ErrKeepEnabledNil = errors.New("KeepEnabled is nil. Thi value cannot be properly used.") ) diff --git a/internal/imagedefinition/image_definition.go b/internal/imagedefinition/image_definition.go index e3d42f93..70337121 100644 --- a/internal/imagedefinition/image_definition.go +++ b/internal/imagedefinition/image_definition.go @@ -76,7 +76,6 @@ type Customization struct { ExtraPackages []*Package `yaml:"extra-packages" json:"ExtraPackages,omitempty" extra_step_prebuilt_rootfs:"install_extra_packages"` ExtraSnaps []*Snap `yaml:"extra-snaps" json:"ExtraSnaps,omitempty" extra_step_prebuilt_rootfs:"install_extra_snaps"` Fstab []*Fstab `yaml:"fstab" json:"Fstab,omitempty"` - FstabTruncate *bool `yaml:"fstab_truncate" json:"FstabTruncate,omitempty" default:"false"` Manual *Manual `yaml:"manual" json:"Manual,omitempty"` } diff --git a/internal/statemachine/classic_states.go b/internal/statemachine/classic_states.go index 5fee454e..efabc9d7 100644 --- a/internal/statemachine/classic_states.go +++ b/internal/statemachine/classic_states.go @@ -1018,27 +1018,7 @@ func (stateMachine *StateMachine) customizeFstab() error { fstabPath := filepath.Join(stateMachine.tempDirs.chroot, "etc", "fstab") - if classicStateMachine.ImageDef.Customization.FstabTruncate == nil { - return imagedefinition.ErrFstabTruncateNil - } - - // open /etc/fstab for writing - flags := os.O_CREATE | os.O_RDWR - if *classicStateMachine.ImageDef.Customization.FstabTruncate { - flags = flags | os.O_TRUNC - } else { - flags = flags | os.O_APPEND - } - - // check if fstab is empty - info, err := os.Stat(fstabPath) // an error means the file do not exist, which is fine - emptyFstab := true - - if err == nil && info.Size() != 0 { - emptyFstab = false - } - - fstabIO, err := osOpenFile(fstabPath, flags, 0644) + fstabIO, err := osOpenFile(fstabPath, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0644) if err != nil { return fmt.Errorf("Error opening fstab: %s", err.Error()) } @@ -1063,13 +1043,6 @@ func (stateMachine *StateMachine) customizeFstab() error { fstabEntries = append(fstabEntries, fstabEntry) } - if !*classicStateMachine.ImageDef.Customization.FstabTruncate && !emptyFstab { - _, err = fstabIO.Write([]byte("\n")) - if err != nil { - return err - } - } - _, err = fstabIO.Write([]byte(strings.Join(fstabEntries, "\n") + "\n")) return err diff --git a/internal/statemachine/classic_test.go b/internal/statemachine/classic_test.go index 3ebf9434..cffe4da0 100644 --- a/internal/statemachine/classic_test.go +++ b/internal/statemachine/classic_test.go @@ -3740,12 +3740,11 @@ func TestCustomizeFstab(t *testing.T) { testCases := []struct { name string fstab []*imagedefinition.Fstab - fstabTruncate bool expectedFstab string existingFstab string }{ { - name: "one_entry to an empty fstab", + name: "one entry to an empty fstab", fstab: []*imagedefinition.Fstab{ { Label: "writable", @@ -3760,7 +3759,7 @@ func TestCustomizeFstab(t *testing.T) { `, }, { - name: "one_entry to a non-empty fstab", + name: "one entry to a non-empty fstab", fstab: []*imagedefinition.Fstab{ { Label: "writable", @@ -3771,30 +3770,12 @@ func TestCustomizeFstab(t *testing.T) { FsckOrder: 1, }, }, - expectedFstab: `LABEL=xxx / ext4 discard,errors=remount-ro 0 1 -LABEL=writable / ext4 defaults 1 1 -`, - existingFstab: `LABEL=xxx / ext4 discard,errors=remount-ro 0 1`, - }, - { - name: "one_entry to a non-empty fstab to be truncated", - fstab: []*imagedefinition.Fstab{ - { - Label: "writable", - Mountpoint: "/", - FSType: "ext4", - MountOptions: "defaults", - Dump: true, - FsckOrder: 1, - }, - }, - fstabTruncate: true, expectedFstab: `LABEL=writable / ext4 defaults 1 1 `, - existingFstab: `LABEL=xxx /test ext4 discard,errors=remount-ro 0 1`, + existingFstab: `LABEL=xxx / ext4 discard,errors=remount-ro 0 1`, }, { - name: "two_entries", + name: "two entries", fstab: []*imagedefinition.Fstab{ { Label: "writable", @@ -3815,19 +3796,6 @@ LABEL=writable / ext4 defaults 1 1 }, expectedFstab: `LABEL=writable / ext4 defaults 0 1 LABEL=system-boot /boot/firmware vfat defaults 0 1 -`, - }, - { - name: "defaults_assumed", - fstab: []*imagedefinition.Fstab{ - { - Label: "writable", - Mountpoint: "/", - FSType: "ext4", - FsckOrder: 1, - }, - }, - expectedFstab: `LABEL=writable / ext4 defaults 0 1 `, }, } @@ -3846,8 +3814,7 @@ LABEL=system-boot /boot/firmware vfat defaults 0 1 Series: getHostSuite(), Rootfs: &imagedefinition.Rootfs{}, Customization: &imagedefinition.Customization{ - Fstab: tc.fstab, - FstabTruncate: helper.BoolPtr(tc.fstabTruncate), + Fstab: tc.fstab, }, } @@ -3911,7 +3878,6 @@ func TestStateMachine_customizeFstab_fail(t *testing.T) { FsckOrder: 1, }, }, - FstabTruncate: helper.BoolPtr(true), }, } @@ -3921,11 +3887,6 @@ func TestStateMachine_customizeFstab_fail(t *testing.T) { }() err := stateMachine.customizeFstab() asserter.AssertErrContains(err, "Error opening fstab") - osOpenFile = os.OpenFile - - stateMachine.ImageDef.Customization.FstabTruncate = nil - err = stateMachine.customizeFstab() - asserter.AssertErrContains(err, imagedefinition.ErrFstabTruncateNil.Error()) }) } diff --git a/internal/statemachine/helper.go b/internal/statemachine/helper.go index 3e9d53b8..2d11936f 100644 --- a/internal/statemachine/helper.go +++ b/internal/statemachine/helper.go @@ -901,10 +901,6 @@ func checkCustomizationSteps(searchStruct interface{}, tag string) (extraStates for i := 0; i < elem.NumField(); i++ { field := elem.Field(i) - if field.Kind() == reflect.Bool { - continue - } - if !field.IsNil() { tags := elem.Type().Field(i).Tag tagValue, hasTag := tags.Lookup(tag)