From 8d010c04667d6e5cb54708aea1d5ec4c35a2f077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Budai?= Date: Thu, 24 Oct 2019 14:16:17 +0200 Subject: [PATCH] blueprint: add support for kernel customization --- internal/blueprint/ami_output.go | 2 +- internal/blueprint/blueprint.go | 8 ++++++++ internal/blueprint/disk_output.go | 2 +- internal/blueprint/f30_helpers.go | 10 ++++++++-- internal/blueprint/openstack_output.go | 2 +- internal/blueprint/qcow2_output.go | 2 +- internal/blueprint/vhd_output.go | 2 +- internal/blueprint/vmdk_output.go | 2 +- 8 files changed, 22 insertions(+), 8 deletions(-) diff --git a/internal/blueprint/ami_output.go b/internal/blueprint/ami_output.go index 4e30e8641..0a3b4dc72 100644 --- a/internal/blueprint/ami_output.go +++ b/internal/blueprint/ami_output.go @@ -22,7 +22,7 @@ func (t *amiOutput) translate(b *Blueprint) *pipeline.Pipeline { addF30FixBlsStage(p) addF30LocaleStage(p) addF30FSTabStage(p) - addF30GRUB2Stage(p) + addF30GRUB2Stage(p, nil) addF30SELinuxStage(p) addF30QemuAssembler(p, "qcow2", t.getName()) return p diff --git a/internal/blueprint/blueprint.go b/internal/blueprint/blueprint.go index fffe51204..78521e6a7 100644 --- a/internal/blueprint/blueprint.go +++ b/internal/blueprint/blueprint.go @@ -73,6 +73,14 @@ func (b *Blueprint) ToPipeline(outputFormat string) (*pipeline.Pipeline, error) return nil, &InvalidOutputFormatError{outputFormat} } +func (b *Blueprint) getKernelCustomization() *KernelCustomization { + if b.Customizations == nil { + return nil + } + + return b.Customizations.Kernel +} + // FilenameFromType gets the canonical filename and MIME type for a given // output format func FilenameFromType(outputFormat string) (string, string, error) { diff --git a/internal/blueprint/disk_output.go b/internal/blueprint/disk_output.go index a1bb9f45c..4908c8405 100644 --- a/internal/blueprint/disk_output.go +++ b/internal/blueprint/disk_output.go @@ -7,7 +7,7 @@ type diskOutput struct{} func (t *diskOutput) translate(b *Blueprint) *pipeline.Pipeline { p := getF30Pipeline() addF30FSTabStage(p) - addF30GRUB2Stage(p) + addF30GRUB2Stage(p, b.getKernelCustomization()) addF30SELinuxStage(p) addF30QemuAssembler(p, "raw", t.getName()) return p diff --git a/internal/blueprint/f30_helpers.go b/internal/blueprint/f30_helpers.go index 92c2ebb71..7f81a3fab 100644 --- a/internal/blueprint/f30_helpers.go +++ b/internal/blueprint/f30_helpers.go @@ -78,15 +78,21 @@ func getCustomF30PackageSet(packages []string, excludedPackages []string) *pipel return p } -func addF30GRUB2Stage(p *pipeline.Pipeline) { +func addF30GRUB2Stage(p *pipeline.Pipeline, kernelCustomization *KernelCustomization) { id, err := uuid.Parse("76a22bf4-f153-4541-b6c7-0332c0dfaeac") if err != nil { panic("invalid UUID") } + kernelOptions := "ro biosdevname=0 net.ifnames=0" + + if kernelCustomization != nil { + kernelOptions += " " + kernelCustomization.Append + } + p.AddStage(pipeline.NewGRUB2Stage( &pipeline.GRUB2StageOptions{ RootFilesystemUUID: id, - KernelOptions: "ro biosdevname=0 net.ifnames=0", + KernelOptions: kernelOptions, }, )) } diff --git a/internal/blueprint/openstack_output.go b/internal/blueprint/openstack_output.go index ca8e4d106..d93f6a088 100644 --- a/internal/blueprint/openstack_output.go +++ b/internal/blueprint/openstack_output.go @@ -21,7 +21,7 @@ func (t *openstackOutput) translate(b *Blueprint) *pipeline.Pipeline { p := getCustomF30PackageSet(packages[:], []string{}) addF30LocaleStage(p) addF30FSTabStage(p) - addF30GRUB2Stage(p) + addF30GRUB2Stage(p, b.getKernelCustomization()) addF30SELinuxStage(p) addF30FixBlsStage(p) addF30QemuAssembler(p, "qcow2", t.getName()) diff --git a/internal/blueprint/qcow2_output.go b/internal/blueprint/qcow2_output.go index afb73b40c..fb30dfaf3 100644 --- a/internal/blueprint/qcow2_output.go +++ b/internal/blueprint/qcow2_output.go @@ -25,7 +25,7 @@ func (t *qcow2Output) translate(b *Blueprint) *pipeline.Pipeline { p := getCustomF30PackageSet(packages[:], excludedPackages[:]) addF30LocaleStage(p) addF30FSTabStage(p) - addF30GRUB2Stage(p) + addF30GRUB2Stage(p, b.getKernelCustomization()) addF30SELinuxStage(p) addF30FixBlsStage(p) addF30QemuAssembler(p, "qcow2", t.getName()) diff --git a/internal/blueprint/vhd_output.go b/internal/blueprint/vhd_output.go index a96b16875..db96c972c 100644 --- a/internal/blueprint/vhd_output.go +++ b/internal/blueprint/vhd_output.go @@ -20,7 +20,7 @@ func (t *vhdOutput) translate(b *Blueprint) *pipeline.Pipeline { p := getCustomF30PackageSet(packages[:], []string{}) addF30LocaleStage(p) addF30FSTabStage(p) - addF30GRUB2Stage(p) + addF30GRUB2Stage(p, b.getKernelCustomization()) addF30SELinuxStage(p) addF30FixBlsStage(p) addF30QemuAssembler(p, "qcow2", t.getName()) diff --git a/internal/blueprint/vmdk_output.go b/internal/blueprint/vmdk_output.go index e2502f7d6..4fcbb7883 100644 --- a/internal/blueprint/vmdk_output.go +++ b/internal/blueprint/vmdk_output.go @@ -7,7 +7,7 @@ type vmdkOutput struct{} func (t *vmdkOutput) translate(b *Blueprint) *pipeline.Pipeline { p := getF30Pipeline() addF30FSTabStage(p) - addF30GRUB2Stage(p) + addF30GRUB2Stage(p, b.getKernelCustomization()) addF30SELinuxStage(p) addF30QemuAssembler(p, "vmdk", t.getName()) return p