Skip to content

Commit

Permalink
Merge pull request #16123 from rifelpet/parse-version
Browse files Browse the repository at this point in the history
Fix parsing of newer kubernetes version URLs
  • Loading branch information
k8s-ci-robot authored Nov 23, 2023
2 parents c0cc3bf + e108c3b commit 634423f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 66 deletions.
76 changes: 10 additions & 66 deletions pkg/apis/kops/util/versions.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,80 +18,24 @@ package util

import (
"fmt"
"strings"
"regexp"
"strconv"

"github.com/blang/semver/v4"
"k8s.io/klog/v2"
)

var versionURLPattern = regexp.MustCompile(`/v1\.([\d]+)\.`)

func ParseKubernetesVersion(version string) (*semver.Version, error) {
sv, err := semver.ParseTolerant(version)
if err != nil {
v := strings.Trim(version, "v")
if strings.HasPrefix(v, "1.3.") {
sv = semver.Version{Major: 1, Minor: 3}
} else if strings.HasPrefix(v, "1.4.") {
sv = semver.Version{Major: 1, Minor: 4}
} else if strings.HasPrefix(v, "1.5.") {
sv = semver.Version{Major: 1, Minor: 5}
} else if strings.HasPrefix(v, "1.6.") {
sv = semver.Version{Major: 1, Minor: 6}
} else if strings.HasPrefix(v, "1.7.") {
sv = semver.Version{Major: 1, Minor: 7}
} else if strings.Contains(v, "/v1.3.") {
sv = semver.Version{Major: 1, Minor: 3}
} else if strings.Contains(v, "/v1.4.") {
sv = semver.Version{Major: 1, Minor: 4}
} else if strings.Contains(v, "/v1.5.") {
sv = semver.Version{Major: 1, Minor: 5}
} else if strings.Contains(v, "/v1.6.") {
sv = semver.Version{Major: 1, Minor: 6}
} else if strings.Contains(v, "/v1.7.") {
sv = semver.Version{Major: 1, Minor: 7}
} else if strings.Contains(v, "/v1.8.") {
sv = semver.Version{Major: 1, Minor: 8}
} else if strings.Contains(v, "/v1.9.") {
sv = semver.Version{Major: 1, Minor: 9}
} else if strings.Contains(v, "/v1.10.") {
sv = semver.Version{Major: 1, Minor: 10}
} else if strings.Contains(v, "/v1.11.") {
sv = semver.Version{Major: 1, Minor: 11}
} else if strings.Contains(v, "/v1.12.") {
sv = semver.Version{Major: 1, Minor: 12}
} else if strings.Contains(v, "/v1.13.") {
sv = semver.Version{Major: 1, Minor: 13}
} else if strings.Contains(v, "/v1.14.") {
sv = semver.Version{Major: 1, Minor: 14}
} else if strings.Contains(v, "/v1.15.") {
sv = semver.Version{Major: 1, Minor: 15}
} else if strings.Contains(v, "/v1.16.") {
sv = semver.Version{Major: 1, Minor: 16}
} else if strings.Contains(v, "/v1.17.") {
sv = semver.Version{Major: 1, Minor: 17}
} else if strings.Contains(v, "/v1.18.") {
sv = semver.Version{Major: 1, Minor: 18}
} else if strings.Contains(v, "/v1.19.") {
sv = semver.Version{Major: 1, Minor: 19}
} else if strings.Contains(v, "/v1.20.") {
sv = semver.Version{Major: 1, Minor: 20}
} else if strings.Contains(v, "/v1.21.") {
sv = semver.Version{Major: 1, Minor: 21}
} else if strings.Contains(v, "/v1.22.") {
sv = semver.Version{Major: 1, Minor: 22}
} else if strings.Contains(v, "/v1.23.") {
sv = semver.Version{Major: 1, Minor: 23}
} else if strings.Contains(v, "/v1.24.") {
sv = semver.Version{Major: 1, Minor: 24}
} else if strings.Contains(v, "/v1.25.") {
sv = semver.Version{Major: 1, Minor: 25}
} else if strings.Contains(v, "/v1.26.") {
sv = semver.Version{Major: 1, Minor: 26}
} else if strings.Contains(v, "/v1.27.") {
sv = semver.Version{Major: 1, Minor: 27}
} else if strings.Contains(v, "/v1.28.") {
sv = semver.Version{Major: 1, Minor: 28}
} else if strings.Contains(v, "/v1.29.") {
sv = semver.Version{Major: 1, Minor: 29}
if submatch := versionURLPattern.FindStringSubmatch(version); len(submatch) >= 2 {
minor, err := strconv.Atoi(submatch[1])
if err != nil {
return nil, fmt.Errorf("failed to parse kubernetes version (%s): %w", version, err)
}
sv = semver.Version{Major: 1, Minor: uint64(minor)}
} else {
klog.Errorf("unable to parse Kubernetes version %q", version)
return nil, fmt.Errorf("unable to parse kubernetes version %q", version)
Expand Down
8 changes: 8 additions & 0 deletions pkg/apis/kops/util/versions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ func Test_ParseKubernetesVersion(t *testing.T) {
Patch: 0,
},
},
{
version: "https://storage.googleapis.com/k8s-release-dev/ci/v1.30.0-alpha.0.5+d61cbac69aae97",
expected: &semver.Version{
Major: 1,
Minor: 30,
Patch: 0,
},
},
{
version: "",
expectedError: fmt.Errorf("unable to parse kubernetes version \"\""),
Expand Down

0 comments on commit 634423f

Please sign in to comment.