From 373ac09cd8afa47ee35bfa8615fd65f4712cc7bd Mon Sep 17 00:00:00 2001 From: Mohammad Asif Siddiqui Date: Wed, 15 Dec 2021 02:51:46 +0530 Subject: [PATCH] Normalize the current Kubernetes versions for Openshift (#130) * Normalize the versions for Openshift * Add UT --- controllers/vdoconfig_controller.go | 8 +++- controllers/vdoconfig_controller_test.go | 48 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/controllers/vdoconfig_controller.go b/controllers/vdoconfig_controller.go index 5cb40da..ad3dbff 100644 --- a/controllers/vdoconfig_controller.go +++ b/controllers/vdoconfig_controller.go @@ -1120,7 +1120,9 @@ func (r *VDOConfigReconciler) compareVersions(minVersion, currentVersion, maxVer return false, err } - currentVer, err := version.NewVersion(currentVersion) + // This is done to normalize the versions having + sign like 1.23+ + normalizeCurrentVersion := strings.Replace(currentVersion, "+", "", -1) + currentVer, err := version.NewVersion(normalizeCurrentVersion) if err != nil { return false, err } @@ -1140,7 +1142,9 @@ func (r *VDOConfigReconciler) compareVersions(minVersion, currentVersion, maxVer // compareSkewVersions checks if the given version matches with the skew version func (r *VDOConfigReconciler) compareSkewVersions(currentVersion, supportedVersion string) (bool, error) { - currentVer, err := version.NewVersion(currentVersion) + // This is done to normalize the versions having + sign like 1.23+ + normalizeCurrentVersion := strings.Replace(currentVersion, "+", "", -1) + currentVer, err := version.NewVersion(normalizeCurrentVersion) if err != nil { return false, err } diff --git a/controllers/vdoconfig_controller_test.go b/controllers/vdoconfig_controller_test.go index 7cfc104..5f0b124 100644 --- a/controllers/vdoconfig_controller_test.go +++ b/controllers/vdoconfig_controller_test.go @@ -700,6 +700,54 @@ var _ = Describe("TestReconcileNodeProviderID", func() { }) +var _ = Describe("TestCompareVersions", func() { + Context("Compare version with boundaries", func() { + RegisterFailHandler(Fail) + + s := scheme.Scheme + s.AddKnownTypes(v1alpha1.GroupVersion, &v1alpha1.VDOConfig{}) + + r := VDOConfigReconciler{ + Client: fake2.NewClientBuilder().WithRuntimeObjects().Build(), + Logger: ctrllog.Log.WithName("VDOConfigControllerTest"), + Scheme: s, + } + + result, err := r.compareVersions("1.2.0", "1.3.0", "1.4.0") + Expect(err).ToNot(HaveOccurred()) + Expect(result).To(BeTrue()) + + result, err = r.compareVersions("1.2.0", "1.5.0", "1.4.0") + Expect(err).ToNot(HaveOccurred()) + Expect(result).To(BeFalse()) + + result, err = r.compareVersions("1.2.0", "1.2.0", "1.2.0") + Expect(err).ToNot(HaveOccurred()) + Expect(result).To(BeTrue()) + + result, err = r.compareVersions("1.2.0", "1.2.1", "1.2.0") + Expect(err).ToNot(HaveOccurred()) + Expect(result).To(BeFalse()) + + result, err = r.compareVersions("1.2.0", "1.2+", "1.2.2") + Expect(err).ToNot(HaveOccurred()) + Expect(result).To(BeTrue()) + + result, err = r.compareSkewVersions("1.2.0", "1.2.0") + Expect(err).ToNot(HaveOccurred()) + Expect(result).To(BeTrue()) + + result, err = r.compareSkewVersions("1.2.0", "1.1.0") + Expect(err).ToNot(HaveOccurred()) + Expect(result).To(BeFalse()) + + result, err = r.compareSkewVersions("1.2+", "1.2.0") + Expect(err).ToNot(HaveOccurred()) + Expect(result).To(BeTrue()) + + }) +}) + var _ = Describe("TestReconcileNodeLabel", func() { node1 := v12.Node{ ObjectMeta: metav1.ObjectMeta{Name: "test-node1"},