From 0be4acb33e9bbfb45123af4332cbe614e753923c Mon Sep 17 00:00:00 2001 From: Marek Czudowski <89801999+mczudowski@users.noreply.github.com> Date: Fri, 1 Aug 2025 00:33:40 +0200 Subject: [PATCH] fix: fail fast in case of server version retrieval failure --- cmd/main.go | 11 +++++------ internal/controller/boost_controller.go | 6 +++--- internal/controller/boost_controller_test.go | 11 +++-------- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 1f7d856..ae5c1a7 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -28,7 +28,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/apimachinery/pkg/version" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/healthz" @@ -82,10 +81,10 @@ func main() { versionInfo, err := clusterInfo.GetClusterVersion() if err != nil { - setupLog.Error(err, "failed to get cluster version, continuing...") - } else { - setupLog.Info("cluster info", "version", versionInfo.GitVersion) + setupLog.Error(err, "failed to get cluster version") + os.Exit(1) } + setupLog.Info("cluster info", "version", versionInfo.GitVersion) podLevelResourcesEnabled := false if cfg.ValidateFeatureEnabled { @@ -138,7 +137,7 @@ func main() { boostMgr := boost.NewManager(mgr.GetClient()) controllersReady := make(chan struct{}) - go setupControllers(mgr, boostMgr, cfg, podLevelResourcesEnabled, versionInfo, certsReady, + go setupControllers(mgr, boostMgr, cfg, podLevelResourcesEnabled, versionInfo.GitVersion, certsReady, controllersReady) if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil { setupLog.Error(err, "unable to set up health check") @@ -159,7 +158,7 @@ func main() { } func setupControllers(mgr ctrl.Manager, boostMgr boost.Manager, cfg *config.Config, - podLevelResourcesEnabled bool, serverVersion *version.Info, certsReady chan struct{}, + podLevelResourcesEnabled bool, serverVersion string, certsReady chan struct{}, controllersReady chan struct{}) { defer close(controllersReady) setupLog.Info("Waiting for certificate generation to complete") diff --git a/internal/controller/boost_controller.go b/internal/controller/boost_controller.go index f833876..dab396a 100644 --- a/internal/controller/boost_controller.go +++ b/internal/controller/boost_controller.go @@ -104,7 +104,7 @@ func (r *StartupCPUBoostReconciler) Reconcile(ctx context.Context, req ctrl.Requ // SetupWithManager sets up the controller with the Manager. func (r *StartupCPUBoostReconciler) SetupWithManager(mgr ctrl.Manager, - serverVersion *version.Info) error { + serverVersion string) error { boostPodHandler := NewBoostPodHandler(r.Manager, ctrl.Log.WithName("pod-handler")) lsPredicate, err := predicate.LabelSelectorPredicate(*boostPodHandler.GetPodLabelSelector()) if err != nil { @@ -174,7 +174,7 @@ func (r *StartupCPUBoostReconciler) Generic(e event.GenericEvent) bool { // shouldUseLegacyRevertMode determines if legacy resource revert mode should be used // basing on server version -func shouldUseLegacyRevertMode(serverVersion *version.Info) (legacyMode bool) { +func shouldUseLegacyRevertMode(serverVersion string) (legacyMode bool) { return version.CompareKubeAwareVersionStrings(WantedServerVersionForNewRevert, - serverVersion.GitVersion) < 0 + serverVersion) < 0 } diff --git a/internal/controller/boost_controller_test.go b/internal/controller/boost_controller_test.go index 56a2f51..609fc7a 100644 --- a/internal/controller/boost_controller_test.go +++ b/internal/controller/boost_controller_test.go @@ -30,7 +30,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/apimachinery/pkg/version" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache/informertest" @@ -62,7 +61,7 @@ var _ = Describe("BoostController", func() { Describe("Setups with manager", func() { var ( mockCtrlManager *mock.MockCtrlManager - serverVersion *version.Info + serverVersion string err error ) BeforeEach(func() { @@ -83,9 +82,7 @@ var _ = Describe("BoostController", func() { }) When("server version is newer or equal to 1.32.0", func() { BeforeEach(func() { - serverVersion = &version.Info{ - GitVersion: "v1.32.0", - } + serverVersion = "v1.32.0" }) It("doesn't error", func() { Expect(err).NotTo(HaveOccurred()) @@ -96,9 +93,7 @@ var _ = Describe("BoostController", func() { }) When("server version is less than 1.32.0", func() { BeforeEach(func() { - serverVersion = &version.Info{ - GitVersion: "v1.29.2", - } + serverVersion = "v1.29.2" }) It("doesn't error", func() { Expect(err).NotTo(HaveOccurred())