diff --git a/controllers/ibmpowervscluster_controller.go b/controllers/ibmpowervscluster_controller.go index 6502d68b2..2ac54a14e 100644 --- a/controllers/ibmpowervscluster_controller.go +++ b/controllers/ibmpowervscluster_controller.go @@ -51,6 +51,7 @@ import ( // IBMPowerVSClusterReconciler reconciles a IBMPowerVSCluster object. type IBMPowerVSClusterReconciler struct { client.Client + UncachedClient client.Client Recorder record.EventRecorder ServiceEndpoint []endpoints.ServiceEndpoint Scheme *runtime.Scheme @@ -65,7 +66,7 @@ func (r *IBMPowerVSClusterReconciler) Reconcile(ctx context.Context, req ctrl.Re // Fetch the IBMPowerVSCluster instance. ibmCluster := &infrav1beta2.IBMPowerVSCluster{} - err := r.Get(ctx, req.NamespacedName, ibmCluster) + err := r.UncachedClient.Get(ctx, req.NamespacedName, ibmCluster) if err != nil { if apierrors.IsNotFound(err) { return ctrl.Result{}, nil diff --git a/controllers/ibmpowervscluster_controller_test.go b/controllers/ibmpowervscluster_controller_test.go index c70f6f679..fa38a8dd1 100644 --- a/controllers/ibmpowervscluster_controller_test.go +++ b/controllers/ibmpowervscluster_controller_test.go @@ -79,7 +79,8 @@ func TestIBMPowerVSClusterReconciler_Reconcile(t *testing.T) { t.Run(tc.name, func(t *testing.T) { g := NewWithT(t) reconciler := &IBMPowerVSClusterReconciler{ - Client: testEnv.Client, + Client: testEnv.Client, + UncachedClient: testEnv.Client, } ns, err := testEnv.CreateNamespace(ctx, fmt.Sprintf("namespace-%s", util.RandomString(5))) @@ -157,7 +158,8 @@ func TestIBMPowerVSClusterReconciler_reconcile(t *testing.T) { t.Run(tc.name, func(t *testing.T) { g := NewWithT(t) reconciler := &IBMPowerVSClusterReconciler{ - Client: testEnv.Client, + Client: testEnv.Client, + UncachedClient: testEnv.Client, } _, _ = reconciler.reconcile(tc.powervsClusterScope) g.Expect(tc.powervsClusterScope.IBMPowerVSCluster.Status.Ready).To(Equal(tc.clusterStatus)) @@ -172,7 +174,8 @@ func TestIBMPowerVSClusterReconciler_delete(t *testing.T) { clusterScope *scope.PowerVSClusterScope ) reconciler = IBMPowerVSClusterReconciler{ - Client: testEnv.Client, + Client: testEnv.Client, + UncachedClient: testEnv.Client, } t.Run("Reconciling delete IBMPowerVSCluster", func(t *testing.T) { t.Run("Should reconcile successfully if no descendants are found", func(t *testing.T) { diff --git a/main.go b/main.go index 1fa536bcd..4418000cf 100644 --- a/main.go +++ b/main.go @@ -34,6 +34,7 @@ import ( ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache" + "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/webhook" capiv1beta1 "sigs.k8s.io/cluster-api/api/v1beta1" @@ -242,8 +243,14 @@ func setupReconcilers(mgr ctrl.Manager, serviceEndpoint []endpoints.ServiceEndpo os.Exit(1) } + cfg := ctrl.GetConfigOrDie() + uncachedClient, err := client.New(cfg, client.Options{Scheme: mgr.GetScheme(), Mapper: mgr.GetRESTMapper()}) + if err != nil { + setupLog.Error(err, "unable to set up uncached client") + } if err := (&controllers.IBMPowerVSClusterReconciler{ Client: mgr.GetClient(), + UncachedClient: uncachedClient, Recorder: mgr.GetEventRecorderFor("ibmpowervscluster-controller"), ServiceEndpoint: serviceEndpoint, Scheme: mgr.GetScheme(),