@@ -24,6 +24,7 @@ import (
2424 "net/http"
2525 "net/http/pprof"
2626 "os"
27+ "strings"
2728 "time"
2829
2930 certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
@@ -72,8 +73,10 @@ import (
7273 "github.com/kyma-project/lifecycle-manager/internal/remote"
7374 "github.com/kyma-project/lifecycle-manager/internal/repository/istiogateway"
7475 kymarepository "github.com/kyma-project/lifecycle-manager/internal/repository/kyma"
76+ "github.com/kyma-project/lifecycle-manager/internal/repository/oci"
7577 secretrepository "github.com/kyma-project/lifecycle-manager/internal/repository/secret"
7678 "github.com/kyma-project/lifecycle-manager/internal/service/accessmanager"
79+ "github.com/kyma-project/lifecycle-manager/internal/service/componentdescriptor"
7780 "github.com/kyma-project/lifecycle-manager/internal/service/kyma/status/modules"
7881 "github.com/kyma-project/lifecycle-manager/internal/service/kyma/status/modules/generator"
7982 "github.com/kyma-project/lifecycle-manager/internal/service/kyma/status/modules/generator/fromerror"
@@ -218,21 +221,44 @@ func setupManager(flagVar *flags.FlagVar, cacheOptions cache.Options, scheme *ma
218221 }
219222
220223 sharedMetrics := metrics .NewSharedMetrics ()
221- descriptorProvider := provider .NewCachedDescriptorProvider ()
224+
225+ ociRegistryHost := getOciRegistryHost (mgr .GetConfig (), flagVar , logger )
226+ var insecure bool
227+
228+ if noSchemeRef , found := strings .CutPrefix (ociRegistryHost , "http://" ); found {
229+ insecure = true
230+ ociRegistryHost = noSchemeRef
231+ } else if noSchemeRef , found := strings .CutPrefix (ociRegistryHost , "https://" ); found {
232+ ociRegistryHost = noSchemeRef
233+ }
234+
235+ ocmDescriptorRepository , err := oci .NewRepository (
236+ keychainLookupFromFlag (mgr .GetClient (), flagVar ),
237+ ociRegistryHost ,
238+ insecure ,
239+ )
240+ if err != nil {
241+ logger .Error (err , "failed to create OCM descriptor repository" )
242+ os .Exit (bootstrapFailedExitCode )
243+ }
244+
245+ ocmDescriptorService , err := componentdescriptor .NewService (ocmDescriptorRepository )
246+ if err != nil {
247+ logger .Error (err , "failed to create OCM descriptor service" )
248+ os .Exit (bootstrapFailedExitCode )
249+ }
250+ descriptorProvider := provider .NewCachedDescriptorProvider (ocmDescriptorService )
251+
222252 kymaMetrics := metrics .NewKymaMetrics (sharedMetrics )
223253 mandatoryModulesMetrics := metrics .NewMandatoryModulesMetrics ()
224254 maintenanceWindow := initMaintenanceWindow (flagVar .MinMaintenanceWindowSize , logger )
225255 metrics .NewFipsMetrics ().Update ()
226256
227- //nolint:godox // this will be used in the future
228- // TODO: use the oci registry host //nolint:godox // this will be used in the future
229- _ = getOciRegistryHost (mgr .GetConfig (), flagVar , logger )
230-
231257 setupKymaReconciler (mgr , descriptorProvider , skrContextProvider , eventRecorder , flagVar , options , skrWebhookManager ,
232- kymaMetrics , logger , maintenanceWindow )
258+ kymaMetrics , logger , maintenanceWindow , ociRegistryHost )
233259 setupManifestReconciler (mgr , flagVar , options , sharedMetrics , mandatoryModulesMetrics , accessManagerService , logger ,
234260 eventRecorder )
235- setupMandatoryModuleReconciler (mgr , descriptorProvider , flagVar , options , mandatoryModulesMetrics , logger )
261+ setupMandatoryModuleReconciler (mgr , descriptorProvider , flagVar , options , mandatoryModulesMetrics , logger , ociRegistryHost )
236262 setupMandatoryModuleDeletionReconciler (mgr , descriptorProvider , eventRecorder , flagVar , options , logger )
237263 if flagVar .EnablePurgeFinalizer {
238264 setupPurgeReconciler (mgr , skrContextProvider , eventRecorder , flagVar , options , logger )
@@ -376,7 +402,7 @@ func scheduleMetricsCleanup(kymaMetrics *metrics.KymaMetrics, cleanupIntervalInM
376402func setupKymaReconciler (mgr ctrl.Manager , descriptorProvider * provider.CachedDescriptorProvider ,
377403 skrContextFactory remote.SkrContextProvider , event event.Event , flagVar * flags.FlagVar , options ctrlruntime.Options ,
378404 skrWebhookManager * watcher.SkrWebhookManifestManager , kymaMetrics * metrics.KymaMetrics ,
379- setupLog logr.Logger , maintenanceWindow maintenancewindows.MaintenanceWindow ,
405+ setupLog logr.Logger , maintenanceWindow maintenancewindows.MaintenanceWindow , ociRegistryHost string ,
380406) {
381407 options .RateLimiter = internal .RateLimiter (flagVar .FailureBaseDelay ,
382408 flagVar .FailureMaxDelay , flagVar .RateLimiterFrequency , flagVar .RateLimiterBurst )
@@ -417,6 +443,7 @@ func setupKymaReconciler(mgr ctrl.Manager, descriptorProvider *provider.CachedDe
417443 flagVar .RemoteSyncNamespace ),
418444 TemplateLookup : templatelookup .NewTemplateLookup (kcpClient , descriptorProvider ,
419445 moduleTemplateInfoLookupStrategies ),
446+ OCIRegistryHost : ociRegistryHost ,
420447 }).SetupWithManager (
421448 mgr , options , kyma.SetupOptions {
422449 ListenerAddr : flagVar .KymaListenerAddr ,
@@ -472,7 +499,7 @@ func setupManifestReconciler(mgr ctrl.Manager,
472499
473500 manifestClient := manifestclient .NewManifestClient (event , mgr .GetClient ())
474501 orphanDetectionClient := kymarepository .NewClient (mgr .GetClient ())
475- specResolver := spec .NewResolver (keychainLookupFromFlag (mgr , flagVar ), img .NewPathExtractor ())
502+ specResolver := spec .NewResolver (keychainLookupFromFlag (mgr . GetClient () , flagVar ), img .NewPathExtractor ())
476503 clientCache := skrclientcache .NewService ()
477504 skrClient := skrclient .NewService (mgr .GetConfig ().QPS , mgr .GetConfig ().Burst , accessManagerService )
478505 if err := manifest .SetupWithManager (mgr , options , queue.RequeueIntervals {
@@ -493,9 +520,9 @@ func setupManifestReconciler(mgr ctrl.Manager,
493520}
494521
495522//nolint:ireturn // constructor functions can return interfaces
496- func keychainLookupFromFlag (mgr ctrl. Manager , flagVar * flags.FlagVar ) spec.KeyChainLookup {
523+ func keychainLookupFromFlag (clnt client. Client , flagVar * flags.FlagVar ) spec.KeyChainLookup {
497524 if flagVar .OciRegistryCredSecretName != "" {
498- return keychainprovider .NewFromSecretKeyChainProvider (mgr . GetClient () ,
525+ return keychainprovider .NewFromSecretKeyChainProvider (clnt ,
499526 types.NamespacedName {
500527 Namespace : shared .DefaultControlPlaneNamespace ,
501528 Name : flagVar .OciRegistryCredSecretName ,
@@ -536,6 +563,7 @@ func setupMandatoryModuleReconciler(mgr ctrl.Manager,
536563 options ctrlruntime.Options ,
537564 metrics * metrics.MandatoryModulesMetrics ,
538565 setupLog logr.Logger ,
566+ ociRegistryHost string ,
539567) {
540568 options .RateLimiter = internal .RateLimiter (flagVar .FailureBaseDelay ,
541569 flagVar .FailureMaxDelay , flagVar .RateLimiterFrequency , flagVar .RateLimiterBurst )
@@ -553,6 +581,7 @@ func setupMandatoryModuleReconciler(mgr ctrl.Manager,
553581 RemoteSyncNamespace : flagVar .RemoteSyncNamespace ,
554582 DescriptorProvider : descriptorProvider ,
555583 Metrics : metrics ,
584+ OCIRegistryHost : ociRegistryHost ,
556585 }).SetupWithManager (mgr , options ); err != nil {
557586 setupLog .Error (err , "unable to create controller" , "controller" , "MandatoryModule" )
558587 os .Exit (bootstrapFailedExitCode )
0 commit comments