@@ -14,7 +14,9 @@ import (
1414 "github.com/replicatedhq/embedded-cluster/api/pkg/logger"
1515 "github.com/replicatedhq/embedded-cluster/api/types"
1616 "github.com/replicatedhq/embedded-cluster/pkg/release"
17+ kotsv1beta1 "github.com/replicatedhq/kotskinds/apis/kots/v1beta1"
1718 "github.com/sirupsen/logrus"
19+ kyaml "sigs.k8s.io/yaml"
1820)
1921
2022type Controller interface {
@@ -32,18 +34,20 @@ type Controller interface {
3234var _ Controller = (* InstallController )(nil )
3335
3436type InstallController struct {
35- appConfigManager appconfig.AppConfigManager
36- appInstallManager appinstallmanager.AppInstallManager
37- appPreflightManager apppreflightmanager.AppPreflightManager
38- appReleaseManager appreleasemanager.AppReleaseManager
39- stateMachine statemachine.Interface
40- logger logrus.FieldLogger
41- license []byte
42- releaseData * release.ReleaseData
43- store store.Store
44- configValues types.AppConfigValues
45- clusterID string
46- airgapBundle string
37+ appConfigManager appconfig.AppConfigManager
38+ appInstallManager appinstallmanager.AppInstallManager
39+ appPreflightManager apppreflightmanager.AppPreflightManager
40+ appReleaseManager appreleasemanager.AppReleaseManager
41+ stateMachine statemachine.Interface
42+ logger logrus.FieldLogger
43+ license []byte
44+ releaseData * release.ReleaseData
45+ store store.Store
46+ configValues types.AppConfigValues
47+ clusterID string
48+ airgapBundle string
49+ privateCACertConfigMapName string
50+ registrySettings * types.RegistrySettings
4751}
4852
4953type InstallControllerOption func (* InstallController )
@@ -120,6 +124,18 @@ func WithAirgapBundle(airgapBundle string) InstallControllerOption {
120124 }
121125}
122126
127+ func WithRegistrySettings (registrySettings * types.RegistrySettings ) InstallControllerOption {
128+ return func (c * InstallController ) {
129+ c .registrySettings = registrySettings
130+ }
131+ }
132+
133+ func WithPrivateCACertConfigMapName (configMapName string ) InstallControllerOption {
134+ return func (c * InstallController ) {
135+ c .privateCACertConfigMapName = configMapName
136+ }
137+ }
138+
123139func NewInstallController (opts ... InstallControllerOption ) (* InstallController , error ) {
124140 controller := & InstallController {
125141 logger : logger .NewDiscardLogger (),
@@ -133,11 +149,22 @@ func NewInstallController(opts ...InstallControllerOption) (*InstallController,
133149 return nil , err
134150 }
135151
152+ var license * kotsv1beta1.License
153+ if len (controller .license ) > 0 {
154+ license = & kotsv1beta1.License {}
155+ if err := kyaml .Unmarshal (controller .license , license ); err != nil {
156+ return nil , fmt .Errorf ("parse license: %w" , err )
157+ }
158+ }
159+
136160 if controller .appConfigManager == nil {
137161 appConfigManager , err := appconfig .NewAppConfigManager (
138162 * controller .releaseData .AppConfig ,
139163 appconfig .WithLogger (controller .logger ),
140164 appconfig .WithAppConfigStore (controller .store .AppConfigStore ()),
165+ appconfig .WithReleaseData (controller .releaseData ),
166+ appconfig .WithLicense (license ),
167+ appconfig .WithPrivateCACertConfigMapName (controller .privateCACertConfigMapName ),
141168 )
142169 if err != nil {
143170 return nil , fmt .Errorf ("failed to create app config manager: %w" , err )
@@ -164,10 +191,20 @@ func NewInstallController(opts ...InstallControllerOption) (*InstallController,
164191 }
165192
166193 if controller .appReleaseManager == nil {
167- appReleaseManager , err := appreleasemanager .NewAppReleaseManager (
168- * controller . releaseData . AppConfig ,
194+ var appReleaseManagerOpts [] appreleasemanager.AppReleaseManagerOption
195+ appReleaseManagerOpts = append ( appReleaseManagerOpts ,
169196 appreleasemanager .WithLogger (controller .logger ),
170197 appreleasemanager .WithReleaseData (controller .releaseData ),
198+ appreleasemanager .WithLicense (license ),
199+ appreleasemanager .WithPrivateCACertConfigMapName (controller .privateCACertConfigMapName ),
200+ )
201+
202+ // Add registry settings if available
203+ appReleaseManagerOpts = append (appReleaseManagerOpts , appreleasemanager .WithRegistrySettings (controller .registrySettings ))
204+
205+ appReleaseManager , err := appreleasemanager .NewAppReleaseManager (
206+ * controller .releaseData .AppConfig ,
207+ appReleaseManagerOpts ... ,
171208 )
172209 if err != nil {
173210 return nil , fmt .Errorf ("create app release manager: %w" , err )
@@ -178,8 +215,8 @@ func NewInstallController(opts ...InstallControllerOption) (*InstallController,
178215 if controller .appInstallManager == nil {
179216 appInstallManager , err := appinstallmanager .NewAppInstallManager (
180217 appinstallmanager .WithLogger (controller .logger ),
181- appinstallmanager .WithLicense (controller .license ),
182218 appinstallmanager .WithReleaseData (controller .releaseData ),
219+ appinstallmanager .WithLicense (controller .license ),
183220 appinstallmanager .WithClusterID (controller .clusterID ),
184221 appinstallmanager .WithAirgapBundle (controller .airgapBundle ),
185222 appinstallmanager .WithAppInstallStore (controller .store .AppInstallStore ()),
0 commit comments