debian-forge-composer/internal/distro/image_config.go
Christian Kellner dbd6f1f48c distro: add GPGKeyFiles option to ImageConfig
Add a new option `GPGKeyFiles` to ImageConfig that indicates which files
containing GPG keys should be imported into rpm. For now it will be used
by the osPipeline in rhel{86,90} to set the corresponding option in the
`org.osbuild.rpm` stage.
2022-03-05 21:04:24 +01:00

131 lines
4.4 KiB
Go

package distro
import "github.com/osbuild/osbuild-composer/internal/osbuild2"
type RHSMSubscriptionStatus string
const (
RHSMConfigWithSubscription RHSMSubscriptionStatus = "with-subscription"
RHSMConfigNoSubscription RHSMSubscriptionStatus = "no-subscription"
)
// ImageConfig represents a (default) configuration applied to the image
type ImageConfig struct {
Timezone string
TimeSynchronization *osbuild2.ChronyStageOptions
Locale string
Keyboard *osbuild2.KeymapStageOptions
EnabledServices []string
DisabledServices []string
DefaultTarget string
Sysconfig []*osbuild2.SysconfigStageOptions
// List of files from which to import GPG keys into the RPM database
GPGKeyFiles []string
// for RHSM configuration, we need to potentially distinguish the case
// when the user want the image to be subscribed on first boot and when not
RHSMConfig map[RHSMSubscriptionStatus]*osbuild2.RHSMStageOptions
SystemdLogind []*osbuild2.SystemdLogindStageOptions
CloudInit []*osbuild2.CloudInitStageOptions
Modprobe []*osbuild2.ModprobeStageOptions
DracutConf []*osbuild2.DracutConfStageOptions
SystemdUnit []*osbuild2.SystemdUnitStageOptions
Authselect *osbuild2.AuthselectStageOptions
SELinuxConfig *osbuild2.SELinuxConfigStageOptions
Tuned *osbuild2.TunedStageOptions
Tmpfilesd []*osbuild2.TmpfilesdStageOptions
PamLimitsConf []*osbuild2.PamLimitsConfStageOptions
Sysctld []*osbuild2.SysctldStageOptions
DNFConfig []*osbuild2.DNFConfigStageOptions
SshdConfig *osbuild2.SshdConfigStageOptions
Authconfig *osbuild2.AuthconfigStageOptions
PwQuality *osbuild2.PwqualityConfStageOptions
WAAgentConfig *osbuild2.WAAgentConfStageOptions
Grub2Config *osbuild2.GRUB2Config
}
// InheritFrom inherits unset values from the provided parent configuration and
// returns a new structure instance, which is a result of the inheritance.
func (c *ImageConfig) InheritFrom(parentConfig *ImageConfig) *ImageConfig {
finalConfig := ImageConfig(*c)
if parentConfig != nil {
if finalConfig.Timezone == "" {
finalConfig.Timezone = parentConfig.Timezone
}
if finalConfig.TimeSynchronization == nil {
finalConfig.TimeSynchronization = parentConfig.TimeSynchronization
}
if finalConfig.Locale == "" {
finalConfig.Locale = parentConfig.Locale
}
if finalConfig.Keyboard == nil {
finalConfig.Keyboard = parentConfig.Keyboard
}
if finalConfig.EnabledServices == nil {
finalConfig.EnabledServices = parentConfig.EnabledServices
}
if finalConfig.DisabledServices == nil {
finalConfig.DisabledServices = parentConfig.DisabledServices
}
if finalConfig.DefaultTarget == "" {
finalConfig.DefaultTarget = parentConfig.DefaultTarget
}
if finalConfig.Sysconfig == nil {
finalConfig.Sysconfig = parentConfig.Sysconfig
}
if finalConfig.GPGKeyFiles == nil {
finalConfig.GPGKeyFiles = parentConfig.GPGKeyFiles
}
if finalConfig.RHSMConfig == nil {
finalConfig.RHSMConfig = parentConfig.RHSMConfig
}
if finalConfig.SystemdLogind == nil {
finalConfig.SystemdLogind = parentConfig.SystemdLogind
}
if finalConfig.CloudInit == nil {
finalConfig.CloudInit = parentConfig.CloudInit
}
if finalConfig.Modprobe == nil {
finalConfig.Modprobe = parentConfig.Modprobe
}
if finalConfig.DracutConf == nil {
finalConfig.DracutConf = parentConfig.DracutConf
}
if finalConfig.SystemdUnit == nil {
finalConfig.SystemdUnit = parentConfig.SystemdUnit
}
if finalConfig.Authselect == nil {
finalConfig.Authselect = parentConfig.Authselect
}
if finalConfig.SELinuxConfig == nil {
finalConfig.SELinuxConfig = parentConfig.SELinuxConfig
}
if finalConfig.Tuned == nil {
finalConfig.Tuned = parentConfig.Tuned
}
if finalConfig.Tmpfilesd == nil {
finalConfig.Tmpfilesd = parentConfig.Tmpfilesd
}
if finalConfig.PamLimitsConf == nil {
finalConfig.PamLimitsConf = parentConfig.PamLimitsConf
}
if finalConfig.Sysctld == nil {
finalConfig.Sysctld = parentConfig.Sysctld
}
if finalConfig.DNFConfig == nil {
finalConfig.DNFConfig = parentConfig.DNFConfig
}
if finalConfig.SshdConfig == nil {
finalConfig.SshdConfig = parentConfig.SshdConfig
}
if finalConfig.Authconfig == nil {
finalConfig.Authconfig = parentConfig.Authconfig
}
if finalConfig.PwQuality == nil {
finalConfig.PwQuality = parentConfig.PwQuality
}
}
return &finalConfig
}