mirror of https://github.com/kubernetes/kops.git
Fix channel version recommendations
We were recommending 1.5.2 based on the kops version, but then 1.5.4 based on that k8s version. Fix & add a test.
This commit is contained in:
parent
afd7332a7d
commit
5d9a5c611f
|
@ -28,8 +28,8 @@ spec:
|
||||||
- range: ">=1.5.0-alpha1"
|
- range: ">=1.5.0-alpha1"
|
||||||
recommendedVersion: 1.5.1
|
recommendedVersion: 1.5.1
|
||||||
#requiredVersion: 1.5.1
|
#requiredVersion: 1.5.1
|
||||||
kubernetesVersion: 1.5.4
|
kubernetesVersion: 1.5.6
|
||||||
- range: "<1.5.0"
|
- range: "<1.5.0"
|
||||||
recommendedVersion: 1.4.4
|
recommendedVersion: 1.4.4
|
||||||
#requiredVersion: 1.4.4
|
#requiredVersion: 1.4.4
|
||||||
kubernetesVersion: 1.4.9
|
kubernetesVersion: 1.4.12
|
||||||
|
|
|
@ -24,7 +24,7 @@ spec:
|
||||||
- range: ">=1.5.0-alpha1"
|
- range: ">=1.5.0-alpha1"
|
||||||
recommendedVersion: 1.5.1
|
recommendedVersion: 1.5.1
|
||||||
#requiredVersion: 1.5.1
|
#requiredVersion: 1.5.1
|
||||||
kubernetesVersion: 1.5.2
|
kubernetesVersion: 1.5.4
|
||||||
- range: "<1.5.0"
|
- range: "<1.5.0"
|
||||||
recommendedVersion: 1.4.4
|
recommendedVersion: 1.4.4
|
||||||
#requiredVersion: 1.4.4
|
#requiredVersion: 1.4.4
|
||||||
|
|
|
@ -304,6 +304,87 @@ func TestOrdering(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestChannelsSelfConsistent tests the channels have version recommendations that are consistent
|
||||||
|
// i.e. we don't recommend 1.5.2 and then recommend upgrading it to 1.5.4
|
||||||
|
func TestChannelsSelfConsistent(t *testing.T) {
|
||||||
|
|
||||||
|
grid := []struct {
|
||||||
|
KopsVersion string
|
||||||
|
Channel string
|
||||||
|
ExpectedKubernetesVersion string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
KopsVersion: "1.4.4",
|
||||||
|
Channel: "alpha",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
KopsVersion: "1.4.4",
|
||||||
|
Channel: "stable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
KopsVersion: "1.5.3",
|
||||||
|
Channel: "alpha",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
KopsVersion: "1.5.3",
|
||||||
|
Channel: "stable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
KopsVersion: "1.6.0-beta.1",
|
||||||
|
Channel: "alpha",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
KopsVersion: "1.6.0-beta.1",
|
||||||
|
Channel: "stable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
KopsVersion: "1.7.0",
|
||||||
|
Channel: "alpha",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
KopsVersion: "1.7.0",
|
||||||
|
Channel: "stable",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, g := range grid {
|
||||||
|
srcDir := "../../../channels/"
|
||||||
|
sourcePath := path.Join(srcDir, g.Channel)
|
||||||
|
sourceBytes, err := ioutil.ReadFile(sourcePath)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error reading sourcePath %q: %v", sourcePath, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
channel, err := kops.ParseChannel(sourceBytes)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to parse channel %s: %v", g.Channel, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
kubernetesVersion := kops.RecommendedKubernetesVersion(channel, g.KopsVersion)
|
||||||
|
|
||||||
|
if kubernetesVersion == nil {
|
||||||
|
t.Errorf("RecommendedKubernetesVersion returned nil for %s/%q", g.Channel, kubernetesVersion)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
versionInfo := kops.FindKubernetesVersionSpec(channel.Spec.KubernetesVersions, *kubernetesVersion)
|
||||||
|
if versionInfo == nil {
|
||||||
|
t.Errorf("FindKubernetesVersionSpec did not find version for %s/%q", g.Channel, *kubernetesVersion)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
recommended, err := versionInfo.FindRecommendedUpgrade(*kubernetesVersion)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("FindRecommendedUpgrade have error for %s/%q: %v", g.Channel, *kubernetesVersion, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if recommended != nil {
|
||||||
|
t.Errorf("Kops recommended kubernetesVersion is %q, but then k8s recommended kubernetesVersion is %q (%s)", *kubernetesVersion, *recommended, g.Channel)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func semverString(sv *semver.Version) string {
|
func semverString(sv *semver.Version) string {
|
||||||
if sv == nil {
|
if sv == nil {
|
||||||
return ""
|
return ""
|
||||||
|
|
Loading…
Reference in New Issue