99	"time" 
1010
1111	"github.com/openmcp-project/controller-utils/pkg/clusters" 
12+ 	"github.com/openmcp-project/openmcp-operator/api/common" 
13+ 	"github.com/openmcp-project/openmcp-operator/api/provider/v1alpha1" 
14+ 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 
1215
1316	"github.com/openmcp-project/service-provider-landscaper/internal/dns" 
1417
@@ -143,7 +146,7 @@ func (r *LandscaperReconciler) handleCreateUpdateOperation(ctx context.Context,
143146		return  reconcile.Result {RequeueAfter : dnsResult .RequeueAfter }, status , nil 
144147	}
145148
146- 	conf , err  :=  r .createConfig (ls , mcpCluster , workloadCluster , providerConfig , dnsResult .HostName )
149+ 	conf , err  :=  r .createConfig (ctx ,  ls , mcpCluster , workloadCluster , providerConfig , dnsResult .HostName )
147150	if  err  !=  nil  {
148151		log .Error (err , "failed to create configuration for landscaper instance" )
149152		status .setInstallConfigurationError (err )
@@ -232,7 +235,7 @@ func (r *LandscaperReconciler) handleDeleteOperation(ctx context.Context, ls *v1
232235		return  reconcile.Result {}, status , err 
233236	}
234237
235- 	conf , err  :=  r .createConfig (ls , mcpCluster , workloadCluster , providerConfig , "" )
238+ 	conf , err  :=  r .createConfig (ctx ,  ls , mcpCluster , workloadCluster , providerConfig , "" )
236239	if  err  !=  nil  {
237240		log .Error (err , "failed to create configuration to uninstall landscaper instance" )
238241		status .setUninstallConfigurationError (err )
@@ -380,7 +383,20 @@ func (r *LandscaperReconciler) getProviderConfigForLandscaper(ctx context.Contex
380383	return  providerConfig , nil 
381384}
382385
383- func  (r  * LandscaperReconciler ) createConfig (ls  * v1alpha2.Landscaper , mcpCluster , workloadCluster  * clusters.Cluster , providerConfig  * v1alpha2.ProviderConfig , workloadClusterDomain  string ) (* instance.Configuration , error ) {
386+ func  (r  * LandscaperReconciler ) getServiceProviderResource (ctx  context.Context ) (* v1alpha1.ServiceProvider , error ) {
387+ 	serviceProvider  :=  & v1alpha1.ServiceProvider {
388+ 		ObjectMeta : metav1.ObjectMeta {
389+ 			Name : r .ProviderName ,
390+ 		},
391+ 	}
392+ 	if  err  :=  r .PlatformCluster .Client ().Get (ctx , client .ObjectKeyFromObject (serviceProvider ), serviceProvider ); err  !=  nil  {
393+ 		return  nil , fmt .Errorf ("failed to get service provider resource %s/%s: %w" , r .ProviderNamespace , r .ProviderName , err )
394+ 	}
395+ 
396+ 	return  serviceProvider , nil 
397+ }
398+ 
399+ func  (r  * LandscaperReconciler ) createConfig (ctx  context.Context , ls  * v1alpha2.Landscaper , mcpCluster , workloadCluster  * clusters.Cluster , providerConfig  * v1alpha2.ProviderConfig , workloadClusterDomain  string ) (* instance.Configuration , error ) {
384400	inst  :=  identity .Instance (identity .GetInstanceID (ls ))
385401
386402	cpu , err  :=  resource .ParseQuantity ("10m" )
@@ -397,23 +413,41 @@ func (r *LandscaperReconciler) createConfig(ls *v1alpha2.Landscaper, mcpCluster,
397413			core .ResourceMemory : memory ,
398414		},
399415	}
416+ 
417+ 	serviceProvider , err  :=  r .getServiceProviderResource (ctx )
418+ 	if  err  !=  nil  {
419+ 		return  nil , err 
420+ 	}
421+ 
422+ 	getImagePullSecrets  :=  func (imageConfiguration  * v1alpha2.ImageConfiguration ) []common.LocalObjectReference  {
423+ 		if  imageConfiguration  ==  nil  {
424+ 			return  serviceProvider .Spec .ImagePullSecrets 
425+ 		}
426+ 
427+ 		return  imageConfiguration .ImagePullSecrets 
428+ 	}
429+ 
400430	conf  :=  & instance.Configuration {
401- 		Instance :              inst ,
402- 		Version :               ls .Spec .Version ,
403- 		MCPCluster :            mcpCluster ,
404- 		WorkloadCluster :       workloadCluster ,
405- 		WorkloadClusterDomain : fmt .Sprintf ("https://%s:%d" , workloadClusterDomain , dnsServicePort ()), // 9443 is the port for TLS passthrough configured in the Gateway 
431+ 		Instance :                 inst ,
432+ 		Version :                  ls .Spec .Version ,
433+ 		PlatformCluster :          r .PlatformCluster ,
434+ 		PlatformClusterNamespace : r .ProviderNamespace ,
435+ 		MCPCluster :               mcpCluster ,
436+ 		WorkloadCluster :          workloadCluster ,
437+ 		WorkloadClusterDomain :    fmt .Sprintf ("https://%s:%d" , workloadClusterDomain , dnsServicePort ()), // 9443 is the port for TLS passthrough configured in the Gateway 
406438		Landscaper : instance.LandscaperConfig {
407439			Controller : instance.ControllerConfig {
408440				Image : v1alpha2.ImageConfiguration {
409- 					Image : providerConfig .GetLandscaperControllerImageLocation (ls .Spec .Version ),
441+ 					Image :            providerConfig .GetLandscaperControllerImageLocation (ls .Spec .Version ),
442+ 					ImagePullSecrets : getImagePullSecrets (providerConfig .Spec .Deployment .LandscaperController ),
410443				},
411444				Resources :     resources ,
412445				ResourcesMain : resources ,
413446			},
414447			WebhooksServer : instance.WebhooksServerConfig {
415448				Image : v1alpha2.ImageConfiguration {
416- 					Image : providerConfig .GetLandscaperWebhooksServerImageLocation (ls .Spec .Version ),
449+ 					Image :            providerConfig .GetLandscaperWebhooksServerImageLocation (ls .Spec .Version ),
450+ 					ImagePullSecrets : getImagePullSecrets (providerConfig .Spec .Deployment .LandscaperWebhooksServer ),
417451				},
418452				Resources :   resources ,
419453				ServicePort : dnsServicePort (),
@@ -422,13 +456,15 @@ func (r *LandscaperReconciler) createConfig(ls *v1alpha2.Landscaper, mcpCluster,
422456		},
423457		ManifestDeployer : instance.ManifestDeployerConfig {
424458			Image : v1alpha2.ImageConfiguration {
425- 				Image : providerConfig .GetManifestDeployerImageLocation (ls .Spec .Version ),
459+ 				Image :            providerConfig .GetManifestDeployerImageLocation (ls .Spec .Version ),
460+ 				ImagePullSecrets : getImagePullSecrets (providerConfig .Spec .Deployment .ManifestDeployer ),
426461			},
427462			Resources : resources ,
428463		},
429464		HelmDeployer : instance.HelmDeployerConfig {
430465			Image : v1alpha2.ImageConfiguration {
431- 				Image : providerConfig .GetHelmDeployerImageLocation (ls .Spec .Version ),
466+ 				Image :            providerConfig .GetHelmDeployerImageLocation (ls .Spec .Version ),
467+ 				ImagePullSecrets : getImagePullSecrets (providerConfig .Spec .Deployment .HelmDeployer ),
432468			},
433469			Resources : resources ,
434470		},
0 commit comments