diff --git a/internal/distro/rhel85/pipelines.go b/internal/distro/rhel85/pipelines.go index 1d4e7da25..e70ec5570 100644 --- a/internal/distro/rhel85/pipelines.go +++ b/internal/distro/rhel85/pipelines.go @@ -55,7 +55,7 @@ func qcow2Pipelines(t *imageType, customizations *blueprint.Customizations, opti imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "qcow2", "0.10") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatQCOW2, "0.10") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil @@ -99,7 +99,7 @@ func vhdPipelines(t *imageType, customizations *blueprint.Customizations, option return nil, err } - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "vpc", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatVPC, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -130,7 +130,7 @@ func vmdkPipelines(t *imageType, customizations *blueprint.Customizations, optio return nil, err } - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "vmdk", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatVMDK, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -161,7 +161,7 @@ func openstackPipelines(t *imageType, customizations *blueprint.Customizations, return nil, err } - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "qcow2", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatQCOW2, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -1271,9 +1271,9 @@ func xzArchivePipeline(inputPipelineName, inputFilename, outputFilename string) return p } -func qemuPipeline(inputPipelineName, inputFilename, outputFilename, format, qcow2Compat string) *osbuild.Pipeline { +func qemuPipeline(inputPipelineName, inputFilename, outputFilename string, format osbuild.QEMUFormat, qcow2Compat string) *osbuild.Pipeline { p := new(osbuild.Pipeline) - p.Name = format + p.Name = string(format) p.Build = "name:build" qemuStage := osbuild.NewQEMUStage(qemuStageOptions(outputFilename, format, qcow2Compat), osbuild.NewQemuStagePipelineFilesInputs(inputPipelineName, inputFilename)) diff --git a/internal/distro/rhel85/stage_options.go b/internal/distro/rhel85/stage_options.go index 8a912c800..67486b85c 100644 --- a/internal/distro/rhel85/stage_options.go +++ b/internal/distro/rhel85/stage_options.go @@ -229,21 +229,21 @@ func xorrisofsStageOptions(filename string, arch string, isolinux bool) *osbuild return options } -func qemuStageOptions(filename, format, compat string) *osbuild.QEMUStageOptions { +func qemuStageOptions(filename string, format osbuild.QEMUFormat, compat string) *osbuild.QEMUStageOptions { var options osbuild.QEMUFormatOptions switch format { - case "qcow2": + case osbuild.QEMUFormatQCOW2: options = osbuild.Qcow2Options{ - Type: "qcow2", + Type: format, Compat: compat, } - case "vpc": + case osbuild.QEMUFormatVPC: options = osbuild.VPCOptions{ - Type: "vpc", + Type: format, } - case "vmdk": + case osbuild.QEMUFormatVMDK: options = osbuild.VMDKOptions{ - Type: "vmdk", + Type: format, } default: panic("unknown format in qemu stage: " + format) diff --git a/internal/distro/rhel86/pipelines.go b/internal/distro/rhel86/pipelines.go index f7e73c012..fabaf5baa 100644 --- a/internal/distro/rhel86/pipelines.go +++ b/internal/distro/rhel86/pipelines.go @@ -34,7 +34,7 @@ func qcow2Pipelines(t *imageType, customizations *blueprint.Customizations, opti imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "qcow2", "0.10") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatQCOW2, "0.10") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil @@ -75,7 +75,7 @@ func vhdPipelines(t *imageType, customizations *blueprint.Customizations, option return nil, err } - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "vpc", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatVPC, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -103,7 +103,7 @@ func vmdkPipelines(t *imageType, customizations *blueprint.Customizations, optio return nil, err } - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "vmdk", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatVMDK, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -131,7 +131,7 @@ func openstackPipelines(t *imageType, customizations *blueprint.Customizations, return nil, err } - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "qcow2", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatQCOW2, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -1033,9 +1033,9 @@ func xzArchivePipeline(inputPipelineName, inputFilename, outputFilename string) return p } -func qemuPipeline(inputPipelineName, inputFilename, outputFilename, format, qcow2Compat string) *osbuild.Pipeline { +func qemuPipeline(inputPipelineName, inputFilename, outputFilename string, format osbuild.QEMUFormat, qcow2Compat string) *osbuild.Pipeline { p := new(osbuild.Pipeline) - p.Name = format + p.Name = string(format) p.Build = "name:build" qemuStage := osbuild.NewQEMUStage(qemuStageOptions(outputFilename, format, qcow2Compat), osbuild.NewQemuStagePipelineFilesInputs(inputPipelineName, inputFilename)) diff --git a/internal/distro/rhel86/stage_options.go b/internal/distro/rhel86/stage_options.go index 9ddc70e18..5a33e7de1 100644 --- a/internal/distro/rhel86/stage_options.go +++ b/internal/distro/rhel86/stage_options.go @@ -278,21 +278,21 @@ func xorrisofsStageOptions(filename, isolabel, arch string, isolinux bool) *osbu return options } -func qemuStageOptions(filename, format, compat string) *osbuild.QEMUStageOptions { +func qemuStageOptions(filename string, format osbuild.QEMUFormat, compat string) *osbuild.QEMUStageOptions { var options osbuild.QEMUFormatOptions switch format { - case "qcow2": + case osbuild.QEMUFormatQCOW2: options = osbuild.Qcow2Options{ - Type: "qcow2", + Type: format, Compat: compat, } - case "vpc": + case osbuild.QEMUFormatVPC: options = osbuild.VPCOptions{ - Type: "vpc", + Type: format, } - case "vmdk": + case osbuild.QEMUFormatVMDK: options = osbuild.VMDKOptions{ - Type: "vmdk", + Type: format, } default: panic("unknown format in qemu stage: " + format) diff --git a/internal/distro/rhel90/pipelines.go b/internal/distro/rhel90/pipelines.go index 48c15a66e..57e4261e1 100644 --- a/internal/distro/rhel90/pipelines.go +++ b/internal/distro/rhel90/pipelines.go @@ -35,7 +35,7 @@ func qcow2Pipelines(t *imageType, customizations *blueprint.Customizations, opti imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "qcow2", "1.1") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatQCOW2, "1.1") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil @@ -72,7 +72,7 @@ func vhdPipelines(t *imageType, customizations *blueprint.Customizations, option imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "vpc", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatVPC, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -97,7 +97,7 @@ func vmdkPipelines(t *imageType, customizations *blueprint.Customizations, optio imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "vmdk", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatVMDK, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -122,7 +122,7 @@ func openstackPipelines(t *imageType, customizations *blueprint.Customizations, imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "qcow2", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatQCOW2, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -1025,9 +1025,9 @@ func xzArchivePipeline(inputPipelineName, inputFilename, outputFilename string) return p } -func qemuPipeline(inputPipelineName, inputFilename, outputFilename, format, qcow2Compat string) *osbuild.Pipeline { +func qemuPipeline(inputPipelineName, inputFilename, outputFilename string, format osbuild.QEMUFormat, qcow2Compat string) *osbuild.Pipeline { p := new(osbuild.Pipeline) - p.Name = format + p.Name = string(format) p.Build = "name:build" qemuStage := osbuild.NewQEMUStage(qemuStageOptions(outputFilename, format, qcow2Compat), osbuild.NewQemuStagePipelineFilesInputs(inputPipelineName, inputFilename)) diff --git a/internal/distro/rhel90/stage_options.go b/internal/distro/rhel90/stage_options.go index 949d891bc..9f5e6433a 100644 --- a/internal/distro/rhel90/stage_options.go +++ b/internal/distro/rhel90/stage_options.go @@ -278,21 +278,21 @@ func xorrisofsStageOptions(filename, isolabel, arch string, isolinux bool) *osbu return options } -func qemuStageOptions(filename, format, compat string) *osbuild.QEMUStageOptions { +func qemuStageOptions(filename string, format osbuild.QEMUFormat, compat string) *osbuild.QEMUStageOptions { var options osbuild.QEMUFormatOptions switch format { - case "qcow2": + case osbuild.QEMUFormatQCOW2: options = osbuild.Qcow2Options{ - Type: "qcow2", + Type: format, Compat: compat, } - case "vpc": + case osbuild.QEMUFormatVPC: options = osbuild.VPCOptions{ - Type: "vpc", + Type: format, } - case "vmdk": + case osbuild.QEMUFormatVMDK: options = osbuild.VMDKOptions{ - Type: "vmdk", + Type: format, } default: panic("unknown format in qemu stage: " + format) diff --git a/internal/distro/rhel90beta/pipelines.go b/internal/distro/rhel90beta/pipelines.go index 2ef052060..b308df8f3 100644 --- a/internal/distro/rhel90beta/pipelines.go +++ b/internal/distro/rhel90beta/pipelines.go @@ -51,7 +51,7 @@ func qcow2Pipelines(t *imageType, customizations *blueprint.Customizations, opti imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "qcow2", "1.1") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatQCOW2, "1.1") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil @@ -92,7 +92,7 @@ func vhdPipelines(t *imageType, customizations *blueprint.Customizations, option imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "vpc", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatVPC, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -121,7 +121,7 @@ func vmdkPipelines(t *imageType, customizations *blueprint.Customizations, optio imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "vmdk", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatVMDK, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -149,7 +149,7 @@ func openstackPipelines(t *imageType, customizations *blueprint.Customizations, imagePipeline := liveImagePipeline(treePipeline.Name, diskfile, partitionTable, t.arch, kernelVer) pipelines = append(pipelines, *imagePipeline) - qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, "qcow2", "") + qemuPipeline := qemuPipeline(imagePipeline.Name, diskfile, t.filename, osbuild.QEMUFormatQCOW2, "") pipelines = append(pipelines, *qemuPipeline) return pipelines, nil } @@ -1087,9 +1087,9 @@ func xzArchivePipeline(inputPipelineName, inputFilename, outputFilename string) return p } -func qemuPipeline(inputPipelineName, inputFilename, outputFilename, format, qcow2Compat string) *osbuild.Pipeline { +func qemuPipeline(inputPipelineName, inputFilename, outputFilename string, format osbuild.QEMUFormat, qcow2Compat string) *osbuild.Pipeline { p := new(osbuild.Pipeline) - p.Name = format + p.Name = string(format) p.Build = "name:build" qemuStage := osbuild.NewQEMUStage(qemuStageOptions(outputFilename, format, qcow2Compat), osbuild.NewQemuStagePipelineFilesInputs(inputPipelineName, inputFilename)) diff --git a/internal/distro/rhel90beta/stage_options.go b/internal/distro/rhel90beta/stage_options.go index 2eaa4409d..0ffb29336 100644 --- a/internal/distro/rhel90beta/stage_options.go +++ b/internal/distro/rhel90beta/stage_options.go @@ -208,21 +208,21 @@ func xorrisofsStageOptions(filename string, arch string) *osbuild.XorrisofsStage } } -func qemuStageOptions(filename, format, compat string) *osbuild.QEMUStageOptions { +func qemuStageOptions(filename string, format osbuild.QEMUFormat, compat string) *osbuild.QEMUStageOptions { var options osbuild.QEMUFormatOptions switch format { - case "qcow2": + case osbuild.QEMUFormatQCOW2: options = osbuild.Qcow2Options{ - Type: "qcow2", + Type: format, Compat: compat, } - case "vpc": + case osbuild.QEMUFormatVPC: options = osbuild.VPCOptions{ - Type: "vpc", + Type: format, } - case "vmdk": + case osbuild.QEMUFormatVMDK: options = osbuild.VMDKOptions{ - Type: "vmdk", + Type: format, } default: panic("unknown format in qemu stage: " + format) diff --git a/internal/osbuild2/qemu_stage.go b/internal/osbuild2/qemu_stage.go index 8093babe5..fd0c5b8ee 100644 --- a/internal/osbuild2/qemu_stage.go +++ b/internal/osbuild2/qemu_stage.go @@ -20,13 +20,23 @@ type QEMUStageOptions struct { func (QEMUStageOptions) isStageOptions() {} +type QEMUFormat string + +const ( + QEMUFormatQCOW2 QEMUFormat = "qcow2" + QEMUFormatVDI QEMUFormat = "vdi" + QEMUFormatVMDK QEMUFormat = "vmdk" + QEMUFormatVPC QEMUFormat = "vpc" + QEMUFormatVHDX QEMUFormat = "vhdx" +) + type QEMUFormatOptions interface { isQEMUFormatOptions() } type Qcow2Options struct { // The type of the format must be 'qcow2' - Type string `json:"type"` + Type QEMUFormat `json:"type"` // The qcow2-compatibility-version to use Compat string `json:"compat"` @@ -36,14 +46,14 @@ func (Qcow2Options) isQEMUFormatOptions() {} type VPCOptions struct { // The type of the format must be 'vpc' - Type string `json:"type"` + Type QEMUFormat `json:"type"` } func (VPCOptions) isQEMUFormatOptions() {} type VMDKOptions struct { // The type of the format must be 'vpc' - Type string `json:"type"` + Type QEMUFormat `json:"type"` } func (VMDKOptions) isQEMUFormatOptions() {} @@ -88,15 +98,15 @@ type qemuStageOptions QEMUStageOptions func (options QEMUStageOptions) MarshalJSON() ([]byte, error) { switch o := options.Format.(type) { case Qcow2Options: - if o.Type != "qcow2" { + if o.Type != QEMUFormatQCOW2 { return nil, fmt.Errorf("invalid format type %q for qcow2 options", o.Type) } case VPCOptions: - if o.Type != "vpc" { + if o.Type != QEMUFormatVPC { return nil, fmt.Errorf("invalid format type %q for vpc options", o.Type) } case VMDKOptions: - if o.Type != "vmdk" { + if o.Type != QEMUFormatVMDK { return nil, fmt.Errorf("invalid format type %q for vmdk options", o.Type) } default: diff --git a/internal/osbuild2/qemu_stage_test.go b/internal/osbuild2/qemu_stage_test.go index 996993a24..adca4b764 100644 --- a/internal/osbuild2/qemu_stage_test.go +++ b/internal/osbuild2/qemu_stage_test.go @@ -10,14 +10,14 @@ func TestNewQemuStage(t *testing.T) { formatOptionsList := []QEMUFormatOptions{ Qcow2Options{ - Type: "qcow2", + Type: QEMUFormatQCOW2, Compat: "0.10", }, VPCOptions{ - Type: "vpc", + Type: QEMUFormatVPC, }, VMDKOptions{ - Type: "vmdk", + Type: QEMUFormatVMDK, }, }