From 6a2f78ef0f3c8e0497095da831415f4e672dc14a Mon Sep 17 00:00:00 2001 From: AS! <857949825@qq.com> Date: Sat, 12 Oct 2024 23:07:35 +0800 Subject: [PATCH] Improve the readability of some codes (#6220) --- pkg/controller/core/util.go | 59 ++++++++++++++----------------------- 1 file changed, 22 insertions(+), 37 deletions(-) diff --git a/pkg/controller/core/util.go b/pkg/controller/core/util.go index a5eadf725..647e6d58d 100644 --- a/pkg/controller/core/util.go +++ b/pkg/controller/core/util.go @@ -45,31 +45,7 @@ func getRecommendedExtensionVersion(versions []corev1alpha1.ExtensionVersion, k8 var matchedVersions []*semver.Version for _, v := range versions { - var kubeVersionMatched, ksVersionMatched bool - - if v.Spec.KubeVersion == "" { - kubeVersionMatched = true - } else { - targetKubeVersion, err := semver.NewConstraint(v.Spec.KubeVersion) - if err != nil { - // If the semver is invalid, just ignore it. - klog.Warningf("failed to parse Kubernetes version constraints: kubeVersion: %s, err: %s", v.Spec.KubeVersion, err) - continue - } - kubeVersionMatched = targetKubeVersion.Check(k8sVersion) - } - - if v.Spec.KSVersion == "" { - ksVersionMatched = true - } else { - targetKSVersion, err := semver.NewConstraint(v.Spec.KSVersion) - if err != nil { - klog.Warningf("failed to parse KubeSphere version constraints: ksVersion: %s, err: %s", v.Spec.KSVersion, err) - continue - } - ksVersionMatched = targetKSVersion.Check(ksVersion) - } - + kubeVersionMatched, ksVersionMatched := matchVersionConstraints(v, k8sVersion, ksVersion) if kubeVersionMatched && ksVersionMatched { targetVersion, err := semver.NewVersion(v.Spec.Version) if err != nil { @@ -91,6 +67,21 @@ func getRecommendedExtensionVersion(versions []corev1alpha1.ExtensionVersion, k8 return matchedVersions[0].Original(), nil } +func matchVersionConstraints(v corev1alpha1.ExtensionVersion, k8sVersion, ksVersion *semver.Version) (bool, bool) { + kubeVersionMatched := v.Spec.KubeVersion == "" || checkVersionConstraint(v.Spec.KubeVersion, k8sVersion) + ksVersionMatched := v.Spec.KSVersion == "" || checkVersionConstraint(v.Spec.KSVersion, ksVersion) + return kubeVersionMatched, ksVersionMatched +} + +func checkVersionConstraint(constraint string, version *semver.Version) bool { + targetVersion, err := semver.NewConstraint(constraint) + if err != nil { + klog.Warningf("failed to parse version constraints: %s, err: %s", constraint, err) + return false + } + return targetVersion.Check(version) +} + func getLatestExtensionVersion(versions []corev1alpha1.ExtensionVersion) *corev1alpha1.ExtensionVersion { if len(versions) == 0 { return nil @@ -101,19 +92,13 @@ func getLatestExtensionVersion(versions []corev1alpha1.ExtensionVersion) *corev1 for i := range versions { currSemver, err := semver.NewVersion(versions[i].Spec.Version) - if err == nil { - if latestSemver == nil { - // the first valid semver - latestSemver = currSemver - latestVersion = &versions[i] - } else if latestSemver.LessThan(currSemver) { - // find a newer valid semver - latestSemver = currSemver - latestVersion = &versions[i] - } - } else { - // If the semver is invalid, just ignore it. + if err != nil { klog.Warningf("parse version failed, extension version: %s, err: %s", versions[i].Name, err) + continue + } + if latestSemver == nil || latestSemver.LessThan(currSemver) { + latestSemver = currSemver + latestVersion = &versions[i] } } return latestVersion