Fixing regex for kubernetes version in kubeadm

This commit is contained in:
Peeyush Gupta 2019-12-25 16:26:44 +05:30
parent 6c1080b3ca
commit 49884bca30
2 changed files with 12 additions and 16 deletions

View File

@ -40,7 +40,7 @@ const (
var (
kubeReleaseBucketURL = "https://dl.k8s.io"
kubeReleaseRegex = regexp.MustCompile(`^v?(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)([-0-9a-zA-Z_\.+]*)?$`)
kubeReleaseLabelRegex = regexp.MustCompile(`^[[:lower:]]+(-[-\w_\.]+)?$`)
kubeReleaseLabelRegex = regexp.MustCompile(`(k8s-master|((latest|stable)+(-[1-9](\.[1-9]([0-9])?)?)?))\z`)
kubeBucketPrefixes = regexp.MustCompile(`^((release|ci|ci-cross)/)?([-\w_\.+]+)$`)
)
@ -61,6 +61,7 @@ var (
// latest (latest release, including alpha/beta)
// latest-1 (latest release in 1.x, including alpha/beta)
// latest-1.0 (and similarly 1.1, 1.2, 1.3, ...)
// k8s-master (latest cross build)
func KubernetesReleaseVersion(version string) (string, error) {
return kubernetesReleaseVersion(version, fetchFromURL)
}

View File

@ -116,14 +116,13 @@ func TestVersionFromNetwork(t *testing.T) {
currentVersion := normalizedBuildVersion(constants.CurrentKubernetesVersion.String())
cases := map[string]T{
"stable": {"stable-1", "v1.4.6", false, false}, // recursive pointer to stable-1
"stable-1": {"v1.4.6", "v1.4.6", false, false},
"stable-1.3": {"v1.3.10", "v1.3.10", false, false},
"latest": {"v1.6.0-alpha.0", "v1.6.0-alpha.0", false, false},
"latest-1.3": {"v1.3.11-beta.0", "v1.3.11-beta.0", false, false},
"empty": {"", currentVersion, true, false},
"garbage": {"<?xml version='1.0'?><Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message></Error>", currentVersion, true, false},
"unknown": {"The requested URL was not found on this server.", currentVersion, true, false},
"stable": {"stable-1", "v1.4.6", false, false}, // recursive pointer to stable-1
"stable-1": {"v1.4.6", "v1.4.6", false, false},
"stable-1.3": {"v1.3.10", "v1.3.10", false, false},
"latest": {"v1.6.0-alpha.0", "v1.6.0-alpha.0", false, false},
"latest-1.3": {"v1.3.11-beta.0", "v1.3.11-beta.0", false, false},
"latest-1.5": {"", currentVersion, true, false}, // fallback to currentVersion on fetcher error
"invalid-version": {"", "", false, true}, // invalid version cannot be parsed
}
for k, v := range cases {
@ -195,11 +194,10 @@ func TestSplitVersion(t *testing.T) {
{"v1.8.0-alpha.2.1231+afabd012389d53a", "https://dl.k8s.io/release", "v1.8.0-alpha.2.1231+afabd012389d53a", true},
{"release/v1.7.0", "https://dl.k8s.io/release", "v1.7.0", true},
{"release/latest-1.7", "https://dl.k8s.io/release", "latest-1.7", true},
// CI builds area, lookup actual builds at ci-cross/*.txt
// CI builds area
{"ci/latest", "https://dl.k8s.io/ci", "latest", true},
{"ci-cross/latest", "https://dl.k8s.io/ci-cross", "latest", true},
{"ci/k8s-master", "https://dl.k8s.io/ci", "k8s-master", true},
{"ci/latest-1.7", "https://dl.k8s.io/ci", "latest-1.7", true},
{"ci-cross/latest-1.7", "https://dl.k8s.io/ci-cross", "latest-1.7", true},
// unknown label in default (release) area: splitVersion validate only areas.
{"unknown-1", "https://dl.k8s.io/release", "unknown-1", true},
// unknown area, not valid input.
@ -238,9 +236,8 @@ func TestKubernetesIsCIVersion(t *testing.T) {
{"release/v1.0.0", false},
// CI builds
{"ci/latest-1", true},
{"ci-cross/latest", true},
{"ci/k8s-master", true},
{"ci/v1.9.0-alpha.1.123+acbcbfd53bfa0a", true},
{"ci-cross/v1.9.0-alpha.1.123+acbcbfd53bfa0a", true},
}
for _, tc := range cases {
@ -269,9 +266,7 @@ func TestCIBuildVersion(t *testing.T) {
{"release/0invalid", "", false},
// CI or custom builds
{"ci/v1.9.0-alpha.1.123+acbcbfd53bfa0a", "v1.9.0-alpha.1.123+acbcbfd53bfa0a", true},
{"ci-cross/v1.9.0-alpha.1.123+acbcbfd53bfa0a", "v1.9.0-alpha.1.123+acbcbfd53bfa0a", true},
{"ci/1.9.0-alpha.1.123+acbcbfd53bfa0a", "v1.9.0-alpha.1.123+acbcbfd53bfa0a", true},
{"ci-cross/1.9.0-alpha.1.123+acbcbfd53bfa0a", "v1.9.0-alpha.1.123+acbcbfd53bfa0a", true},
{"ci/0invalid", "", false},
}