cloudapi: Add partitioning_mode support to the API

This adds a 'partitioning_mode' field that can be set to 'auto-lvm',
'lvm' or 'raw'. It defaults to 'auto-lvm'.
This commit is contained in:
Brian C. Lane 2023-09-15 15:05:04 -07:00 committed by Ondřej Budai
parent 3df67e9adb
commit d0877e68dc
7 changed files with 231 additions and 148 deletions

View file

@ -5,6 +5,7 @@ import (
"fmt"
"reflect"
"github.com/osbuild/images/pkg/disk"
"github.com/osbuild/images/pkg/subscription"
"github.com/osbuild/osbuild-composer/internal/blueprint"
)
@ -424,3 +425,22 @@ func (request *ComposeRequest) GetSubscription() (sub *subscription.ImageOptions
return
}
// GetPartitioningMode returns the partitioning mode included in the request
// or defaults to AutoLVMPartitioningMode if not included
func (request *ComposeRequest) GetPartitioningMode() (disk.PartitioningMode, error) {
if request.Customizations == nil || request.Customizations.PartitioningMode == nil {
return disk.AutoLVMPartitioningMode, nil
}
switch *request.Customizations.PartitioningMode {
case CustomizationsPartitioningModeRaw:
return disk.RawPartitioningMode, nil
case CustomizationsPartitioningModeLvm:
return disk.LVMPartitioningMode, nil
case CustomizationsPartitioningModeAutoLvm:
return disk.AutoLVMPartitioningMode, nil
}
return disk.AutoLVMPartitioningMode, HTTPError(ErrorInvalidPartitioningMode)
}

View file

