Add support for RHSM customizations
Add support for RHSM customizations, which currently allow various aspects of RHSM. Specifically enabling / disabling DNF plugins shipped by subscription-manager package and setting a subset of options in the rhsm.conf. Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
parent
26dd54a4d7
commit
768537dba3
14 changed files with 583 additions and 182 deletions
|
|
@ -14,6 +14,7 @@ import (
|
|||
"github.com/osbuild/images/pkg/reporegistry"
|
||||
"github.com/osbuild/images/pkg/rhsm/facts"
|
||||
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
||||
"github.com/osbuild/osbuild-composer/internal/common"
|
||||
"github.com/osbuild/osbuild-composer/internal/target"
|
||||
)
|
||||
|
||||
|
|
@ -440,6 +441,43 @@ func (request *ComposeRequest) GetCustomizationsFromBlueprintRequest() (*bluepri
|
|||
}
|
||||
}
|
||||
|
||||
if rhsm := rbpc.Rhsm; rhsm != nil && rhsm.Config != nil {
|
||||
bpRhsm := &blueprint.RHSMCustomization{
|
||||
Config: &blueprint.RHSMConfig{},
|
||||
}
|
||||
|
||||
conf := rhsm.Config
|
||||
if conf.DnfPlugins != nil {
|
||||
bpRhsm.Config.DNFPlugins = &blueprint.SubManDNFPluginsConfig{}
|
||||
if conf.DnfPlugins.ProductId != nil && conf.DnfPlugins.ProductId.Enabled != nil {
|
||||
bpRhsm.Config.DNFPlugins.ProductID = &blueprint.DNFPluginConfig{
|
||||
Enabled: common.ToPtr(*conf.DnfPlugins.ProductId.Enabled),
|
||||
}
|
||||
}
|
||||
if conf.DnfPlugins.SubscriptionManager != nil && conf.DnfPlugins.SubscriptionManager.Enabled != nil {
|
||||
bpRhsm.Config.DNFPlugins.SubscriptionManager = &blueprint.DNFPluginConfig{
|
||||
Enabled: common.ToPtr(*conf.DnfPlugins.SubscriptionManager.Enabled),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if conf.SubscriptionManager != nil {
|
||||
bpRhsm.Config.SubscriptionManager = &blueprint.SubManConfig{}
|
||||
if conf.SubscriptionManager.Rhsm != nil && conf.SubscriptionManager.Rhsm.ManageRepos != nil {
|
||||
bpRhsm.Config.SubscriptionManager.RHSMConfig = &blueprint.SubManRHSMConfig{
|
||||
ManageRepos: common.ToPtr(*conf.SubscriptionManager.Rhsm.ManageRepos),
|
||||
}
|
||||
}
|
||||
if conf.SubscriptionManager.Rhsmcertd != nil && conf.SubscriptionManager.Rhsmcertd.AutoRegistration != nil {
|
||||
bpRhsm.Config.SubscriptionManager.RHSMCertdConfig = &blueprint.SubManRHSMCertdConfig{
|
||||
AutoRegistration: common.ToPtr(*conf.SubscriptionManager.Rhsmcertd.AutoRegistration),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
c.RHSM = bpRhsm
|
||||
}
|
||||
|
||||
return c, nil
|
||||
}
|
||||
|
||||
|
|
@ -928,6 +966,43 @@ func (request *ComposeRequest) GetBlueprintFromCustomizations() (blueprint.Bluep
|
|||
}
|
||||
}
|
||||
|
||||
if rhsm := request.Customizations.Rhsm; rhsm != nil && rhsm.Config != nil {
|
||||
bpRhsm := &blueprint.RHSMCustomization{
|
||||
Config: &blueprint.RHSMConfig{},
|
||||
}
|
||||
|
||||
conf := rhsm.Config
|
||||
if conf.DnfPlugins != nil {
|
||||
bpRhsm.Config.DNFPlugins = &blueprint.SubManDNFPluginsConfig{}
|
||||
if conf.DnfPlugins.ProductId != nil && conf.DnfPlugins.ProductId.Enabled != nil {
|
||||
bpRhsm.Config.DNFPlugins.ProductID = &blueprint.DNFPluginConfig{
|
||||
Enabled: common.ToPtr(*conf.DnfPlugins.ProductId.Enabled),
|
||||
}
|
||||
}
|
||||
if conf.DnfPlugins.SubscriptionManager != nil && conf.DnfPlugins.SubscriptionManager.Enabled != nil {
|
||||
bpRhsm.Config.DNFPlugins.SubscriptionManager = &blueprint.DNFPluginConfig{
|
||||
Enabled: common.ToPtr(*conf.DnfPlugins.SubscriptionManager.Enabled),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if conf.SubscriptionManager != nil {
|
||||
bpRhsm.Config.SubscriptionManager = &blueprint.SubManConfig{}
|
||||
if conf.SubscriptionManager.Rhsm != nil && conf.SubscriptionManager.Rhsm.ManageRepos != nil {
|
||||
bpRhsm.Config.SubscriptionManager.RHSMConfig = &blueprint.SubManRHSMConfig{
|
||||
ManageRepos: common.ToPtr(*conf.SubscriptionManager.Rhsm.ManageRepos),
|
||||
}
|
||||
}
|
||||
if conf.SubscriptionManager.Rhsmcertd != nil && conf.SubscriptionManager.Rhsmcertd.AutoRegistration != nil {
|
||||
bpRhsm.Config.SubscriptionManager.RHSMCertdConfig = &blueprint.SubManRHSMCertdConfig{
|
||||
AutoRegistration: common.ToPtr(*conf.SubscriptionManager.Rhsmcertd.AutoRegistration),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bp.Customizations.RHSM = bpRhsm
|
||||
}
|
||||
|
||||
// Did bp.Customizations get set at all? If not, set it back to nil
|
||||
if reflect.DeepEqual(*bp.Customizations, blueprint.Customizations{}) {
|
||||
bp.Customizations = nil
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue