distro/f30: rework customizations
This slightly changes the customizations logic. We now make sure that each stage is appended exactly once. customizations.go are now responsible only for the things that are completely generic, and not per-ouput-type. helpers.go contain more high-level helpers that combine customziations and per-output-type defaults. This does not change the behaviour, though some pipelines are slightly reordered to make them consistent. Signed-off-by: Tom Gundersen <teg@jklm.no>
This commit is contained in:
parent
c6e73e65a5
commit
de93ddc757
19 changed files with 222 additions and 247 deletions
|
|
@ -49,6 +49,22 @@ func (b *Blueprint) GetKernelCustomization() *KernelCustomization {
|
|||
return b.Customizations.Kernel
|
||||
}
|
||||
|
||||
func (b *Blueprint) GetFirewallCustomization() *FirewallCustomization {
|
||||
if b.Customizations == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return b.Customizations.Firewall
|
||||
}
|
||||
|
||||
func (b *Blueprint) GetServicesCustomization() *ServicesCustomization {
|
||||
if b.Customizations == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return b.Customizations.Services
|
||||
}
|
||||
|
||||
func (p Package) ToNameVersion() string {
|
||||
// Omit version to prevent all packages with prefix of name to be installed
|
||||
if p.Version == "*" {
|
||||
|
|
|
|||
|
|
@ -24,20 +24,17 @@ func (t *amiOutput) translate(b *blueprint.Blueprint) (*pipeline.Pipeline, error
|
|||
excludedPackages := [...]string{
|
||||
"dracut-config-rescue",
|
||||
}
|
||||
p := getCustomF30PackageSet(packages[:], excludedPackages[:], b)
|
||||
addF30FixBlsStage(p)
|
||||
addF30LocaleStage(p)
|
||||
addF30FSTabStage(p)
|
||||
addF30GRUB2Stage(p, nil)
|
||||
addF30SELinuxStage(p)
|
||||
addF30QemuAssembler(p, "raw", t.getName())
|
||||
|
||||
if b.Customizations != nil {
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := newF30Pipeline(packages[:], excludedPackages[:], b)
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setFilesystems(p)
|
||||
setBootloader(p, "ro biosdevname=0 net.ifnames=0", b)
|
||||
setFirewall(p, nil, nil, b)
|
||||
setServices(p, nil, nil, b)
|
||||
setQemuAssembler(p, "raw", t.getName())
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,19 @@
|
|||
package fedora30
|
||||
|
||||
import (
|
||||
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
||||
"github.com/osbuild/osbuild-composer/internal/crypt"
|
||||
"github.com/osbuild/osbuild-composer/internal/pipeline"
|
||||
"log"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
||||
"github.com/osbuild/osbuild-composer/internal/crypt"
|
||||
"github.com/osbuild/osbuild-composer/internal/pipeline"
|
||||
)
|
||||
|
||||
func customizeAll(p *pipeline.Pipeline, c *blueprint.Customizations) error {
|
||||
if c == nil {
|
||||
c = &blueprint.Customizations{}
|
||||
}
|
||||
customizeHostname(p, c)
|
||||
customizeGroup(p, c)
|
||||
if err := customizeUserAndSSHKey(p, c); err != nil {
|
||||
|
|
@ -17,10 +21,8 @@ func customizeAll(p *pipeline.Pipeline, c *blueprint.Customizations) error {
|
|||
}
|
||||
customizeTimezone(p, c)
|
||||
customizeNTPServers(p, c)
|
||||
customizeLanguages(p, c)
|
||||
customizeLocale(p, c)
|
||||
customizeKeyboard(p, c)
|
||||
customizeFirewall(p, c)
|
||||
customizeServices(p, c)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
@ -177,9 +179,14 @@ func customizeNTPServers(p *pipeline.Pipeline, c *blueprint.Customizations) {
|
|||
)
|
||||
}
|
||||
|
||||
func customizeLanguages(p *pipeline.Pipeline, c *blueprint.Customizations) {
|
||||
if c.Locale == nil || len(c.Locale.Languages) == 0 {
|
||||
return
|
||||
func customizeLocale(p *pipeline.Pipeline, c *blueprint.Customizations) {
|
||||
locale := c.Locale
|
||||
if locale == nil {
|
||||
locale = &blueprint.LocaleCustomization{
|
||||
Languages: []string{
|
||||
"en_US",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: you can specify more languages in customization
|
||||
|
|
@ -190,7 +197,7 @@ func customizeLanguages(p *pipeline.Pipeline, c *blueprint.Customizations) {
|
|||
|
||||
p.AddStage(
|
||||
pipeline.NewLocaleStage(&pipeline.LocaleStageOptions{
|
||||
Language: c.Locale.Languages[0],
|
||||
Language: locale.Languages[0],
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
|
@ -207,40 +214,6 @@ func customizeKeyboard(p *pipeline.Pipeline, c *blueprint.Customizations) {
|
|||
)
|
||||
}
|
||||
|
||||
func customizeFirewall(p *pipeline.Pipeline, c *blueprint.Customizations) {
|
||||
if c.Firewall == nil {
|
||||
return
|
||||
}
|
||||
|
||||
var enabledServices, disabledServices []string
|
||||
|
||||
if c.Firewall.Services != nil {
|
||||
enabledServices = c.Firewall.Services.Enabled
|
||||
disabledServices = c.Firewall.Services.Disabled
|
||||
}
|
||||
|
||||
p.AddStage(
|
||||
pipeline.NewFirewallStage(&pipeline.FirewallStageOptions{
|
||||
Ports: c.Firewall.Ports,
|
||||
EnabledServices: enabledServices,
|
||||
DisabledServices: disabledServices,
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
func customizeServices(p *pipeline.Pipeline, c *blueprint.Customizations) {
|
||||
if c.Services == nil {
|
||||
return
|
||||
}
|
||||
|
||||
p.AddStage(
|
||||
pipeline.NewSystemdStage(&pipeline.SystemdStageOptions{
|
||||
EnabledServices: c.Services.Enabled,
|
||||
DisabledServices: c.Services.Disabled,
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
func findKeysForUser(sshKeyCustomizations []blueprint.SSHKeyCustomization, user string) (keys []string) {
|
||||
for _, sshKey := range sshKeyCustomizations {
|
||||
if sshKey.User == user {
|
||||
|
|
|
|||
|
|
@ -20,20 +20,17 @@ func (t *diskOutput) translate(b *blueprint.Blueprint) (*pipeline.Pipeline, erro
|
|||
excludedPackages := [...]string{
|
||||
"dracut-config-rescue",
|
||||
}
|
||||
p := getCustomF30PackageSet(packages[:], excludedPackages[:], b)
|
||||
addF30LocaleStage(p)
|
||||
addF30FSTabStage(p)
|
||||
addF30GRUB2Stage(p, b.GetKernelCustomization())
|
||||
addF30FixBlsStage(p)
|
||||
addF30SELinuxStage(p)
|
||||
addF30QemuAssembler(p, "raw", t.getName())
|
||||
|
||||
if b.Customizations != nil {
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := newF30Pipeline(packages[:], excludedPackages[:], b)
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setFilesystems(p)
|
||||
setBootloader(p, "ro biosdevname=0 net.ifnames=0", b)
|
||||
setFirewall(p, nil, nil, b)
|
||||
setServices(p, nil, nil, b)
|
||||
setQemuAssembler(p, "raw", t.getName())
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,19 +19,16 @@ func (t *ext4Output) translate(b *blueprint.Blueprint) (*pipeline.Pipeline, erro
|
|||
excludedPackages := [...]string{
|
||||
"dracut-config-rescue",
|
||||
}
|
||||
p := getCustomF30PackageSet(packages[:], excludedPackages[:], b)
|
||||
addF30LocaleStage(p)
|
||||
addF30GRUB2Stage(p, b.GetKernelCustomization())
|
||||
addF30FixBlsStage(p)
|
||||
addF30SELinuxStage(p)
|
||||
addF30RawFSAssembler(p, t.getName())
|
||||
|
||||
if b.Customizations != nil {
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := newF30Pipeline(packages[:], excludedPackages[:], b)
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setBootloader(p, "ro biosdevname=0 net.ifnames=0", b)
|
||||
setFirewall(p, nil, nil, b)
|
||||
setServices(p, nil, nil, b)
|
||||
setRawFSAssembler(p, t.getName())
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,35 +62,7 @@ func getF30BuildPipeline() *pipeline.Pipeline {
|
|||
return p
|
||||
}
|
||||
|
||||
func getF30Pipeline() *pipeline.Pipeline {
|
||||
p := &pipeline.Pipeline{
|
||||
BuildPipeline: getF30BuildPipeline(),
|
||||
}
|
||||
options := &pipeline.DNFStageOptions{
|
||||
ReleaseVersion: "30",
|
||||
BaseArchitecture: "x86_64",
|
||||
}
|
||||
options.AddRepository(getF30Repository())
|
||||
options.AddPackage("@Core")
|
||||
options.AddPackage("chrony")
|
||||
options.AddPackage("kernel")
|
||||
options.AddPackage("selinux-policy-targeted")
|
||||
options.AddPackage("grub2-pc")
|
||||
options.AddPackage("spice-vdagent")
|
||||
options.AddPackage("qemu-guest-agent")
|
||||
options.AddPackage("xen-libs")
|
||||
options.AddPackage("langpacks-en")
|
||||
p.AddStage(pipeline.NewDNFStage(options))
|
||||
p.AddStage(pipeline.NewFixBLSStage())
|
||||
p.AddStage(pipeline.NewLocaleStage(
|
||||
&pipeline.LocaleStageOptions{
|
||||
Language: "en_US",
|
||||
}))
|
||||
|
||||
return p
|
||||
}
|
||||
|
||||
func getCustomF30PackageSet(packages []string, excludedPackages []string, blueprint *blueprint.Blueprint) *pipeline.Pipeline {
|
||||
func newF30Pipeline(packages []string, excludedPackages []string, blueprint *blueprint.Blueprint) *pipeline.Pipeline {
|
||||
p := &pipeline.Pipeline{
|
||||
BuildPipeline: getF30BuildPipeline(),
|
||||
}
|
||||
|
|
@ -106,7 +78,6 @@ func getCustomF30PackageSet(packages []string, excludedPackages []string, bluepr
|
|||
options.ExcludePackage(pkg)
|
||||
}
|
||||
|
||||
// handle extra packages, modules (currently synonym to packages) and groups
|
||||
for _, pkg := range blueprint.Packages {
|
||||
options.AddPackage(pkg.ToNameVersion())
|
||||
}
|
||||
|
|
@ -120,16 +91,20 @@ func getCustomF30PackageSet(packages []string, excludedPackages []string, bluepr
|
|||
}
|
||||
|
||||
p.AddStage(pipeline.NewDNFStage(options))
|
||||
|
||||
/* grub2 mangles the BLS snippets, we must fix them manually */
|
||||
p.AddStage(pipeline.NewFixBLSStage())
|
||||
|
||||
return p
|
||||
}
|
||||
|
||||
func addF30GRUB2Stage(p *pipeline.Pipeline, kernelCustomization *blueprint.KernelCustomization) {
|
||||
func setBootloader(p *pipeline.Pipeline, kernelOptions string, blueprint *blueprint.Blueprint) {
|
||||
id, err := uuid.Parse("76a22bf4-f153-4541-b6c7-0332c0dfaeac")
|
||||
if err != nil {
|
||||
panic("invalid UUID")
|
||||
}
|
||||
kernelOptions := "ro biosdevname=0 net.ifnames=0"
|
||||
|
||||
kernelCustomization := blueprint.GetKernelCustomization()
|
||||
if kernelCustomization != nil {
|
||||
kernelOptions += " " + kernelCustomization.Append
|
||||
}
|
||||
|
|
@ -142,7 +117,7 @@ func addF30GRUB2Stage(p *pipeline.Pipeline, kernelCustomization *blueprint.Kerne
|
|||
))
|
||||
}
|
||||
|
||||
func addF30FSTabStage(p *pipeline.Pipeline) {
|
||||
func setFilesystems(p *pipeline.Pipeline) {
|
||||
id, err := uuid.Parse("76a22bf4-f153-4541-b6c7-0332c0dfaeac")
|
||||
if err != nil {
|
||||
panic("invalid UUID")
|
||||
|
|
@ -152,25 +127,56 @@ func addF30FSTabStage(p *pipeline.Pipeline) {
|
|||
p.AddStage(pipeline.NewFSTabStage(options))
|
||||
}
|
||||
|
||||
func addF30SELinuxStage(p *pipeline.Pipeline) {
|
||||
func setFirewall(p *pipeline.Pipeline, enabledServices []string, disabledServices []string, b *blueprint.Blueprint) {
|
||||
f := b.GetFirewallCustomization()
|
||||
ports := []string{}
|
||||
|
||||
if f != nil {
|
||||
if f.Services != nil {
|
||||
enabledServices = append(enabledServices, f.Services.Enabled...)
|
||||
disabledServices = append(disabledServices, f.Services.Disabled...)
|
||||
}
|
||||
ports = f.Ports
|
||||
}
|
||||
|
||||
if len(enabledServices) == 0 && len(disabledServices) == 0 && len(ports) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
p.AddStage(
|
||||
pipeline.NewFirewallStage(&pipeline.FirewallStageOptions{
|
||||
Ports: ports,
|
||||
EnabledServices: enabledServices,
|
||||
DisabledServices: disabledServices,
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
func setServices(p *pipeline.Pipeline, enabledServices []string, disabledServices []string, b *blueprint.Blueprint) {
|
||||
s := b.GetServicesCustomization()
|
||||
|
||||
if s != nil {
|
||||
enabledServices = append(enabledServices, s.Enabled...)
|
||||
disabledServices = append(disabledServices, s.Enabled...)
|
||||
}
|
||||
|
||||
if len(enabledServices) == 0 && len(disabledServices) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
p.AddStage(
|
||||
pipeline.NewSystemdStage(&pipeline.SystemdStageOptions{
|
||||
EnabledServices: enabledServices,
|
||||
DisabledServices: disabledServices,
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
func setQemuAssembler(p *pipeline.Pipeline, format string, filename string) {
|
||||
p.AddStage(pipeline.NewSELinuxStage(
|
||||
&pipeline.SELinuxStageOptions{
|
||||
FileContexts: "etc/selinux/targeted/contexts/files/file_contexts",
|
||||
}))
|
||||
}
|
||||
|
||||
func addF30LocaleStage(p *pipeline.Pipeline) {
|
||||
p.AddStage(pipeline.NewLocaleStage(
|
||||
&pipeline.LocaleStageOptions{
|
||||
Language: "en_US",
|
||||
}))
|
||||
}
|
||||
|
||||
func addF30FixBlsStage(p *pipeline.Pipeline) {
|
||||
p.AddStage(pipeline.NewFixBLSStage())
|
||||
}
|
||||
|
||||
func addF30QemuAssembler(p *pipeline.Pipeline, format string, filename string) {
|
||||
id, err := uuid.Parse("76a22bf4-f153-4541-b6c7-0332c0dfaeac")
|
||||
if err != nil {
|
||||
panic("invalid UUID")
|
||||
|
|
@ -187,14 +193,22 @@ func addF30QemuAssembler(p *pipeline.Pipeline, format string, filename string) {
|
|||
})
|
||||
}
|
||||
|
||||
func addF30TarAssembler(p *pipeline.Pipeline, filename, compression string) {
|
||||
func setTarAssembler(p *pipeline.Pipeline, filename, compression string) {
|
||||
p.AddStage(pipeline.NewSELinuxStage(
|
||||
&pipeline.SELinuxStageOptions{
|
||||
FileContexts: "etc/selinux/targeted/contexts/files/file_contexts",
|
||||
}))
|
||||
p.Assembler = pipeline.NewTarAssembler(
|
||||
&pipeline.TarAssemblerOptions{
|
||||
Filename: filename,
|
||||
})
|
||||
}
|
||||
|
||||
func addF30RawFSAssembler(p *pipeline.Pipeline, filename string) {
|
||||
func setRawFSAssembler(p *pipeline.Pipeline, filename string) {
|
||||
p.AddStage(pipeline.NewSELinuxStage(
|
||||
&pipeline.SELinuxStageOptions{
|
||||
FileContexts: "etc/selinux/targeted/contexts/files/file_contexts",
|
||||
}))
|
||||
id, err := uuid.Parse("76a22bf4-f153-4541-b6c7-0332c0dfaeac")
|
||||
if err != nil {
|
||||
panic("invalid UUID")
|
||||
|
|
|
|||
|
|
@ -24,20 +24,17 @@ func (t *openstackOutput) translate(b *blueprint.Blueprint) (*pipeline.Pipeline,
|
|||
excludedPackages := [...]string{
|
||||
"dracut-config-rescue",
|
||||
}
|
||||
p := getCustomF30PackageSet(packages[:], excludedPackages[:], b)
|
||||
addF30LocaleStage(p)
|
||||
addF30FSTabStage(p)
|
||||
addF30GRUB2Stage(p, b.GetKernelCustomization())
|
||||
addF30FixBlsStage(p)
|
||||
addF30SELinuxStage(p)
|
||||
addF30QemuAssembler(p, "qcow2", t.getName())
|
||||
|
||||
if b.Customizations != nil {
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := newF30Pipeline(packages[:], excludedPackages[:], b)
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setFilesystems(p)
|
||||
setBootloader(p, "ro biosdevname=0 net.ifnames=0", b)
|
||||
setFirewall(p, nil, nil, b)
|
||||
setServices(p, nil, nil, b)
|
||||
setQemuAssembler(p, "qcow2", t.getName())
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,20 +25,17 @@ func (t *qcow2Output) translate(b *blueprint.Blueprint) (*pipeline.Pipeline, err
|
|||
"gobject-introspection",
|
||||
"plymouth",
|
||||
}
|
||||
p := getCustomF30PackageSet(packages[:], excludedPackages[:], b)
|
||||
addF30LocaleStage(p)
|
||||
addF30FSTabStage(p)
|
||||
addF30GRUB2Stage(p, b.GetKernelCustomization())
|
||||
addF30FixBlsStage(p)
|
||||
addF30SELinuxStage(p)
|
||||
addF30QemuAssembler(p, "qcow2", t.getName())
|
||||
|
||||
if b.Customizations != nil {
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := newF30Pipeline(packages[:], excludedPackages[:], b)
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setFilesystems(p)
|
||||
setBootloader(p, "ro biosdevname=0 net.ifnames=0", b)
|
||||
setFirewall(p, nil, nil, b)
|
||||
setServices(p, nil, nil, b)
|
||||
setQemuAssembler(p, "qcow2", t.getName())
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,19 +19,16 @@ func (t *tarOutput) translate(b *blueprint.Blueprint) (*pipeline.Pipeline, error
|
|||
excludedPackages := [...]string{
|
||||
"dracut-config-rescue",
|
||||
}
|
||||
p := getCustomF30PackageSet(packages[:], excludedPackages[:], b)
|
||||
addF30LocaleStage(p)
|
||||
addF30GRUB2Stage(p, b.GetKernelCustomization())
|
||||
addF30FixBlsStage(p)
|
||||
addF30SELinuxStage(p)
|
||||
addF30TarAssembler(p, t.getName(), "xz")
|
||||
|
||||
if b.Customizations != nil {
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := newF30Pipeline(packages[:], excludedPackages[:], b)
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setBootloader(p, "ro biosdevname=0 net.ifnames=0", b)
|
||||
setFirewall(p, nil, nil, b)
|
||||
setServices(p, nil, nil, b)
|
||||
setTarAssembler(p, t.getName(), "xz")
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,20 +23,17 @@ func (t *vhdOutput) translate(b *blueprint.Blueprint) (*pipeline.Pipeline, error
|
|||
excludedPackages := [...]string{
|
||||
"dracut-config-rescue",
|
||||
}
|
||||
p := getCustomF30PackageSet(packages[:], excludedPackages[:], b)
|
||||
addF30LocaleStage(p)
|
||||
addF30FSTabStage(p)
|
||||
addF30GRUB2Stage(p, b.GetKernelCustomization())
|
||||
addF30FixBlsStage(p)
|
||||
addF30SELinuxStage(p)
|
||||
addF30QemuAssembler(p, "vpc", t.getName())
|
||||
|
||||
if b.Customizations != nil {
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := newF30Pipeline(packages[:], excludedPackages[:], b)
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setFilesystems(p)
|
||||
setBootloader(p, "ro biosdevname=0 net.ifnames=0", b)
|
||||
setFirewall(p, nil, nil, b)
|
||||
setServices(p, nil, nil, b)
|
||||
setQemuAssembler(p, "vpc", t.getName())
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,20 +21,17 @@ func (t *vmdkOutput) translate(b *blueprint.Blueprint) (*pipeline.Pipeline, erro
|
|||
excludedPackages := [...]string{
|
||||
"dracut-config-rescue",
|
||||
}
|
||||
p := getCustomF30PackageSet(packages[:], excludedPackages[:], b)
|
||||
addF30LocaleStage(p)
|
||||
addF30FSTabStage(p)
|
||||
addF30GRUB2Stage(p, b.GetKernelCustomization())
|
||||
addF30FixBlsStage(p)
|
||||
addF30SELinuxStage(p)
|
||||
addF30QemuAssembler(p, "vmdk", t.getName())
|
||||
|
||||
if b.Customizations != nil {
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := newF30Pipeline(packages[:], excludedPackages[:], b)
|
||||
err := customizeAll(p, b.Customizations)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
setFilesystems(p)
|
||||
setBootloader(p, "ro biosdevname=0 net.ifnames=0", b)
|
||||
setFirewall(p, nil, nil, b)
|
||||
setServices(p, nil, nil, b)
|
||||
setQemuAssembler(p, "vmdk", t.getName())
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ func TestCreate(t *testing.T) {
|
|||
}
|
||||
|
||||
testRoute(t, api, "POST", "/job-queue/v1/jobs", `{}`, http.StatusCreated,
|
||||
`{"id":"ffffffff-ffff-ffff-ffff-ffffffffffff","pipeline":{"build":{"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch","gpgkey":"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFturGcBEACv0xBo91V2n0uEC2vh69ywCiSyvUgN/AQH8EZpCVtM7NyjKgKm\nbbY4G3R0M3ir1xXmvUDvK0493/qOiFrjkplvzXFTGpPTi0ypqGgxc5d0ohRA1M75\nL+0AIlXoOgHQ358/c4uO8X0JAA1NYxCkAW1KSJgFJ3RjukrfqSHWthS1d4o8fhHy\nKJKEnirE5hHqB50dafXrBfgZdaOs3C6ppRIePFe2o4vUEapMTCHFw0woQR8Ah4/R\nn7Z9G9Ln+0Cinmy0nbIDiZJ+pgLAXCOWBfDUzcOjDGKvcpoZharA07c0q1/5ojzO\n4F0Fh4g/BUmtrASwHfcIbjHyCSr1j/3Iz883iy07gJY5Yhiuaqmp0o0f9fgHkG53\n2xCU1owmACqaIBNQMukvXRDtB2GJMuKa/asTZDP6R5re+iXs7+s9ohcRRAKGyAyc\nYKIQKcaA+6M8T7/G+TPHZX6HJWqJJiYB+EC2ERblpvq9TPlLguEWcmvjbVc31nyq\nSDoO3ncFWKFmVsbQPTbP+pKUmlLfJwtb5XqxNR5GEXSwVv4I7IqBmJz1MmRafnBZ\ng0FJUtH668GnldO20XbnSVBr820F5SISMXVwCXDXEvGwwiB8Lt8PvqzXnGIFDAu3\nDlQI5sxSqpPVWSyw08ppKT2Tpmy8adiBotLfaCFl2VTHwOae48X2dMPBvQARAQAB\ntDFGZWRvcmEgKDMwKSA8ZmVkb3JhLTMwLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJbbqxnAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRDvPBEfz8ZZudTnD/9170LL3nyTVUCFmBjT9wZ4gYnpwtKVPa/pKnxbbS+Bmmac\ng9TrT9pZbqOHrNJLiZ3Zx1Hp+8uxr3Lo6kbYwImLhkOEDrf4aP17HfQ6VYFbQZI8\nf79OFxWJ7si9+3gfzeh9UYFEqOQfzIjLWFyfnas0OnV/P+RMQ1Zr+vPRqO7AR2va\nN9wg+Xl7157dhXPCGYnGMNSoxCbpRs0JNlzvJMuAea5nTTznRaJZtK/xKsqLn51D\nK07k9MHVFXakOH8QtMCUglbwfTfIpO5YRq5imxlWbqsYWVQy1WGJFyW6hWC0+RcJ\nOx5zGtOfi4/dN+xJ+ibnbyvy/il7Qm+vyFhCYqIPyS5m2UVJUuao3eApE38k78/o\n8aQOTnFQZ+U1Sw+6woFTxjqRQBXlQm2+7Bt3bqGATg4sXXWPbmwdL87Ic+mxn/ml\nSMfQux/5k6iAu1kQhwkO2YJn9eII6HIPkW+2m5N1JsUyJQe4cbtZE5Yh3TRA0dm7\n+zoBRfCXkOW4krchbgww/ptVmzMMP7GINJdROrJnsGl5FVeid9qHzV7aZycWSma7\nCxBYB1J8HCbty5NjtD6XMYRrMLxXugvX6Q4NPPH+2NKjzX4SIDejS6JjgrP3KA3O\npMuo7ZHMfveBngv8yP+ZD/1sS6l+dfExvdaJdOdgFCnp4p3gPbw5+Lv70HrMjA==\n=BfZ/\n-----END PGP PUBLIC KEY BLOCK-----\n","checksum":"sha256:9f596e18f585bee30ac41c11fb11a83ed6b11d5b341c1cb56ca4015d7717cb97"}],"packages":["dnf","e2fsprogs","policycoreutils","qemu-img","systemd","grub2-pc","tar"],"releasever":"30","basearch":"x86_64"}}]},"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch","gpgkey":"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFturGcBEACv0xBo91V2n0uEC2vh69ywCiSyvUgN/AQH8EZpCVtM7NyjKgKm\nbbY4G3R0M3ir1xXmvUDvK0493/qOiFrjkplvzXFTGpPTi0ypqGgxc5d0ohRA1M75\nL+0AIlXoOgHQ358/c4uO8X0JAA1NYxCkAW1KSJgFJ3RjukrfqSHWthS1d4o8fhHy\nKJKEnirE5hHqB50dafXrBfgZdaOs3C6ppRIePFe2o4vUEapMTCHFw0woQR8Ah4/R\nn7Z9G9Ln+0Cinmy0nbIDiZJ+pgLAXCOWBfDUzcOjDGKvcpoZharA07c0q1/5ojzO\n4F0Fh4g/BUmtrASwHfcIbjHyCSr1j/3Iz883iy07gJY5Yhiuaqmp0o0f9fgHkG53\n2xCU1owmACqaIBNQMukvXRDtB2GJMuKa/asTZDP6R5re+iXs7+s9ohcRRAKGyAyc\nYKIQKcaA+6M8T7/G+TPHZX6HJWqJJiYB+EC2ERblpvq9TPlLguEWcmvjbVc31nyq\nSDoO3ncFWKFmVsbQPTbP+pKUmlLfJwtb5XqxNR5GEXSwVv4I7IqBmJz1MmRafnBZ\ng0FJUtH668GnldO20XbnSVBr820F5SISMXVwCXDXEvGwwiB8Lt8PvqzXnGIFDAu3\nDlQI5sxSqpPVWSyw08ppKT2Tpmy8adiBotLfaCFl2VTHwOae48X2dMPBvQARAQAB\ntDFGZWRvcmEgKDMwKSA8ZmVkb3JhLTMwLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJbbqxnAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRDvPBEfz8ZZudTnD/9170LL3nyTVUCFmBjT9wZ4gYnpwtKVPa/pKnxbbS+Bmmac\ng9TrT9pZbqOHrNJLiZ3Zx1Hp+8uxr3Lo6kbYwImLhkOEDrf4aP17HfQ6VYFbQZI8\nf79OFxWJ7si9+3gfzeh9UYFEqOQfzIjLWFyfnas0OnV/P+RMQ1Zr+vPRqO7AR2va\nN9wg+Xl7157dhXPCGYnGMNSoxCbpRs0JNlzvJMuAea5nTTznRaJZtK/xKsqLn51D\nK07k9MHVFXakOH8QtMCUglbwfTfIpO5YRq5imxlWbqsYWVQy1WGJFyW6hWC0+RcJ\nOx5zGtOfi4/dN+xJ+ibnbyvy/il7Qm+vyFhCYqIPyS5m2UVJUuao3eApE38k78/o\n8aQOTnFQZ+U1Sw+6woFTxjqRQBXlQm2+7Bt3bqGATg4sXXWPbmwdL87Ic+mxn/ml\nSMfQux/5k6iAu1kQhwkO2YJn9eII6HIPkW+2m5N1JsUyJQe4cbtZE5Yh3TRA0dm7\n+zoBRfCXkOW4krchbgww/ptVmzMMP7GINJdROrJnsGl5FVeid9qHzV7aZycWSma7\nCxBYB1J8HCbty5NjtD6XMYRrMLxXugvX6Q4NPPH+2NKjzX4SIDejS6JjgrP3KA3O\npMuo7ZHMfveBngv8yP+ZD/1sS6l+dfExvdaJdOdgFCnp4p3gPbw5+Lv70HrMjA==\n=BfZ/\n-----END PGP PUBLIC KEY BLOCK-----\n","checksum":"sha256:9f596e18f585bee30ac41c11fb11a83ed6b11d5b341c1cb56ca4015d7717cb97"}],"packages":["policycoreutils","selinux-policy-targeted","kernel","firewalld","chrony","langpacks-en"],"exclude_packages":["dracut-config-rescue"],"releasever":"30","basearch":"x86_64"}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","boot_fs_uuid":"00000000-0000-0000-0000-000000000000","kernel_opts":"ro biosdevname=0 net.ifnames=0"}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.tar","options":{"filename":"root.tar.xz"}}},"targets":[{"name":"org.osbuild.local","options":{"location":"/var/lib/osbuild-composer/outputs/ffffffff-ffff-ffff-ffff-ffffffffffff"}}]}`)
|
||||
`{"id":"ffffffff-ffff-ffff-ffff-ffffffffffff","pipeline":{"build":{"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever\u0026arch=$basearch","gpgkey":"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFturGcBEACv0xBo91V2n0uEC2vh69ywCiSyvUgN/AQH8EZpCVtM7NyjKgKm\nbbY4G3R0M3ir1xXmvUDvK0493/qOiFrjkplvzXFTGpPTi0ypqGgxc5d0ohRA1M75\nL+0AIlXoOgHQ358/c4uO8X0JAA1NYxCkAW1KSJgFJ3RjukrfqSHWthS1d4o8fhHy\nKJKEnirE5hHqB50dafXrBfgZdaOs3C6ppRIePFe2o4vUEapMTCHFw0woQR8Ah4/R\nn7Z9G9Ln+0Cinmy0nbIDiZJ+pgLAXCOWBfDUzcOjDGKvcpoZharA07c0q1/5ojzO\n4F0Fh4g/BUmtrASwHfcIbjHyCSr1j/3Iz883iy07gJY5Yhiuaqmp0o0f9fgHkG53\n2xCU1owmACqaIBNQMukvXRDtB2GJMuKa/asTZDP6R5re+iXs7+s9ohcRRAKGyAyc\nYKIQKcaA+6M8T7/G+TPHZX6HJWqJJiYB+EC2ERblpvq9TPlLguEWcmvjbVc31nyq\nSDoO3ncFWKFmVsbQPTbP+pKUmlLfJwtb5XqxNR5GEXSwVv4I7IqBmJz1MmRafnBZ\ng0FJUtH668GnldO20XbnSVBr820F5SISMXVwCXDXEvGwwiB8Lt8PvqzXnGIFDAu3\nDlQI5sxSqpPVWSyw08ppKT2Tpmy8adiBotLfaCFl2VTHwOae48X2dMPBvQARAQAB\ntDFGZWRvcmEgKDMwKSA8ZmVkb3JhLTMwLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJbbqxnAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRDvPBEfz8ZZudTnD/9170LL3nyTVUCFmBjT9wZ4gYnpwtKVPa/pKnxbbS+Bmmac\ng9TrT9pZbqOHrNJLiZ3Zx1Hp+8uxr3Lo6kbYwImLhkOEDrf4aP17HfQ6VYFbQZI8\nf79OFxWJ7si9+3gfzeh9UYFEqOQfzIjLWFyfnas0OnV/P+RMQ1Zr+vPRqO7AR2va\nN9wg+Xl7157dhXPCGYnGMNSoxCbpRs0JNlzvJMuAea5nTTznRaJZtK/xKsqLn51D\nK07k9MHVFXakOH8QtMCUglbwfTfIpO5YRq5imxlWbqsYWVQy1WGJFyW6hWC0+RcJ\nOx5zGtOfi4/dN+xJ+ibnbyvy/il7Qm+vyFhCYqIPyS5m2UVJUuao3eApE38k78/o\n8aQOTnFQZ+U1Sw+6woFTxjqRQBXlQm2+7Bt3bqGATg4sXXWPbmwdL87Ic+mxn/ml\nSMfQux/5k6iAu1kQhwkO2YJn9eII6HIPkW+2m5N1JsUyJQe4cbtZE5Yh3TRA0dm7\n+zoBRfCXkOW4krchbgww/ptVmzMMP7GINJdROrJnsGl5FVeid9qHzV7aZycWSma7\nCxBYB1J8HCbty5NjtD6XMYRrMLxXugvX6Q4NPPH+2NKjzX4SIDejS6JjgrP3KA3O\npMuo7ZHMfveBngv8yP+ZD/1sS6l+dfExvdaJdOdgFCnp4p3gPbw5+Lv70HrMjA==\n=BfZ/\n-----END PGP PUBLIC KEY BLOCK-----\n","checksum":"sha256:9f596e18f585bee30ac41c11fb11a83ed6b11d5b341c1cb56ca4015d7717cb97"}],"packages":["dnf","e2fsprogs","policycoreutils","qemu-img","systemd","grub2-pc","tar"],"releasever":"30","basearch":"x86_64"}}]},"stages":[{"name":"org.osbuild.dnf","options":{"repos":[{"metalink":"https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever\u0026arch=$basearch","gpgkey":"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBFturGcBEACv0xBo91V2n0uEC2vh69ywCiSyvUgN/AQH8EZpCVtM7NyjKgKm\nbbY4G3R0M3ir1xXmvUDvK0493/qOiFrjkplvzXFTGpPTi0ypqGgxc5d0ohRA1M75\nL+0AIlXoOgHQ358/c4uO8X0JAA1NYxCkAW1KSJgFJ3RjukrfqSHWthS1d4o8fhHy\nKJKEnirE5hHqB50dafXrBfgZdaOs3C6ppRIePFe2o4vUEapMTCHFw0woQR8Ah4/R\nn7Z9G9Ln+0Cinmy0nbIDiZJ+pgLAXCOWBfDUzcOjDGKvcpoZharA07c0q1/5ojzO\n4F0Fh4g/BUmtrASwHfcIbjHyCSr1j/3Iz883iy07gJY5Yhiuaqmp0o0f9fgHkG53\n2xCU1owmACqaIBNQMukvXRDtB2GJMuKa/asTZDP6R5re+iXs7+s9ohcRRAKGyAyc\nYKIQKcaA+6M8T7/G+TPHZX6HJWqJJiYB+EC2ERblpvq9TPlLguEWcmvjbVc31nyq\nSDoO3ncFWKFmVsbQPTbP+pKUmlLfJwtb5XqxNR5GEXSwVv4I7IqBmJz1MmRafnBZ\ng0FJUtH668GnldO20XbnSVBr820F5SISMXVwCXDXEvGwwiB8Lt8PvqzXnGIFDAu3\nDlQI5sxSqpPVWSyw08ppKT2Tpmy8adiBotLfaCFl2VTHwOae48X2dMPBvQARAQAB\ntDFGZWRvcmEgKDMwKSA8ZmVkb3JhLTMwLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQI4BBMBAgAiBQJbbqxnAhsPBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK\nCRDvPBEfz8ZZudTnD/9170LL3nyTVUCFmBjT9wZ4gYnpwtKVPa/pKnxbbS+Bmmac\ng9TrT9pZbqOHrNJLiZ3Zx1Hp+8uxr3Lo6kbYwImLhkOEDrf4aP17HfQ6VYFbQZI8\nf79OFxWJ7si9+3gfzeh9UYFEqOQfzIjLWFyfnas0OnV/P+RMQ1Zr+vPRqO7AR2va\nN9wg+Xl7157dhXPCGYnGMNSoxCbpRs0JNlzvJMuAea5nTTznRaJZtK/xKsqLn51D\nK07k9MHVFXakOH8QtMCUglbwfTfIpO5YRq5imxlWbqsYWVQy1WGJFyW6hWC0+RcJ\nOx5zGtOfi4/dN+xJ+ibnbyvy/il7Qm+vyFhCYqIPyS5m2UVJUuao3eApE38k78/o\n8aQOTnFQZ+U1Sw+6woFTxjqRQBXlQm2+7Bt3bqGATg4sXXWPbmwdL87Ic+mxn/ml\nSMfQux/5k6iAu1kQhwkO2YJn9eII6HIPkW+2m5N1JsUyJQe4cbtZE5Yh3TRA0dm7\n+zoBRfCXkOW4krchbgww/ptVmzMMP7GINJdROrJnsGl5FVeid9qHzV7aZycWSma7\nCxBYB1J8HCbty5NjtD6XMYRrMLxXugvX6Q4NPPH+2NKjzX4SIDejS6JjgrP3KA3O\npMuo7ZHMfveBngv8yP+ZD/1sS6l+dfExvdaJdOdgFCnp4p3gPbw5+Lv70HrMjA==\n=BfZ/\n-----END PGP PUBLIC KEY BLOCK-----\n","checksum":"sha256:9f596e18f585bee30ac41c11fb11a83ed6b11d5b341c1cb56ca4015d7717cb97"}],"packages":["policycoreutils","selinux-policy-targeted","kernel","firewalld","chrony","langpacks-en"],"exclude_packages":["dracut-config-rescue"],"releasever":"30","basearch":"x86_64"}},{"name":"org.osbuild.fix-bls","options":{}},{"name":"org.osbuild.locale","options":{"language":"en_US"}},{"name":"org.osbuild.grub2","options":{"root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","boot_fs_uuid":"00000000-0000-0000-0000-000000000000","kernel_opts":"ro biosdevname=0 net.ifnames=0"}},{"name":"org.osbuild.selinux","options":{"file_contexts":"etc/selinux/targeted/contexts/files/file_contexts"}}],"assembler":{"name":"org.osbuild.tar","options":{"filename":"root.tar.xz"}}},"targets":[{"name":"org.osbuild.local","options":{"location":"/var/lib/osbuild-composer/outputs/ffffffff-ffff-ffff-ffff-ffffffffffff"}}]}`)
|
||||
}
|
||||
|
||||
func testUpdateTransition(t *testing.T, from, to string, expectedStatus int) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue