Skip to content

Commit

Permalink
Merge pull request #1560 from 24sama/origin-release-2.3
Browse files Browse the repository at this point in the history
fix: calculate next version error
  • Loading branch information
ks-ci-bot authored Oct 21, 2022
2 parents b2eb650 + 778d1e8 commit 4a25a84
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 4 deletions.
17 changes: 13 additions & 4 deletions pkg/kubernetes/tasks.go
Original file line number Diff line number Diff line change
Expand Up @@ -616,12 +616,15 @@ func (c *CalculateNextVersion) Execute(_ connector.Runtime) error {
if !ok {
return errors.New("get upgrade plan Kubernetes version failed by pipeline cache")
}
nextVersionStr := calculateNextStr(currentVersion, planVersion)
nextVersionStr, err := calculateNextStr(currentVersion, planVersion)
if err != nil {
return errors.Wrap(err, "calculate next version failed")
}
c.KubeConf.Cluster.Kubernetes.Version = nextVersionStr
return nil
}

func calculateNextStr(currentVersion, desiredVersion string) string {
func calculateNextStr(currentVersion, desiredVersion string) (string, error) {
current := versionutil.MustParseSemantic(currentVersion)
target := versionutil.MustParseSemantic(desiredVersion)
var nextVersionMinor uint
Expand All @@ -632,7 +635,10 @@ func calculateNextStr(currentVersion, desiredVersion string) string {
}

if nextVersionMinor == target.Minor() {
return desiredVersion
if _, ok := files.FileSha256["kubeadm"]["amd64"][desiredVersion]; !ok {
return "", errors.Errorf("the target version %s is not supported", desiredVersion)
}
return desiredVersion, nil
} else {
nextVersionPatchList := make([]int, 0)
for supportVersionStr := range files.FileSha256["kubeadm"]["amd64"] {
Expand All @@ -644,9 +650,12 @@ func calculateNextStr(currentVersion, desiredVersion string) string {
sort.Ints(nextVersionPatchList)

nextVersion := current.WithMinor(nextVersionMinor)
if len(nextVersionPatchList) == 0 {
return "", errors.Errorf("Kubernetes minor version v%d.%d.x is not supported", nextVersion.Major(), nextVersion.Minor())
}
nextVersion = nextVersion.WithPatch(uint(nextVersionPatchList[len(nextVersionPatchList)-1]))

return fmt.Sprintf("v%s", nextVersion.String())
return fmt.Sprintf("v%s", nextVersion.String()), nil
}
}

Expand Down
73 changes: 73 additions & 0 deletions pkg/kubernetes/tasks_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/*
Copyright 2022 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package kubernetes

import (
"testing"
)

func Test_calculateNextStr(t *testing.T) {
tests := []struct {
currentVersion string
desiredVersion string
want string
wantErr bool
errMsg string
}{
{
currentVersion: "v1.21.5",
desiredVersion: "v1.22.5",
want: "v1.22.5",
wantErr: false,
},
{
currentVersion: "v1.21.5",
desiredVersion: "v1.23.5",
want: "v1.22.12",
wantErr: false,
},
{
currentVersion: "v1.17.5",
desiredVersion: "v1.18.5",
want: "",
wantErr: true,
errMsg: "the target version v1.18.5 is not supported",
},
{
currentVersion: "v1.17.5",
desiredVersion: "v1.21.5",
want: "",
wantErr: true,
errMsg: "Kubernetes minor version v1.18.x is not supported",
},
}
for _, tt := range tests {
t.Run("", func(t *testing.T) {
got, err := calculateNextStr(tt.currentVersion, tt.desiredVersion)
if (err != nil) != tt.wantErr {
t.Errorf("calculateNextStr() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("calculateNextStr() got = %v, want %v", got, tt.want)
}
if err != nil && err.Error() != tt.errMsg {
t.Errorf("calculateNextStr() error = %v, want %v", err, tt.errMsg)
}
})
}
}

0 comments on commit 4a25a84

Please sign in to comment.