diff --git a/internal/cloudapi/v2/handler.go b/internal/cloudapi/v2/handler.go index 746e5a769..9bfac988f 100644 --- a/internal/cloudapi/v2/handler.go +++ b/internal/cloudapi/v2/handler.go @@ -21,6 +21,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/ostree" "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/worker" "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 { rhc = *request.Customizations.Subscription.Rhc } - imageOptions.Subscription = &distro.SubscriptionImageOptions{ + imageOptions.Subscription = &subscription.ImageOptions{ Organization: request.Customizations.Subscription.Organization, ActivationKey: request.Customizations.Subscription.ActivationKey, ServerUrl: request.Customizations.Subscription.ServerUrl, diff --git a/internal/distro/distro.go b/internal/distro/distro.go index 2fa2f0cd7..4561741a9 100644 --- a/internal/distro/distro.go +++ b/internal/distro/distro.go @@ -8,6 +8,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/container" "github.com/osbuild/osbuild-composer/internal/disk" "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/subscription" ) const ( @@ -146,7 +147,7 @@ type ImageType interface { type ImageOptions struct { Size uint64 OSTree OSTreeImageOptions - Subscription *SubscriptionImageOptions + Subscription *subscription.ImageOptions Facts *FactsImageOptions } @@ -176,18 +177,6 @@ type OSTreeImageOptions struct { 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 // storage. This mostly relates to how the build of the image was performed. type FactsImageOptions struct { diff --git a/internal/distro/image_config.go b/internal/distro/image_config.go index cb688f3b8..1fc72e787 100644 --- a/internal/distro/image_config.go +++ b/internal/distro/image_config.go @@ -6,13 +6,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/shell" -) - -type RHSMSubscriptionStatus string - -const ( - RHSMConfigWithSubscription RHSMSubscriptionStatus = "with-subscription" - RHSMConfigNoSubscription RHSMSubscriptionStatus = "no-subscription" + "github.com/osbuild/osbuild-composer/internal/subscription" ) // 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 // 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 CloudInit []*osbuild.CloudInitStageOptions Modprobe []*osbuild.ModprobeStageOptions diff --git a/internal/distro/rhel7/azure.go b/internal/distro/rhel7/azure.go index 56942f798..6f0cbcd01 100644 --- a/internal/distro/rhel7/azure.go +++ b/internal/distro/rhel7/azure.go @@ -6,6 +6,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/subscription" ) var azureRhuiImgType = imageType{ @@ -151,8 +152,8 @@ var azureDefaultImgConfig = &distro.ImageConfig{ RDEnableSwap: common.ToPtr(false), }, }, - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { YumPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{ Enabled: false, @@ -167,7 +168,7 @@ var azureDefaultImgConfig = &distro.ImageConfig{ }, }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), diff --git a/internal/distro/rhel7/qcow2.go b/internal/distro/rhel7/qcow2.go index 8f913cf3d..841fa591b 100644 --- a/internal/distro/rhel7/qcow2.go +++ b/internal/distro/rhel7/qcow2.go @@ -5,6 +5,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/subscription" ) var qcow2ImgType = imageType{ @@ -53,8 +54,8 @@ var qcow2DefaultImgConfig = &distro.ImageConfig{ }, }, }, - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { YumPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ ProductID: &osbuild.RHSMStageOptionsDnfPlugin{ Enabled: false, diff --git a/internal/distro/rhel8/ami.go b/internal/distro/rhel8/ami.go index 324e12476..7cdf590a7 100644 --- a/internal/distro/rhel8/ami.go +++ b/internal/distro/rhel8/ami.go @@ -5,6 +5,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/subscription" ) func amiImgTypeX86_64(rd distribution) imageType { @@ -222,8 +223,8 @@ func baseEc2ImageConfig() *distro.ImageConfig { }, }, }, - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { // RHBZ#1932802 SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ @@ -234,7 +235,7 @@ func baseEc2ImageConfig() *distro.ImageConfig { }, }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { // RHBZ#1932802 SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ @@ -319,14 +320,14 @@ func defaultEc2ImageConfig(rd distribution) *distro.ImageConfig { if rd.isRHEL() && common.VersionLessThan(rd.osVersion, "9.1") { ic = appendRHSM(ic) // Disable RHSM redhat.repo management - rhsmConf := ic.RHSMConfig[distro.RHSMConfigNoSubscription] + rhsmConf := ic.RHSMConfig[subscription.RHSMConfigNoSubscription] 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. // See COMPOSER-1804 for more information. rhel87PlusEc2ImageConfigOverride := &distro.ImageConfig{ - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{}, + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{}, } if !common.VersionLessThan(rd.osVersion, "8.7") { ic = rhel87PlusEc2ImageConfigOverride.InheritFrom(ic) @@ -464,8 +465,8 @@ func rhelEc2SapPackageSet(t *imageType) rpmmd.PackageSet { // Used for RHEL distros. func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig { rhsm := &distro.ImageConfig{ - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { // RHBZ#1932802 SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ @@ -480,7 +481,7 @@ func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig { // confusing. }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { // RHBZ#1932802 SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ diff --git a/internal/distro/rhel8/azure.go b/internal/distro/rhel8/azure.go index 19d39e7d2..e799bcde9 100644 --- a/internal/distro/rhel8/azure.go +++ b/internal/distro/rhel8/azure.go @@ -7,6 +7,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/rpmmd" "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" @@ -623,8 +624,8 @@ var defaultAzureByosImageConfig = &distro.ImageConfig{ GPGKeyFiles: []string{ "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release", }, - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), @@ -638,7 +639,7 @@ var defaultAzureByosImageConfig = &distro.ImageConfig{ // confusing. }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ 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-redhat-release", }, - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{ Enabled: false, @@ -672,7 +673,7 @@ var defaultAzureRhuiImageConfig = &distro.ImageConfig{ }, }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), diff --git a/internal/distro/rhel8/gce.go b/internal/distro/rhel8/gce.go index ca5fa2733..7967e845e 100644 --- a/internal/distro/rhel8/gce.go +++ b/internal/distro/rhel8/gce.go @@ -5,6 +5,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "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" @@ -156,8 +157,8 @@ func defaultGceByosImageConfig(rd distribution) *distro.ImageConfig { } if rd.isRHEL() { - ic.RHSMConfig = map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + ic.RHSMConfig = map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), @@ -171,7 +172,7 @@ func defaultGceByosImageConfig(rd distribution) *distro.ImageConfig { // confusing. }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), @@ -187,8 +188,8 @@ func defaultGceByosImageConfig(rd distribution) *distro.ImageConfig { func defaultGceRhuiImageConfig(rd distribution) *distro.ImageConfig { ic := &distro.ImageConfig{ - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), @@ -198,7 +199,7 @@ func defaultGceRhuiImageConfig(rd distribution) *distro.ImageConfig { }, }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), diff --git a/internal/distro/rhel8/qcow2.go b/internal/distro/rhel8/qcow2.go index fb76e36ec..cb7e619fd 100644 --- a/internal/distro/rhel8/qcow2.go +++ b/internal/distro/rhel8/qcow2.go @@ -5,6 +5,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/subscription" ) func qcow2ImgType(rd distribution) imageType { @@ -29,8 +30,8 @@ func qcow2ImgType(rd distribution) imageType { } if rd.isRHEL() { - it.defaultImageConfig.RHSMConfig = map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + it.defaultImageConfig.RHSMConfig = map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ ProductID: &osbuild.RHSMStageOptionsDnfPlugin{ Enabled: false, diff --git a/internal/distro/rhel9/ami.go b/internal/distro/rhel9/ami.go index d1d29e3f4..4c9d7c8aa 100644 --- a/internal/distro/rhel9/ami.go +++ b/internal/distro/rhel9/ami.go @@ -5,6 +5,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "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" @@ -257,9 +258,9 @@ func defaultEc2ImageConfig(osVersion string, rhsm bool) *distro.ImageConfig { if rhsm && common.VersionLessThan(osVersion, "9.1") { ic = appendRHSM(ic) // Disable RHSM redhat.repo management - rhsmConf := ic.RHSMConfig[distro.RHSMConfigNoSubscription] + rhsmConf := ic.RHSMConfig[subscription.RHSMConfigNoSubscription] rhsmConf.SubMan.Rhsm = &osbuild.SubManConfigRHSMSection{ManageRepos: common.ToPtr(false)} - ic.RHSMConfig[distro.RHSMConfigNoSubscription] = rhsmConf + ic.RHSMConfig[subscription.RHSMConfigNoSubscription] = rhsmConf } return ic } @@ -428,8 +429,8 @@ func mkEC2ImgTypeAarch64(osVersion string, rhsm bool) imageType { // Used for RHEL distros. func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig { rhsm := &distro.ImageConfig{ - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { // RHBZ#1932802 SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ @@ -444,7 +445,7 @@ func appendRHSM(ic *distro.ImageConfig) *distro.ImageConfig { // confusing. }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { // RHBZ#1932802 SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ diff --git a/internal/distro/rhel9/azure.go b/internal/distro/rhel9/azure.go index c3565689c..09c95e3dc 100644 --- a/internal/distro/rhel9/azure.go +++ b/internal/distro/rhel9/azure.go @@ -6,6 +6,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/subscription" ) var ( @@ -532,8 +533,8 @@ var defaultAzureByosImageConfig = &distro.ImageConfig{ GPGKeyFiles: []string{ "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release", }, - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), @@ -547,7 +548,7 @@ var defaultAzureByosImageConfig = &distro.ImageConfig{ // confusing. }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ 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-redhat-release", }, - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{ Enabled: false, @@ -581,7 +582,7 @@ var defaultAzureRhuiImageConfig = &distro.ImageConfig{ }, }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), diff --git a/internal/distro/rhel9/gce.go b/internal/distro/rhel9/gce.go index 6ab93300c..6a5c3d19f 100644 --- a/internal/distro/rhel9/gce.go +++ b/internal/distro/rhel9/gce.go @@ -5,6 +5,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "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" @@ -154,8 +155,8 @@ func baseGCEImageConfig(rhsm bool) *distro.ImageConfig { } if rhsm { - ic.RHSMConfig = map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + ic.RHSMConfig = map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), @@ -169,7 +170,7 @@ func baseGCEImageConfig(rhsm bool) *distro.ImageConfig { // confusing. }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), @@ -185,8 +186,8 @@ func baseGCEImageConfig(rhsm bool) *distro.ImageConfig { func defaultGceRhuiImageConfig(rhsm bool) *distro.ImageConfig { ic := &distro.ImageConfig{ - RHSMConfig: map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + RHSMConfig: map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), @@ -196,7 +197,7 @@ func defaultGceRhuiImageConfig(rhsm bool) *distro.ImageConfig { }, }, }, - distro.RHSMConfigWithSubscription: { + subscription.RHSMConfigWithSubscription: { SubMan: &osbuild.RHSMStageOptionsSubMan{ Rhsmcertd: &osbuild.SubManConfigRHSMCERTDSection{ AutoRegistration: common.ToPtr(true), diff --git a/internal/distro/rhel9/qcow2.go b/internal/distro/rhel9/qcow2.go index dac78fc92..55dfe6b81 100644 --- a/internal/distro/rhel9/qcow2.go +++ b/internal/distro/rhel9/qcow2.go @@ -5,6 +5,7 @@ import ( "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/rpmmd" + "github.com/osbuild/osbuild-composer/internal/subscription" ) var ( @@ -132,8 +133,8 @@ func qcowImageConfig(d distribution) *distro.ImageConfig { DefaultTarget: common.ToPtr("multi-user.target"), } if d.isRHEL() { - ic.RHSMConfig = map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions{ - distro.RHSMConfigNoSubscription: { + ic.RHSMConfig = map[subscription.RHSMStatus]*osbuild.RHSMStageOptions{ + subscription.RHSMConfigNoSubscription: { DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{ ProductID: &osbuild.RHSMStageOptionsDnfPlugin{ Enabled: false, diff --git a/internal/manifest/os.go b/internal/manifest/os.go index a62442e6e..fbd490af6 100644 --- a/internal/manifest/os.go +++ b/internal/manifest/os.go @@ -8,7 +8,6 @@ import ( "github.com/osbuild/osbuild-composer/internal/common" "github.com/osbuild/osbuild-composer/internal/container" "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/fsnode" "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/rpmmd" "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/workload" ) @@ -120,8 +120,8 @@ type OSCustomizations struct { LeapSecTZ *string FactAPIType string - Subscription *distro.SubscriptionImageOptions - RHSMConfig map[distro.RHSMSubscriptionStatus]*osbuild.RHSMStageOptions + Subscription *subscription.ImageOptions + RHSMConfig map[subscription.RHSMStatus]*osbuild.RHSMStageOptions // Custom directories and files to create in the image Directories []*fsnode.Directory @@ -519,11 +519,11 @@ func (p *OS) serialize() osbuild.Pipeline { WaitForNetwork: true, })) - if rhsmConfig, exists := p.RHSMConfig[distro.RHSMConfigWithSubscription]; exists { + if rhsmConfig, exists := p.RHSMConfig[subscription.RHSMConfigWithSubscription]; exists { pipeline.AddStage(osbuild.NewRHSMStage(rhsmConfig)) } } else { - if rhsmConfig, exists := p.RHSMConfig[distro.RHSMConfigNoSubscription]; exists { + if rhsmConfig, exists := p.RHSMConfig[subscription.RHSMConfigNoSubscription]; exists { pipeline.AddStage(osbuild.NewRHSMStage(rhsmConfig)) } } diff --git a/internal/manifest/os_test.go b/internal/manifest/os_test.go index 5bf9da832..c02e36bda 100644 --- a/internal/manifest/os_test.go +++ b/internal/manifest/os_test.go @@ -3,11 +3,11 @@ package manifest import ( "testing" - "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/platform" "github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/runner" + "github.com/osbuild/osbuild-composer/internal/subscription" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -69,7 +69,7 @@ func CheckPkgSetInclude(t *testing.T, pkgSetChain []rpmmd.PackageSet, pkgs []str func TestSubscriptionManagerCommands(t *testing.T) { os := NewTestOS() - os.Subscription = &distro.SubscriptionImageOptions{ + os.Subscription = &subscription.ImageOptions{ Organization: "2040324", ActivationKey: "my-secret-key", ServerUrl: "subscription.rhsm.redhat.com", @@ -83,7 +83,7 @@ func TestSubscriptionManagerCommands(t *testing.T) { func TestSubscriptionManagerInsightsCommands(t *testing.T) { os := NewTestOS() - os.Subscription = &distro.SubscriptionImageOptions{ + os.Subscription = &subscription.ImageOptions{ Organization: "2040324", ActivationKey: "my-secret-key", ServerUrl: "subscription.rhsm.redhat.com", @@ -100,7 +100,7 @@ func TestSubscriptionManagerInsightsCommands(t *testing.T) { func TestRhcInsightsCommands(t *testing.T) { os := NewTestOS() - os.Subscription = &distro.SubscriptionImageOptions{ + os.Subscription = &subscription.ImageOptions{ Organization: "2040324", ActivationKey: "my-secret-key", ServerUrl: "subscription.rhsm.redhat.com", @@ -118,7 +118,7 @@ func TestRhcInsightsCommands(t *testing.T) { func TestSubscriptionManagerPackages(t *testing.T) { os := NewTestOS() - os.Subscription = &distro.SubscriptionImageOptions{ + os.Subscription = &subscription.ImageOptions{ Organization: "2040324", ActivationKey: "my-secret-key", ServerUrl: "subscription.rhsm.redhat.com", @@ -130,7 +130,7 @@ func TestSubscriptionManagerPackages(t *testing.T) { func TestSubscriptionManagerInsightsPackages(t *testing.T) { os := NewTestOS() - os.Subscription = &distro.SubscriptionImageOptions{ + os.Subscription = &subscription.ImageOptions{ Organization: "2040324", ActivationKey: "my-secret-key", ServerUrl: "subscription.rhsm.redhat.com", @@ -142,7 +142,7 @@ func TestSubscriptionManagerInsightsPackages(t *testing.T) { func TestRhcInsightsPackages(t *testing.T) { os := NewTestOS() - os.Subscription = &distro.SubscriptionImageOptions{ + os.Subscription = &subscription.ImageOptions{ Organization: "2040324", ActivationKey: "my-secret-key", ServerUrl: "subscription.rhsm.redhat.com", diff --git a/internal/subscription/subscription.go b/internal/subscription/subscription.go new file mode 100644 index 000000000..3eccd25d1 --- /dev/null +++ b/internal/subscription/subscription.go @@ -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" +)