@@ -21,19 +21,18 @@ import (
2121	commonapi "github.com/openmcp-project/openmcp-operator/api/common" 
2222	apiconst "github.com/openmcp-project/openmcp-operator/api/constants" 
2323	corev2alpha1 "github.com/openmcp-project/openmcp-operator/api/core/v2alpha1" 
24- 	libutils "github.com/openmcp-project/openmcp-operator/lib/utils" 
2524)
2625
2726// manageAccessRequests aligns the existing AccessRequests for the MCP with the currently configured OIDC providers. 
2827// It uses the given createCon function to create conditions for AccessRequests and returns a set of conditions that should be removed from the MCP status. 
2928// The bool return value specifies whether everything related to MCP access is in the desired state or not. If 'false', it is recommended to requeue the MCP. 
30- func  (r  * ManagedControlPlaneReconciler ) manageAccessRequests (ctx  context.Context , mcp  * corev2alpha1.ManagedControlPlaneV2 , cr  * clustersv1alpha1.ClusterRequest , createCon  func (conType  string , status  metav1.ConditionStatus , reason , message  string )) (bool , sets.Set [string ], errutils.ReasonableError ) {
31- 	updatedAccessRequests , rerr  :=  r .createOrUpdateDesiredAccessRequests (ctx , mcp , cr , createCon )
29+ func  (r  * ManagedControlPlaneReconciler ) manageAccessRequests (ctx  context.Context , mcp  * corev2alpha1.ManagedControlPlaneV2 , platformNamespace   string ,  cr  * clustersv1alpha1.ClusterRequest , createCon  func (conType  string , status  metav1.ConditionStatus , reason , message  string )) (bool , sets.Set [string ], errutils.ReasonableError ) {
30+ 	updatedAccessRequests , rerr  :=  r .createOrUpdateDesiredAccessRequests (ctx , mcp , platformNamespace ,  cr , createCon )
3231	if  rerr  !=  nil  {
3332		return  false , nil , rerr 
3433	}
3534
36- 	accessRequestsInDeletion , rerr  :=  r .deleteUndesiredAccessRequests (ctx , mcp , updatedAccessRequests , createCon )
35+ 	accessRequestsInDeletion , rerr  :=  r .deleteUndesiredAccessRequests (ctx , mcp , platformNamespace ,  updatedAccessRequests , createCon )
3736	if  rerr  !=  nil  {
3837		return  false , nil , rerr 
3938	}
@@ -82,10 +81,9 @@ func (r *ManagedControlPlaneReconciler) manageAccessRequests(ctx context.Context
8281// createOrUpdateDesiredAccessRequests creates/updates all AccessRequests that are desired according to the ManagedControlPlane's configured OIDC providers. 
8382// It returns a mapping from OIDC provider names to the corresponding AccessRequests. 
8483// If the ManagedControlPlane has a non-zero DeletionTimestamp, no AccessRequests will be created or updated and the returned map will be empty. 
85- func  (r  * ManagedControlPlaneReconciler ) createOrUpdateDesiredAccessRequests (ctx  context.Context , mcp  * corev2alpha1.ManagedControlPlaneV2 , cr  * clustersv1alpha1.ClusterRequest , createCon  func (conType  string , status  metav1.ConditionStatus , reason , message  string )) (map [string ]* clustersv1alpha1.AccessRequest , errutils.ReasonableError ) {
84+ func  (r  * ManagedControlPlaneReconciler ) createOrUpdateDesiredAccessRequests (ctx  context.Context , mcp  * corev2alpha1.ManagedControlPlaneV2 , platformNamespace   string ,  cr  * clustersv1alpha1.ClusterRequest , createCon  func (conType  string , status  metav1.ConditionStatus , reason , message  string )) (map [string ]* clustersv1alpha1.AccessRequest , errutils.ReasonableError ) {
8685	log  :=  logging .FromContextOrPanic (ctx )
8786
88- 	namespace  :=  libutils .StableRequestNamespace (mcp .Namespace )
8987	updatedAccessRequests  :=  map [string ]* clustersv1alpha1.AccessRequest {}
9088	var  oidcProviders  []* commonapi.OIDCProviderConfig 
9189
@@ -104,10 +102,10 @@ func (r *ManagedControlPlaneReconciler) createOrUpdateDesiredAccessRequests(ctx
104102
105103	for  _ , oidc  :=  range  oidcProviders  {
106104		log .Debug ("Creating/updating AccessRequest for OIDC provider" , "oidcProviderName" , oidc .Name )
107- 		arName  :=  ctrlutils .K8sNameHash (mcp .Name , oidc .Name )
105+ 		arName  :=  ctrlutils .K8sNameUUIDUnsafe (mcp .Name , oidc .Name )
108106		ar  :=  & clustersv1alpha1.AccessRequest {}
109107		ar .Name  =  arName 
110- 		ar .Namespace  =  namespace 
108+ 		ar .Namespace  =  platformNamespace 
111109		if  _ , err  :=  controllerutil .CreateOrUpdate (ctx , r .PlatformCluster .Client (), ar , func () error  {
112110			ar .Spec .RequestRef  =  & commonapi.ObjectReference {
113111				Name :      cr .Name ,
@@ -119,7 +117,8 @@ func (r *ManagedControlPlaneReconciler) createOrUpdateDesiredAccessRequests(ctx
119117			if  ar .Labels  ==  nil  {
120118				ar .Labels  =  map [string ]string {}
121119			}
122- 			ar .Labels [corev2alpha1 .MCPLabel ] =  mcp .Name 
120+ 			ar .Labels [corev2alpha1 .MCPNameLabel ] =  mcp .Name 
121+ 			ar .Labels [corev2alpha1 .MCPNamespaceLabel ] =  mcp .Namespace 
123122			ar .Labels [apiconst .ManagedByLabel ] =  ControllerName 
124123			ar .Labels [corev2alpha1 .OIDCProviderLabel ] =  oidc .Name 
125124
@@ -139,17 +138,17 @@ func (r *ManagedControlPlaneReconciler) createOrUpdateDesiredAccessRequests(ctx
139138// deleteUndesiredAccessRequests deletes all AccessRequests that belong to the given ManagedControlPlane, but are not in the updatedAccessRequests map. 
140139// These are AccessRequests that have been created for a previous version of the ManagedControlPlane and are not needed anymore. 
141140// It returns a set of OIDC provider names for which the AccessRequests are still in deletion. If the set is empty, all undesired AccessRequests have been deleted. 
142- func  (r  * ManagedControlPlaneReconciler ) deleteUndesiredAccessRequests (ctx  context.Context , mcp  * corev2alpha1.ManagedControlPlaneV2 , updatedAccessRequests  map [string ]* clustersv1alpha1.AccessRequest , createCon  func (conType  string , status  metav1.ConditionStatus , reason , message  string )) (sets.Set [string ], errutils.ReasonableError ) {
141+ func  (r  * ManagedControlPlaneReconciler ) deleteUndesiredAccessRequests (ctx  context.Context , mcp  * corev2alpha1.ManagedControlPlaneV2 , platformNamespace   string ,  updatedAccessRequests  map [string ]* clustersv1alpha1.AccessRequest , createCon  func (conType  string , status  metav1.ConditionStatus , reason , message  string )) (sets.Set [string ], errutils.ReasonableError ) {
143142	log  :=  logging .FromContextOrPanic (ctx )
144143
145- 	namespace  :=  libutils .StableRequestNamespace (mcp .Namespace )
146144	accessRequestsInDeletion  :=  sets .New [string ]()
147145
148146	// delete all AccessRequests that have previously been created for this ManagedControlPlane but are not needed anymore 
149147	oidcARs  :=  & clustersv1alpha1.AccessRequestList {}
150- 	if  err  :=  r .PlatformCluster .Client ().List (ctx , oidcARs , client .InNamespace (namespace ), client.HasLabels {corev2alpha1 .OIDCProviderLabel }, client.MatchingLabels {
151- 		corev2alpha1 .MCPLabel :   mcp .Name ,
152- 		apiconst .ManagedByLabel : ControllerName ,
148+ 	if  err  :=  r .PlatformCluster .Client ().List (ctx , oidcARs , client .InNamespace (platformNamespace ), client.HasLabels {corev2alpha1 .OIDCProviderLabel }, client.MatchingLabels {
149+ 		corev2alpha1 .MCPNameLabel :      mcp .Name ,
150+ 		corev2alpha1 .MCPNamespaceLabel : mcp .Namespace ,
151+ 		apiconst .ManagedByLabel :        ControllerName ,
153152	}); err  !=  nil  {
154153		rerr  :=  errutils .WithReason (fmt .Errorf ("error listing AccessRequests for ManagedControlPlane '%s/%s': %w" , mcp .Namespace , mcp .Name , err ), cconst .ReasonPlatformClusterInteractionProblem )
155154		createCon (corev2alpha1 .ConditionAllAccessReady , metav1 .ConditionFalse , rerr .Reason (), rerr .Error ())
@@ -197,8 +196,9 @@ func (r *ManagedControlPlaneReconciler) deleteUndesiredAccessSecrets(ctx context
197196	// delete all AccessRequest secrets that have been copied to the Onboarding cluster and belong to AccessRequests that are no longer needed 
198197	mcpSecrets  :=  & corev1.SecretList {}
199198	if  err  :=  r .OnboardingCluster .Client ().List (ctx , mcpSecrets , client .InNamespace (mcp .Namespace ), client.HasLabels {corev2alpha1 .OIDCProviderLabel }, client.MatchingLabels {
200- 		corev2alpha1 .MCPLabel :   mcp .Name ,
201- 		apiconst .ManagedByLabel : ControllerName ,
199+ 		corev2alpha1 .MCPNameLabel :      mcp .Name ,
200+ 		corev2alpha1 .MCPNamespaceLabel : mcp .Namespace ,
201+ 		apiconst .ManagedByLabel :        ControllerName ,
202202	}); err  !=  nil  {
203203		rerr  :=  errutils .WithReason (fmt .Errorf ("error listing secrets for ManagedControlPlane '%s/%s': %w" , mcp .Namespace , mcp .Name , err ), cconst .ReasonOnboardingClusterInteractionProblem )
204204		createCon (corev2alpha1 .ConditionAllAccessReady , metav1 .ConditionFalse , rerr .Reason (), rerr .Error ())
@@ -268,14 +268,15 @@ func (r *ManagedControlPlaneReconciler) syncAccessSecrets(ctx context.Context, m
268268				return  false , rerr 
269269			}
270270			mcpSecret  :=  & corev1.Secret {}
271- 			mcpSecret .Name  =  ctrlutils .K8sNameHash (mcp .Name , providerName )
271+ 			mcpSecret .Name  =  ctrlutils .K8sNameUUIDUnsafe (mcp .Name , providerName )
272272			mcpSecret .Namespace  =  mcp .Namespace 
273273			if  _ , err  :=  controllerutil .CreateOrUpdate (ctx , r .OnboardingCluster .Client (), mcpSecret , func () error  {
274274				mcpSecret .Data  =  arSecret .Data 
275275				if  mcpSecret .Labels  ==  nil  {
276276					mcpSecret .Labels  =  map [string ]string {}
277277				}
278- 				mcpSecret .Labels [corev2alpha1 .MCPLabel ] =  mcp .Name 
278+ 				mcpSecret .Labels [corev2alpha1 .MCPNameLabel ] =  mcp .Name 
279+ 				mcpSecret .Labels [corev2alpha1 .MCPNamespaceLabel ] =  mcp .Namespace 
279280				mcpSecret .Labels [corev2alpha1 .OIDCProviderLabel ] =  providerName 
280281				mcpSecret .Labels [apiconst .ManagedByLabel ] =  ControllerName 
281282
0 commit comments