From 52402f4f9f4966903971acd4426e6d0263e2be04 Mon Sep 17 00:00:00 2001 From: dd di cesare Date: Thu, 28 Jul 2022 20:20:54 +0200 Subject: [PATCH] [controller] Patching the (Cluster)RoleBinding to match Kuadrant NS * It needs some DRY up * There's no easy way, since obj is type interface when multiple case types --- controllers/kuadrant_controller.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/controllers/kuadrant_controller.go b/controllers/kuadrant_controller.go index 138c8ae6a..4927ebd0b 100644 --- a/controllers/kuadrant_controller.go +++ b/controllers/kuadrant_controller.go @@ -28,6 +28,7 @@ import ( iopv1alpha1 "istio.io/istio/operator/pkg/apis/istio/v1alpha1" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" + rbacv1 "k8s.io/api/rbac/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -406,6 +407,25 @@ func (r *KuadrantReconciler) createOnlyInKuadrantNSCb(ctx context.Context, kObj v1.EnvVar{Name: envLimitadorName, Value: limitadorName}, ) newObj = obj + // TODO: DRY the following 2 case switches + case *rbacv1.RoleBinding: + if obj.Name == "kuadrant-leader-election-rolebinding" { + for i, subject := range obj.Subjects { + if subject.Name == "kuadrant-controller-manager" { + obj.Subjects[i].Namespace = kObj.Namespace + } + } + } + newObj = obj + case *rbacv1.ClusterRoleBinding: + if obj.Name == "kuadrant-manager-rolebinding" { + for i, subject := range obj.Subjects { + if subject.Name == "kuadrant-controller-manager" { + obj.Subjects[i].Namespace = kObj.Namespace + } + } + } + newObj = obj default: } newObjCloned := newObj.DeepCopyObject()