@ -3,6 +3,7 @@ package v2
import (
"testing"
"github.com/osbuild/images/pkg/disk"
"github.com/osbuild/images/pkg/subscription"
"github.com/osbuild/osbuild-composer/internal/blueprint"
"github.com/osbuild/osbuild-composer/internal/common"
@ -305,3 +306,18 @@ func TestGetSubscriptions(t *testing.T) {
assert.Equal(t, expected, sub)
}
func TestGetPartitioningMode(t *testing.T) {
// Empty Partitioning Mode
cr := ComposeRequest{}
_, err := cr.GetPartitioningMode()
assert.NoError(t, err)
// Populated PartitioningMode
cr = ComposeRequest{Customizations: &Customizations{
PartitioningMode: common.ToPtr(CustomizationsPartitioningModeAutoLvm),
}}
pm, err := cr.GetPartitioningMode()
assert.NoError(t, err)
assert.Equal(t, disk.AutoLVMPartitioningMode, pm)
}

View file

@ -47,6 +47,7 @@ const (
ErrorImageNotFound ServiceErrorCode = 34
ErrorInvalidCustomization ServiceErrorCode = 35
ErrorLocalSaveNotEnabled ServiceErrorCode = 36
ErrorInvalidPartitioningMode ServiceErrorCode = 37
// Internal errors, these are bugs
ErrorFailedToInitializeBlueprint ServiceErrorCode = 1000
@ -125,6 +126,7 @@ func getServiceErrors() serviceErrors {
serviceError{ErrorImageNotFound, http.StatusBadRequest, "Image with given id not found"},
serviceError{ErrorInvalidCustomization, http.StatusBadRequest, "Invalid image customization"},
serviceError{ErrorLocalSaveNotEnabled, http.StatusBadRequest, "local_save is not enabled"},
serviceError{ErrorInvalidPartitioningMode, http.StatusBadRequest, "Requested partitioning mode is invalid"},
serviceError{ErrorFailedToInitializeBlueprint, http.StatusInternalServerError, "Failed to initialize blueprint"},
serviceError{ErrorFailedToGenerateManifestSeed, http.StatusInternalServerError, "Failed to generate manifest seed"},

View file

@ -218,6 +218,12 @@ func (h *apiHandlers) PostCompose(ctx echo.Context) error {
// Set Subscription from the compose request
imageOptions.Subscription = request.GetSubscription()
// Set PartitioningMode from the compose request
imageOptions.PartitioningMode, err = request.GetPartitioningMode()
if err != nil {
return err
}
// Set OSTree options from the image request
imageOptions.OSTree, err = ir.GetOSTreeOptions()
if err != nil {

View file

@ -7,6 +7,7 @@ import (
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/google/uuid"
"github.com/osbuild/images/pkg/disk"
"github.com/osbuild/images/pkg/distro"
"github.com/osbuild/images/pkg/ostree"
"github.com/osbuild/osbuild-composer/internal/blueprint"
@ -14,11 +15,13 @@ import (
"github.com/osbuild/osbuild-composer/internal/target"
)
// GetImageOptions returns the initial ImageOptions with Size set
// GetImageOptions returns the initial ImageOptions with Size and PartitioningMode set
// The size is set to the largest of:
// - Default size for the image type
// - Blueprint filesystem customizations
// - Requested size
//
// The partitioning mode is set to AutoLVM which will select LVM if there are additional mountpoints
func (ir *ImageRequest) GetImageOptions(imageType distro.ImageType, bp blueprint.Blueprint) distro.ImageOptions {
// NOTE: The size is in bytes
var size uint64
@ -30,7 +33,7 @@ func (ir *ImageRequest) GetImageOptions(imageType distro.ImageType, bp blueprint
} else {
size = imageType.Size(*ir.Size)
}
return distro.ImageOptions{Size: size}
return distro.ImageOptions{Size: size, PartitioningMode: disk.AutoLVMPartitioningMode}
}
// GetImageTarget returns the target for the selected image type

View file

@ -31,6 +31,15 @@ const (
ComposeStatusValueSuccess ComposeStatusValue = "success"
)
// Defines values for CustomizationsPartitioningMode.
const (
CustomizationsPartitioningModeAutoLvm CustomizationsPartitioningMode = "auto-lvm"
CustomizationsPartitioningModeLvm CustomizationsPartitioningMode = "lvm"
CustomizationsPartitioningModeRaw CustomizationsPartitioningMode = "raw"
)
// Defines values for ImageStatusValue.
const (
ImageStatusValueBuilding ImageStatusValue = "building"
@ -358,6 +367,12 @@ type Customizations struct {
Openscap *OpenSCAP `json:"openscap,omitempty"`
Packages *[]string `json:"packages,omitempty"`
// Select how the disk image will be partitioned. 'auto-lvm' will use raw unless
// there are one or more mountpoints in which case it will use LVM. 'lvm' always
// uses LVM, even when there are no extra mountpoints. 'raw' uses raw partitions
// even when there are one or more mountpoints.
PartitioningMode *CustomizationsPartitioningMode `json:"partitioning_mode,omitempty"`
// Extra repositories for packages specified in customizations. These
// repositories will only be used to depsolve and retrieve packages
// for the OS itself (they will not be available for the build root or
@ -375,6 +390,12 @@ type Customizations struct {
Users *[]User `json:"users,omitempty"`
}
// Select how the disk image will be partitioned. 'auto-lvm' will use raw unless
// there are one or more mountpoints in which case it will use LVM. 'lvm' always
// uses LVM, even when there are no extra mountpoints. 'raw' uses raw partitions
// even when there are one or more mountpoints.
type CustomizationsPartitioningMode string
// A custom directory to create in the final artifact.
type Directory struct {
// Ensure that the parent directories exist
@ -1039,152 +1060,155 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
"+/7/BwAA//9LlYnqHZIAAA==",
}
// GetSwagger returns the content of the embedded swagger specification file

View file

@ -1171,6 +1171,18 @@ components:
$ref: '#/components/schemas/FDO'
ignition:
$ref: '#/components/schemas/Ignition'
partitioning_mode:
type: string
enum:
- raw
- lvm
- auto-lvm
default: auto-lvm
description: |
Select how the disk image will be partitioned. 'auto-lvm' will use raw unless
there are one or more mountpoints in which case it will use LVM. 'lvm' always
uses LVM, even when there are no extra mountpoints. 'raw' uses raw partitions
even when there are one or more mountpoints.
Container:
type: object
required: