uses a more resilient way to get branch name from version
This commit is contained in:
		| @@ -25,7 +25,7 @@ import ( | |||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/features" | 	"k8s.io/kubernetes/cmd/kubeadm/app/features" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns" | 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns" | ||||||
| 	etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd" | 	etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd" | ||||||
| 	"k8s.io/kubernetes/pkg/util/version" | 	versionutil "k8s.io/kubernetes/pkg/util/version" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Upgrade defines an upgrade possibility to upgrade from a current version to a new one | // Upgrade defines an upgrade possibility to upgrade from a current version to a new one | ||||||
| @@ -279,22 +279,23 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA | |||||||
| } | } | ||||||
|  |  | ||||||
| func getBranchFromVersion(version string) string { | func getBranchFromVersion(version string) string { | ||||||
| 	return strings.TrimPrefix(version, "v")[:4] | 	v := versionutil.MustParseGeneric(version) | ||||||
|  | 	return fmt.Sprintf("%d.%d", v.Major(), v.Minor()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func patchVersionBranchExists(clusterVersion, stableVersion *version.Version) bool { | func patchVersionBranchExists(clusterVersion, stableVersion *versionutil.Version) bool { | ||||||
| 	return stableVersion.AtLeast(clusterVersion) | 	return stableVersion.AtLeast(clusterVersion) | ||||||
| } | } | ||||||
|  |  | ||||||
| func patchUpgradePossible(clusterVersion, patchVersion *version.Version) bool { | func patchUpgradePossible(clusterVersion, patchVersion *versionutil.Version) bool { | ||||||
| 	return clusterVersion.LessThan(patchVersion) | 	return clusterVersion.LessThan(patchVersion) | ||||||
| } | } | ||||||
|  |  | ||||||
| func rcUpgradePossible(clusterVersion, previousBranchLatestVersion *version.Version) bool { | func rcUpgradePossible(clusterVersion, previousBranchLatestVersion *versionutil.Version) bool { | ||||||
| 	return strings.HasPrefix(previousBranchLatestVersion.PreRelease(), "rc") && clusterVersion.LessThan(previousBranchLatestVersion) | 	return strings.HasPrefix(previousBranchLatestVersion.PreRelease(), "rc") && clusterVersion.LessThan(previousBranchLatestVersion) | ||||||
| } | } | ||||||
|  |  | ||||||
| func minorUpgradePossibleWithPatchRelease(stableVersion, patchVersion *version.Version) bool { | func minorUpgradePossibleWithPatchRelease(stableVersion, patchVersion *versionutil.Version) bool { | ||||||
| 	return patchVersion.LessThan(stableVersion) | 	return patchVersion.LessThan(stableVersion) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -826,3 +826,56 @@ func TestKubeletUpgrade(t *testing.T) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func TestGetBranchFromVersion(t *testing.T) { | ||||||
|  | 	testCases := []struct { | ||||||
|  | 		version         string | ||||||
|  | 		expectedVersion string | ||||||
|  | 	}{ | ||||||
|  | 		{ | ||||||
|  | 			version:         "v1.9.5", | ||||||
|  | 			expectedVersion: "1.9", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			version:         "v1.9.0-alpha.2", | ||||||
|  | 			expectedVersion: "1.9", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			version:         "v1.9.0-beta.0", | ||||||
|  | 			expectedVersion: "1.9", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			version:         "v1.9.0-rc.1", | ||||||
|  | 			expectedVersion: "1.9", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			version:         "v1.12.5", | ||||||
|  | 			expectedVersion: "1.12", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			version:         "v1.11.0-alpha.0", | ||||||
|  | 			expectedVersion: "1.11", | ||||||
|  | 		}, | ||||||
|  |  | ||||||
|  | 		{ | ||||||
|  | 			version:         "v1.11.0-beta.1", | ||||||
|  | 			expectedVersion: "1.11", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			version:         "v1.11.0-rc.0", | ||||||
|  | 			expectedVersion: "1.11", | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			version:         "1.12.5", | ||||||
|  | 			expectedVersion: "1.12", | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for _, tc := range testCases { | ||||||
|  | 		v := getBranchFromVersion(tc.version) | ||||||
|  | 		if v != tc.expectedVersion { | ||||||
|  | 			t.Errorf("expected version %s, got %s", tc.expectedVersion, v) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Di Xu
					Di Xu