From f8601b24cba2abf5f170e7f35bc88562aa9384d8 Mon Sep 17 00:00:00 2001 From: nmirasch Date: Wed, 3 Sep 2025 20:10:00 +0200 Subject: [PATCH] Fix: Skip error log when console link is disabled and absent (#949) * Skip error log when console link is disabled and absent Signed-off-by: nmirasch * Remove ConsoleLink when disabled, otherwise reconcile Signed-off-by: nmirasch --------- Signed-off-by: nmirasch (cherry picked from commit 9e522bfe8f97721bf3b8c23844f529d45acce0bd) --- controllers/argocd_controller.go | 31 ++++++++++++++------------- controllers/argocd_controller_test.go | 19 +++++++++++++++- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/controllers/argocd_controller.go b/controllers/argocd_controller.go index c67e1957eea..f083f9ce48d 100644 --- a/controllers/argocd_controller.go +++ b/controllers/argocd_controller.go @@ -142,25 +142,26 @@ func (r *ReconcileArgoCDRoute) Reconcile(ctx context.Context, request reconcile. consoleLink := newConsoleLink(argoCDRouteURL, "Cluster Argo CD") - found := &console.ConsoleLink{} - err = r.Client.Get(ctx, types.NamespacedName{Name: consoleLink.Name}, found) + if isConsoleLinkDisabled() { + return reconcile.Result{}, r.deleteConsoleLinkIfPresent(ctx, reqLogger) + } else { + found := &console.ConsoleLink{} + err = r.Client.Get(ctx, types.NamespacedName{Name: consoleLink.Name}, found) - if err != nil { - if errors.IsNotFound(err) { - if !isConsoleLinkDisabled() { - reqLogger.Info("Creating a new ConsoleLink", "ConsoleLink.Name", consoleLink.Name) + if err != nil { + if errors.IsNotFound(err) { + reqLogger.Info("Creating a new ConsoleLink ", "ConsoleLink.Name", consoleLink.Name) return reconcile.Result{}, r.Client.Create(ctx, consoleLink) + } else { + reqLogger.Error(err, "Failed to get ConsoleLink", "ConsoleLink.Name", consoleLink.Name) + return reconcile.Result{}, err } } - reqLogger.Error(err, "ConsoleLink not found", "ConsoleLink.Name", consoleLink.Name) - return reconcile.Result{}, err - } - if isConsoleLinkDisabled() { - return reconcile.Result{}, r.deleteConsoleLinkIfPresent(ctx, reqLogger) - } else if found.Spec.Href != argoCDRouteURL { - reqLogger.Info("Updating the existing ConsoleLink", "ConsoleLink.Name", consoleLink.Name) - found.Spec.Href = argoCDRouteURL - return reconcile.Result{}, r.Client.Update(ctx, found) + if found.Spec.Href != argoCDRouteURL { + reqLogger.Info("Updating the existing ConsoleLink ", "ConsoleLink.Name", consoleLink.Name) + found.Spec.Href = argoCDRouteURL + return reconcile.Result{}, r.Client.Update(ctx, found) + } } reqLogger.Info("Skip reconcile: ConsoleLink already exists", "ConsoleLink.Name", consoleLink.Name) diff --git a/controllers/argocd_controller_test.go b/controllers/argocd_controller_test.go index 72124176aeb..5f5facdf4c2 100644 --- a/controllers/argocd_controller_test.go +++ b/controllers/argocd_controller_test.go @@ -83,6 +83,7 @@ func TestReconcile_delete_consolelink(t *testing.T) { name string setEnvVarFunc func(*testing.T, string) envVar string + consoleLinkPrevExist bool consoleLinkShouldExist bool wantErr bool Err error @@ -92,6 +93,17 @@ func TestReconcile_delete_consolelink(t *testing.T) { setEnvVarFunc: func(t *testing.T, envVar string) { t.Setenv(disableArgoCDConsoleLink, envVar) }, + consoleLinkPrevExist: true, + consoleLinkShouldExist: false, + envVar: "true", + wantErr: false, + }, + { + name: "DISABLE_DEFAULT_ARGOCD_CONSOLELINK is set to true and consoleLink doesn't exist previously", + setEnvVarFunc: func(t *testing.T, envVar string) { + t.Setenv(disableArgoCDConsoleLink, envVar) + }, + consoleLinkPrevExist: false, consoleLinkShouldExist: false, envVar: "true", wantErr: false, @@ -102,6 +114,7 @@ func TestReconcile_delete_consolelink(t *testing.T) { t.Setenv(disableArgoCDConsoleLink, envVar) }, envVar: "false", + consoleLinkPrevExist: true, consoleLinkShouldExist: true, wantErr: false, }, @@ -109,6 +122,7 @@ func TestReconcile_delete_consolelink(t *testing.T) { name: "DISABLE_DEFAULT_ARGOCD_CONSOLELINK isn't set and consoleLink doesn't get deleted", setEnvVarFunc: nil, envVar: "", + consoleLinkPrevExist: true, consoleLinkShouldExist: true, wantErr: false, }, @@ -118,7 +132,10 @@ func TestReconcile_delete_consolelink(t *testing.T) { t.Run(test.name, func(t *testing.T) { reconcileArgoCD, fakeClient := newFakeReconcileArgoCD(argoCDRoute, consoleLink) consoleLink := newConsoleLink("https://test.com", "Cluster Argo CD") - fakeClient.Create(context.TODO(), consoleLink) + if test.consoleLinkPrevExist { + err := fakeClient.Create(context.TODO(), consoleLink) + assert.NilError(t, err) + } if test.setEnvVarFunc != nil { test.setEnvVarFunc(t, test.envVar)