@@ -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