Skip to content

Commit 807225e

Browse files
committed
fix: k8s version parsing to match original
Signed-off-by: Borys Hulii <borys.hulii@bitvavo.com>
1 parent 9ec1679 commit 807225e

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

‎pkg/chartutil/capabilities.go‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ import (
1919
"fmt"
2020
"strconv"
2121

22-
"github.com/Masterminds/semver/v3"
2322
"k8s.io/client-go/kubernetes/scheme"
2423

2524
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2625
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
26+
k8sversion "k8s.io/apimachinery/pkg/util/version"
2727

2828
helmversion "helm.sh/helm/v3/internal/version"
2929
)
@@ -84,14 +84,16 @@ func (kv *KubeVersion) GitVersion() string { return kv.Version }
8484

8585
// ParseKubeVersion parses kubernetes version from string
8686
func ParseKubeVersion(version string) (*KubeVersion, error) {
87-
sv, err := semver.NewVersion(version)
87+
// Based on the original k8s version parser.
88+
// https://github.com/kubernetes/kubernetes/blob/b266ac2c3e42c2c4843f81e20213d2b2f43e450a/staging/src/k8s.io/apimachinery/pkg/util/version/version.go#L137
89+
sv, err := k8sversion.ParseGeneric(version)
8890
if err != nil {
8991
return nil, err
9092
}
9193
return &KubeVersion{
9294
Version: "v" + sv.String(),
93-
Major: strconv.FormatUint(sv.Major(), 10),
94-
Minor: strconv.FormatUint(sv.Minor(), 10),
95+
Major: strconv.FormatUint(uint64(sv.Major()), 10),
96+
Minor: strconv.FormatUint(uint64(sv.Minor()), 10),
9597
}, nil
9698
}
9799

‎pkg/chartutil/capabilities_test.go‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,19 @@ func TestParseKubeVersion(t *testing.T) {
8282
t.Errorf("Expected parsed KubeVersion.Minor to be 16, got %q", kv.Minor)
8383
}
8484
}
85+
86+
func TestParseKubeVersionSuffix(t *testing.T) {
87+
kv, err := ParseKubeVersion("v1.28+")
88+
if err != nil {
89+
t.Errorf("Expected v1.28+ to parse successfully")
90+
}
91+
if kv.Version != "v1.28" {
92+
t.Errorf("Expected parsed KubeVersion.Version to be v1.28, got %q", kv.String())
93+
}
94+
if kv.Major != "1" {
95+
t.Errorf("Expected parsed KubeVersion.Major to be 1, got %q", kv.Major)
96+
}
97+
if kv.Minor != "28" {
98+
t.Errorf("Expected parsed KubeVersion.Minor to be 28, got %q", kv.Minor)
99+
}
100+
}

0 commit comments

Comments
 (0)