From f3113b925894731f81fa8e44103f399c1d9df253 Mon Sep 17 00:00:00 2001 From: Raghu Sarangapani Date: Mon, 3 Apr 2023 11:07:31 -0700 Subject: [PATCH] fecth astra connector before status update, avoid reconcile for status updates --- README.md | 1 + controllers/astraconnector_controller.go | 20 ++++++++------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7b4c1ab3..c4d5613a 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ kubectl apply -f config/samples/astraconnector_v1.yaml -n astra-connector ``` #### Check the AstraConnector status ``` +ยป kubectl get astraconnector astra-connector -n astra-connector NAME REGISTERED ASTRACONNECTORID STATUS astra-connector false Updating Deployment astra-connector/echo-client ``` diff --git a/controllers/astraconnector_controller.go b/controllers/astraconnector_controller.go index 762a297a..512eea36 100644 --- a/controllers/astraconnector_controller.go +++ b/controllers/astraconnector_controller.go @@ -18,6 +18,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ctrllog "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/predicate" k8serrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/types" @@ -280,12 +281,7 @@ func (r *AstraConnectorReconciler) Reconcile(ctx context.Context, req ctrl.Reque natssyncClientStatus.Status = UnregisterNSClient } - err = r.updateAstraConnectorStatus(ctx, astraConnector, natssyncClientStatus) - if err != nil { - log.Error(err, "Error updating natsync-client status") - return ctrl.Result{}, err - } - + _ = r.updateAstraConnectorStatus(ctx, astraConnector, natssyncClientStatus) return ctrl.Result{}, nil } @@ -303,15 +299,14 @@ func (r *AstraConnectorReconciler) updateAstraConnectorStatus(ctx context.Contex } podNames := getPodNames(podList.Items) + err := r.Get(ctx, types.NamespacedName{Name: astraConnector.Name, Namespace: astraConnector.Namespace}, astraConnector) + if err != nil { + return err + } + // Update status.Nodes if needed if !reflect.DeepEqual(podNames, astraConnector.Status.Nodes) { - log.Info("Updating the pod status") astraConnector.Status.Nodes = podNames - err := r.Status().Update(ctx, astraConnector) - if err != nil { - log.Error(err, "Failed to update astraConnector status") - return err - } } if !reflect.DeepEqual(natssyncClientStatus, astraConnector.Status.NatssyncClient) { @@ -338,6 +333,7 @@ func (r *AstraConnectorReconciler) SetupWithManager(mgr ctrl.Manager) error { Owns(&rbacv1.Role{}). Owns(&rbacv1.RoleBinding{}). WithOptions(controller.Options{MaxConcurrentReconciles: 1}). + WithEventFilter(predicate.GenerationChangedPredicate{}). // Avoid reconcile for status updates Complete(r) }