Skip to content

Commit

Permalink
blueprint/customization:filesystem customizations for raw
Browse files Browse the repository at this point in the history
Filesystem customizations is enabled for edge-raw-image
relevent testing config is added to run in CI

Signed-off-by: Sayan Paul <[email protected]>
  • Loading branch information
say-paul committed Dec 6, 2023
1 parent 32d6b1a commit 8e5c411
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 12 deletions.
6 changes: 3 additions & 3 deletions pkg/distro/rhel9/distro_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ func TestDistro_CustomFileSystemManifestError(t *testing.T) {
imgType, _ := arch.GetImageType(imgTypeName)
_, _, err := imgType.Manifest(&bp, distro.ImageOptions{}, nil, 0)
if imgTypeName == "edge-commit" || imgTypeName == "edge-container" {
assert.EqualError(t, err, "Custom mountpoints are not supported for ostree types")
assert.EqualError(t, err, "Custom mountpoints are not supported for edge-container and edge-commit")
} else if imgTypeName == "edge-installer" || imgTypeName == "edge-simplified-installer" || imgTypeName == "edge-raw-image" || imgTypeName == "edge-ami" || imgTypeName == "edge-vsphere" {
continue
} else {
Expand Down Expand Up @@ -699,7 +699,7 @@ func TestDistro_TestRootMountPoint(t *testing.T) {
imgType, _ := arch.GetImageType(imgTypeName)
_, _, err := imgType.Manifest(&bp, distro.ImageOptions{}, nil, 0)
if imgTypeName == "edge-commit" || imgTypeName == "edge-container" {
assert.EqualError(t, err, "Custom mountpoints are not supported for ostree types")
assert.EqualError(t, err, "Custom mountpoints are not supported for edge-container and edge-commit")
} else if imgTypeName == "edge-installer" || imgTypeName == "edge-simplified-installer" || imgTypeName == "edge-raw-image" || imgTypeName == "edge-ami" || imgTypeName == "edge-vsphere" {
continue
} else {
Expand Down Expand Up @@ -829,7 +829,7 @@ func TestDistro_CustomUsrPartitionNotLargeEnough(t *testing.T) {
imgType, _ := arch.GetImageType(imgTypeName)
_, _, err := imgType.Manifest(&bp, distro.ImageOptions{}, nil, 0)
if imgTypeName == "edge-commit" || imgTypeName == "edge-container" {
assert.EqualError(t, err, "Custom mountpoints are not supported for ostree types")
assert.EqualError(t, err, "Custom mountpoints are not supported for edge-container and edge-commit")
} else if imgTypeName == "edge-installer" || imgTypeName == "edge-simplified-installer" || imgTypeName == "edge-raw-image" || imgTypeName == "edge-ami" || imgTypeName == "edge-vsphere" {
continue
} else {
Expand Down
19 changes: 10 additions & 9 deletions pkg/distro/rhel9/imagetype.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,12 +164,7 @@ func (t *imageType) getPartitionTable(
partitioningMode := options.PartitioningMode
if t.rpmOstree {
// Edge supports only LVM, force it.
// Raw is not supported, return an error if it is requested
// TODO Need a central location for logic like this
if partitioningMode == disk.RawPartitioningMode {
return nil, fmt.Errorf("partitioning mode raw not supported for %s on %s", t.Name(), t.arch.Name())
}

partitioningMode = disk.LVMPartitioningMode
}

Expand Down Expand Up @@ -355,8 +350,10 @@ func (t *imageType) checkOptions(bp *blueprint.Blueprint, options distro.ImageOp
if options.OSTree == nil || options.OSTree.URL == "" {
return warnings, fmt.Errorf("%q images require specifying a URL from which to retrieve the OSTree commit", t.name)
}

allowed := []string{"Ignition", "Kernel", "User", "Group", "FIPS"}
if t.name == "edge-raw-image" {
allowed = append(allowed, "Filesystem")
}
if err := customizations.CheckAllowed(allowed...); err != nil {
return warnings, fmt.Errorf("unsupported blueprint customizations found for image type %q: (allowed: %s)", t.name, strings.Join(allowed, ", "))
}
Expand All @@ -383,9 +380,13 @@ func (t *imageType) checkOptions(bp *blueprint.Blueprint, options distro.ImageOp
}

mountpoints := customizations.GetFilesystems()

if mountpoints != nil && t.rpmOstree {
return warnings, fmt.Errorf("Custom mountpoints are not supported for ostree types")
if mountpoints != nil && t.rpmOstree && t.name != "edge-raw-image" {
return warnings, fmt.Errorf("Custom mountpoints are not supported for edge-container and edge-commit")
} else if t.name == "edge-raw-image" {
err := blueprint.CheckMountpointsPolicy(mountpoints, pathpolicy.OstreeMountpointPolicies)
if err != nil {
return warnings, err
}
}

err := blueprint.CheckMountpointsPolicy(mountpoints, pathpolicy.MountpointPolicies)
Expand Down
8 changes: 8 additions & 0 deletions test/config-map.json
Original file line number Diff line number Diff line change
Expand Up @@ -193,5 +193,13 @@
"image-types": [
"ec2-sap"
]
},
"./configs/ostree-filesystem-customizations.json": {
"image-types": [
"edge-raw-image"
],
"distros": [
"rhel-9*"
]
}
}
68 changes: 68 additions & 0 deletions test/configs/ostree-filesystem-customizations.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"name": "ostree-filesystem-customizations",
"ostree": {
"url": "http://example.com/repo"
},
"blueprint": {
"customizations": {
"filesystem": [
{
"mountpoint": "/foo",
"minsize": "2147483648"
},
{
"mountpoint": "/foo/bar",
"minsize": "2 GiB"
},
{
"mountpoint": "/home",
"minsize": "2 GiB"
},
{
"mountpoint": "/home/shadowman",
"minsize": "500 MiB"
},
{
"mountpoint": "/root",
"minsize": "1 GiB"
},
{
"mountpoint": "/mnt",
"minsize": "3 GiB"
},
{
"mountpoint": "/srv",
"minsize": "4 GiB"
},
{
"mountpoint": "/opt",
"minsize": "1 GiB"
},
{
"mountpoint": "/var/mydata",
"minsize": "1 GiB"
},
{
"mountpoint": "/var/mnt",
"minsize": "1 GiB"
},
{
"mountpoint": "/var/opt",
"minsize": "1 GiB"
},
{
"mountpoint": "/var/srv",
"minsize": "500 MiB"
},
{
"mountpoint": "/var/roothome",
"minsize": "1 GiB"
}
]
}
},
"depends": {
"image-type": "edge-container",
"config": "empty.json"
}
}

0 comments on commit 8e5c411

Please sign in to comment.