subscription: new package for subscription options

Move the subscription options from distro to its own package.
Now we can import the manifest package into the distro package (instead
of the other way around) so we can work with the manifest.Manifest type
in distro.
This commit is contained in:
Achilleas Koutsou 2023-04-12 19:52:27 +02:00 committed by Simon de Vlieger
parent ea305d9c0f
commit 0f925c445c
16 changed files with 95 additions and 81 deletions

View file

@ -21,6 +21,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/ostree" "github.com/osbuild/osbuild-composer/internal/ostree"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
"github.com/osbuild/osbuild-composer/internal/target" "github.com/osbuild/osbuild-composer/internal/target"
"github.com/osbuild/osbuild-composer/internal/worker" "github.com/osbuild/osbuild-composer/internal/worker"
"github.com/osbuild/osbuild-composer/internal/worker/clienterrors" "github.com/osbuild/osbuild-composer/internal/worker/clienterrors"
@ -446,7 +447,7 @@ func (h *apiHandlers) PostCompose(ctx echo.Context) error {
if request.Customizations.Subscription.Rhc != nil { if request.Customizations.Subscription.Rhc != nil {
rhc = *request.Customizations.Subscription.Rhc rhc = *request.Customizations.Subscription.Rhc
} }
imageOptions.Subscription = &distro.SubscriptionImageOptions{ imageOptions.Subscription = &subscription.ImageOptions{
Organization: request.Customizations.Subscription.Organization, Organization: request.Customizations.Subscription.Organization,
ActivationKey: request.Customizations.Subscription.ActivationKey, ActivationKey: request.Customizations.Subscription.ActivationKey,
ServerUrl: request.Customizations.Subscription.ServerUrl, ServerUrl: request.Customizations.Subscription.ServerUrl,

View file

@ -8,6 +8,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/container"
"github.com/osbuild/osbuild-composer/internal/disk" "github.com/osbuild/osbuild-composer/internal/disk"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
const ( const (
@ -146,7 +147,7 @@ type ImageType interface {
type ImageOptions struct { type ImageOptions struct {
Size uint64 Size uint64
OSTree OSTreeImageOptions OSTree OSTreeImageOptions
Subscription *SubscriptionImageOptions Subscription *subscription.ImageOptions
Facts *FactsImageOptions Facts *FactsImageOptions
} }
@ -176,18 +177,6 @@ type OSTreeImageOptions struct {
RHSM bool RHSM bool
} }
// The SubscriptionImageOptions specify subscription-specific image options
// ServerUrl denotes the host to register the system with
// BaseUrl specifies the repository URL for DNF
type SubscriptionImageOptions struct {
Organization string
ActivationKey string
ServerUrl string
BaseUrl string
Insights bool
Rhc bool
}
// The FactsImageOptions specify things to be stored into the Insights facts // The FactsImageOptions specify things to be stored into the Insights facts
// storage. This mostly relates to how the build of the image was performed. // storage. This mostly relates to how the build of the image was performed.
type FactsImageOptions struct { type FactsImageOptions struct {

View file

@ -6,13 +6,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/shell" "github.com/osbuild/osbuild-composer/internal/shell"
) "github.com/osbuild/osbuild-composer/internal/subscription"
type RHSMSubscriptionStatus string
const (
RHSMConfigWithSubscription RHSMSubscriptionStatus = "with-subscription"
RHSMConfigNoSubscription RHSMSubscriptionStatus = "no-subscription"
) )
// ImageConfig represents a (default) configuration applied to the image // ImageConfig represents a (default) configuration applied to the image
@ -43,7 +37,7 @@ type ImageConfig struct {
// for RHSM configuration, we need to potentially distinguish the case // 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 // when the user want the image to be subscribed on first boot and when not
RHSMConfig map[RHSMSubscriptionStatus]*osbuild.RHSMStageOptions RHSMConfig map[subscription.RHSMStatus]*osbuild.RHSMStageOptions
SystemdLogind []*osbuild.SystemdLogindStageOptions SystemdLogind []*osbuild.SystemdLogindStageOptions
CloudInit []*osbuild.CloudInitStageOptions CloudInit []*osbuild.CloudInitStageOptions
Modprobe []*osbuild.ModprobeStageOptions Modprobe []*osbuild.ModprobeStageOptions

View file

@ -6,6 +6,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
var azureRhuiImgType = imageType{ var azureRhuiImgType = imageType{
@ -151,8 +152,8 @@ var azureDefaultImgConfig = &distro.ImageConfig{
RDEnableSwap: common.ToPtr(false), RDEnableSwap: common.ToPtr(false),
}, },
}, },
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
YumPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ YumPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{ SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{
Enabled: false, Enabled: false,
@ -167,7 +168,7 @@ var azureDefaultImgConfig = &distro.ImageConfig{
}, },
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),

View file

@ -5,6 +5,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
var qcow2ImgType = imageType{ var qcow2ImgType = imageType{
@ -53,8 +54,8 @@ var qcow2DefaultImgConfig = &distro.ImageConfig{
}, },
}, },
}, },
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
YumPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ YumPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
ProductID: &osbuild.RHSMStageOptionsDnfPlugin{ ProductID: &osbuild.RHSMStageOptionsDnfPlugin{
Enabled: false, Enabled: false,

View file

@ -5,6 +5,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
func amiImgTypeX86_64(rd distribution) imageType { func amiImgTypeX86_64(rd distribution) imageType {
@ -222,8 +223,8 @@ func baseEc2ImageConfig() *distro.ImageConfig {
}, },
}, },
}, },
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
// RHBZ#1932802 // RHBZ#1932802
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
@ -234,7 +235,7 @@ func baseEc2ImageConfig() *distro.ImageConfig {
}, },
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
// RHBZ#1932802 // RHBZ#1932802
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
@ -319,14 +320,14 @@ func defaultEc2ImageConfig(rd distribution) *distro.ImageConfig {
if rd.isRHEL() && common.VersionLessThan(rd.osVersion, "9.1") { if rd.isRHEL() && common.VersionLessThan(rd.osVersion, "9.1") {
ic = appendRHSM(ic) ic = appendRHSM(ic)
// Disable RHSM redhat.repo management // Disable RHSM redhat.repo management
rhsmConf := ic.RHSMConfig[distro.RHSMConfigNoSubscription] rhsmConf := ic.RHSMConfig[subscription.RHSMConfigNoSubscription]
rhsmConf.SubMan.Rhsm = &osbuild.SubManConfigRHSMSection{ManageRepos: common.ToPtr(false)} rhsmConf.SubMan.Rhsm = &osbuild.SubManConfigRHSMSection{ManageRepos: common.ToPtr(false)}
ic.RHSMConfig[distro.RHSMConfigNoSubscription] = rhsmConf ic.RHSMConfig[subscription.RHSMConfigNoSubscription] = rhsmConf
} }
// The RHSM configuration should not be applied since 8.7, but it is instead done by installing the redhat-cloud-client-configuration package. // The RHSM configuration should not be applied since 8.7, but it is instead done by installing the redhat-cloud-client-configuration package.
// See COMPOSER-1804 for more information. // See COMPOSER-1804 for more information.
rhel87PlusEc2ImageConfigOverride := &distro.ImageConfig{ rhel87PlusEc2ImageConfigOverride := &distro.ImageConfig{
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{}, RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{},
} }
if !common.VersionLessThan(rd.osVersion, "8.7") { if !common.VersionLessThan(rd.osVersion, "8.7") {
ic = rhel87PlusEc2ImageConfigOverride.InheritFrom(ic) ic = rhel87PlusEc2ImageConfigOverride.InheritFrom(ic)
@ -464,8 +465,8 @@ func rhelEc2SapPackageSet(t *imageType) rpmmd.PackageSet {
// Used for RHEL distros. // Used for RHEL distros.
func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig { func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig {
rhsm := &distro.ImageConfig{ rhsm := &distro.ImageConfig{
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
// RHBZ#1932802 // RHBZ#1932802
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
@ -480,7 +481,7 @@ func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig {
// confusing. // confusing.
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
// RHBZ#1932802 // RHBZ#1932802
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{

View file

@ -7,6 +7,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/shell" "github.com/osbuild/osbuild-composer/internal/shell"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
const defaultAzureKernelOptions = "ro crashkernel=auto console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300" const defaultAzureKernelOptions = "ro crashkernel=auto console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300"
@ -623,8 +624,8 @@ var defaultAzureByosImageConfig = &distro.ImageConfig{
GPGKeyFiles: []string{ GPGKeyFiles: []string{
"/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release", "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release",
}, },
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -638,7 +639,7 @@ var defaultAzureByosImageConfig = &distro.ImageConfig{
// confusing. // confusing.
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -656,8 +657,8 @@ var defaultAzureRhuiImageConfig = &distro.ImageConfig{
"/etc/pki/rpm-gpg/RPM-GPG-KEY-microsoft-azure-release", "/etc/pki/rpm-gpg/RPM-GPG-KEY-microsoft-azure-release",
"/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release", "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release",
}, },
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{ SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{
Enabled: false, Enabled: false,
@ -672,7 +673,7 @@ var defaultAzureRhuiImageConfig = &distro.ImageConfig{
}, },
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),

View file

@ -5,6 +5,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
const gceKernelOptions = "net.ifnames=0 biosdevname=0 scsi_mod.use_blk_mq=Y crashkernel=auto console=ttyS0,38400n8d" const gceKernelOptions = "net.ifnames=0 biosdevname=0 scsi_mod.use_blk_mq=Y crashkernel=auto console=ttyS0,38400n8d"
@ -156,8 +157,8 @@ func defaultGceByosImageConfig(rd distribution) *distro.ImageConfig {
} }
if rd.isRHEL() { if rd.isRHEL() {
ic.RHSMConfig = map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ ic.RHSMConfig = map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -171,7 +172,7 @@ func defaultGceByosImageConfig(rd distribution) *distro.ImageConfig {
// confusing. // confusing.
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -187,8 +188,8 @@ func defaultGceByosImageConfig(rd distribution) *distro.ImageConfig {
func defaultGceRhuiImageConfig(rd distribution) *distro.ImageConfig { func defaultGceRhuiImageConfig(rd distribution) *distro.ImageConfig {
ic := &distro.ImageConfig{ ic := &distro.ImageConfig{
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -198,7 +199,7 @@ func defaultGceRhuiImageConfig(rd distribution) *distro.ImageConfig {
}, },
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),

View file

@ -5,6 +5,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
func qcow2ImgType(rd distribution) imageType { func qcow2ImgType(rd distribution) imageType {
@ -29,8 +30,8 @@ func qcow2ImgType(rd distribution) imageType {
} }
if rd.isRHEL() { if rd.isRHEL() {
it.defaultImageConfig.RHSMConfig = map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ it.defaultImageConfig.RHSMConfig = map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
ProductID: &osbuild.RHSMStageOptionsDnfPlugin{ ProductID: &osbuild.RHSMStageOptionsDnfPlugin{
Enabled: false, Enabled: false,

View file

@ -5,6 +5,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
const amiKernelOptions = "console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295" const amiKernelOptions = "console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295"
@ -257,9 +258,9 @@ func defaultEc2ImageConfig(osVersion string, rhsm bool) *distro.ImageConfig {
if rhsm && common.VersionLessThan(osVersion, "9.1") { if rhsm && common.VersionLessThan(osVersion, "9.1") {
ic = appendRHSM(ic) ic = appendRHSM(ic)
// Disable RHSM redhat.repo management // Disable RHSM redhat.repo management
rhsmConf := ic.RHSMConfig[distro.RHSMConfigNoSubscription] rhsmConf := ic.RHSMConfig[subscription.RHSMConfigNoSubscription]
rhsmConf.SubMan.Rhsm = &osbuild.SubManConfigRHSMSection{ManageRepos: common.ToPtr(false)} rhsmConf.SubMan.Rhsm = &osbuild.SubManConfigRHSMSection{ManageRepos: common.ToPtr(false)}
ic.RHSMConfig[distro.RHSMConfigNoSubscription] = rhsmConf ic.RHSMConfig[subscription.RHSMConfigNoSubscription] = rhsmConf
} }
return ic return ic
} }
@ -428,8 +429,8 @@ func mkEC2ImgTypeAarch64(osVersion string, rhsm bool) imageType {
// Used for RHEL distros. // Used for RHEL distros.
func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig { func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig {
rhsm := &distro.ImageConfig{ rhsm := &distro.ImageConfig{
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
// RHBZ#1932802 // RHBZ#1932802
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
@ -444,7 +445,7 @@ func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig {
// confusing. // confusing.
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
// RHBZ#1932802 // RHBZ#1932802
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{

View file

@ -6,6 +6,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
var ( var (
@ -532,8 +533,8 @@ var defaultAzureByosImageConfig = &distro.ImageConfig{
GPGKeyFiles: []string{ GPGKeyFiles: []string{
"/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release", "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release",
}, },
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -547,7 +548,7 @@ var defaultAzureByosImageConfig = &distro.ImageConfig{
// confusing. // confusing.
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -565,8 +566,8 @@ var defaultAzureRhuiImageConfig = &distro.ImageConfig{
"/etc/pki/rpm-gpg/RPM-GPG-KEY-microsoft-azure-release", "/etc/pki/rpm-gpg/RPM-GPG-KEY-microsoft-azure-release",
"/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release", "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release",
}, },
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{ SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{
Enabled: false, Enabled: false,
@ -581,7 +582,7 @@ var defaultAzureRhuiImageConfig = &distro.ImageConfig{
}, },
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),

View file

@ -5,6 +5,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
const gceKernelOptions = "net.ifnames=0 biosdevname=0 scsi_mod.use_blk_mq=Y console=ttyS0,38400n8d" const gceKernelOptions = "net.ifnames=0 biosdevname=0 scsi_mod.use_blk_mq=Y console=ttyS0,38400n8d"
@ -154,8 +155,8 @@ func baseGCEImageConfig(rhsm bool) *distro.ImageConfig {
} }
if rhsm { if rhsm {
ic.RHSMConfig = map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ ic.RHSMConfig = map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -169,7 +170,7 @@ func baseGCEImageConfig(rhsm bool) *distro.ImageConfig {
// confusing. // confusing.
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -185,8 +186,8 @@ func baseGCEImageConfig(rhsm bool) *distro.ImageConfig {
func defaultGceRhuiImageConfig(rhsm bool) *distro.ImageConfig { func defaultGceRhuiImageConfig(rhsm bool) *distro.ImageConfig {
ic := &distro.ImageConfig{ ic := &distro.ImageConfig{
RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),
@ -196,7 +197,7 @@ func defaultGceRhuiImageConfig(rhsm bool) *distro.ImageConfig {
}, },
}, },
}, },
distro.RHSMConfigWithSubscription: { subscription.RHSMConfigWithSubscription: {
SubMan: &osbuild.RHSMStageOptionsSubMan{ SubMan: &osbuild.RHSMStageOptionsSubMan{
Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{
AutoRegistration: common.ToPtr(true), AutoRegistration: common.ToPtr(true),

View file

@ -5,6 +5,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/subscription"
) )
var ( var (
@ -132,8 +133,8 @@ func qcowImageConfig(d distribution) *distro.ImageConfig {
DefaultTarget: common.ToPtr("multi-user.target"), DefaultTarget: common.ToPtr("multi-user.target"),
} }
if d.isRHEL() { if d.isRHEL() {
ic.RHSMConfig = map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ ic.RHSMConfig = map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{
distro.RHSMConfigNoSubscription: { subscription.RHSMConfigNoSubscription: {
DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
ProductID: &osbuild.RHSMStageOptionsDnfPlugin{ ProductID: &osbuild.RHSMStageOptionsDnfPlugin{
Enabled: false, Enabled: false,

View file

@ -8,7 +8,6 @@ import (
"github.com/osbuild/osbuild-composer/internal/common" "github.com/osbuild/osbuild-composer/internal/common"
"github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/container"
"github.com/osbuild/osbuild-composer/internal/disk" "github.com/osbuild/osbuild-composer/internal/disk"
"github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/environment" "github.com/osbuild/osbuild-composer/internal/environment"
"github.com/osbuild/osbuild-composer/internal/fsnode" "github.com/osbuild/osbuild-composer/internal/fsnode"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
@ -16,6 +15,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/platform" "github.com/osbuild/osbuild-composer/internal/platform"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/shell" "github.com/osbuild/osbuild-composer/internal/shell"
"github.com/osbuild/osbuild-composer/internal/subscription"
"github.com/osbuild/osbuild-composer/internal/users" "github.com/osbuild/osbuild-composer/internal/users"
"github.com/osbuild/osbuild-composer/internal/workload" "github.com/osbuild/osbuild-composer/internal/workload"
) )
@ -120,8 +120,8 @@ type OSCustomizations struct {
LeapSecTZ *string LeapSecTZ *string
FactAPIType string FactAPIType string
Subscription *distro.SubscriptionImageOptions Subscription *subscription.ImageOptions
RHSMConfig map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions RHSMConfig map[subscription.RHSMStatus]*osbuild.RHSMStageOptions
// Custom directories and files to create in the image // Custom directories and files to create in the image
Directories []*fsnode.Directory Directories []*fsnode.Directory
@ -519,11 +519,11 @@ func (p *OS) serialize() osbuild.Pipeline {
WaitForNetwork: true, WaitForNetwork: true,
})) }))
if rhsmConfig, exists := p.RHSMConfig[distro.RHSMConfigWithSubscription]; exists { if rhsmConfig, exists := p.RHSMConfig[subscription.RHSMConfigWithSubscription]; exists {
pipeline.AddStage(osbuild.NewRHSMStage(rhsmConfig)) pipeline.AddStage(osbuild.NewRHSMStage(rhsmConfig))
} }
} else { } else {
if rhsmConfig, exists := p.RHSMConfig[distro.RHSMConfigNoSubscription]; exists { if rhsmConfig, exists := p.RHSMConfig[subscription.RHSMConfigNoSubscription]; exists {
pipeline.AddStage(osbuild.NewRHSMStage(rhsmConfig)) pipeline.AddStage(osbuild.NewRHSMStage(rhsmConfig))
} }
} }

View file

@ -3,11 +3,11 @@ package manifest
import ( import (
"testing" "testing"
"github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/osbuild"
"github.com/osbuild/osbuild-composer/internal/platform" "github.com/osbuild/osbuild-composer/internal/platform"
"github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/runner" "github.com/osbuild/osbuild-composer/internal/runner"
"github.com/osbuild/osbuild-composer/internal/subscription"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -69,7 +69,7 @@ func CheckPkgSetInclude(t *testing.T, pkgSetChain []rpmmd.PackageSet, pkgs []str
func TestSubscriptionManagerCommands(t *testing.T) { func TestSubscriptionManagerCommands(t *testing.T) {
os := NewTestOS() os := NewTestOS()
os.Subscription = &distro.SubscriptionImageOptions{ os.Subscription = &subscription.ImageOptions{
Organization: "2040324", Organization: "2040324",
ActivationKey: "my-secret-key", ActivationKey: "my-secret-key",
ServerUrl: "subscription.rhsm.redhat.com", ServerUrl: "subscription.rhsm.redhat.com",
@ -83,7 +83,7 @@ func TestSubscriptionManagerCommands(t *testing.T) {
func TestSubscriptionManagerInsightsCommands(t *testing.T) { func TestSubscriptionManagerInsightsCommands(t *testing.T) {
os := NewTestOS() os := NewTestOS()
os.Subscription = &distro.SubscriptionImageOptions{ os.Subscription = &subscription.ImageOptions{
Organization: "2040324", Organization: "2040324",
ActivationKey: "my-secret-key", ActivationKey: "my-secret-key",
ServerUrl: "subscription.rhsm.redhat.com", ServerUrl: "subscription.rhsm.redhat.com",
@ -100,7 +100,7 @@ func TestSubscriptionManagerInsightsCommands(t *testing.T) {
func TestRhcInsightsCommands(t *testing.T) { func TestRhcInsightsCommands(t *testing.T) {
os := NewTestOS() os := NewTestOS()
os.Subscription = &distro.SubscriptionImageOptions{ os.Subscription = &subscription.ImageOptions{
Organization: "2040324", Organization: "2040324",
ActivationKey: "my-secret-key", ActivationKey: "my-secret-key",
ServerUrl: "subscription.rhsm.redhat.com", ServerUrl: "subscription.rhsm.redhat.com",
@ -118,7 +118,7 @@ func TestRhcInsightsCommands(t *testing.T) {
func TestSubscriptionManagerPackages(t *testing.T) { func TestSubscriptionManagerPackages(t *testing.T) {
os := NewTestOS() os := NewTestOS()
os.Subscription = &distro.SubscriptionImageOptions{ os.Subscription = &subscription.ImageOptions{
Organization: "2040324", Organization: "2040324",
ActivationKey: "my-secret-key", ActivationKey: "my-secret-key",
ServerUrl: "subscription.rhsm.redhat.com", ServerUrl: "subscription.rhsm.redhat.com",
@ -130,7 +130,7 @@ func TestSubscriptionManagerPackages(t *testing.T) {
func TestSubscriptionManagerInsightsPackages(t *testing.T) { func TestSubscriptionManagerInsightsPackages(t *testing.T) {
os := NewTestOS() os := NewTestOS()
os.Subscription = &distro.SubscriptionImageOptions{ os.Subscription = &subscription.ImageOptions{
Organization: "2040324", Organization: "2040324",
ActivationKey: "my-secret-key", ActivationKey: "my-secret-key",
ServerUrl: "subscription.rhsm.redhat.com", ServerUrl: "subscription.rhsm.redhat.com",
@ -142,7 +142,7 @@ func TestSubscriptionManagerInsightsPackages(t *testing.T) {
func TestRhcInsightsPackages(t *testing.T) { func TestRhcInsightsPackages(t *testing.T) {
os := NewTestOS() os := NewTestOS()
os.Subscription = &distro.SubscriptionImageOptions{ os.Subscription = &subscription.ImageOptions{
Organization: "2040324", Organization: "2040324",
ActivationKey: "my-secret-key", ActivationKey: "my-secret-key",
ServerUrl: "subscription.rhsm.redhat.com", ServerUrl: "subscription.rhsm.redhat.com",

View file

@ -0,0 +1,20 @@
package subscription
// The ImageOptions specify subscription-specific image options
// ServerUrl denotes the host to register the system with
// BaseUrl specifies the repository URL for DNF
type ImageOptions struct {
Organization string
ActivationKey string
ServerUrl string
BaseUrl string
Insights bool
Rhc bool
}
type RHSMStatus string
const (
RHSMConfigWithSubscription RHSMStatus = "with-subscription"
RHSMConfigNoSubscription RHSMStatus = "no-subscription"
)