diff options
| author | WillardHu <wei.hu@daocloud.io> | 2023-07-03 17:29:07 +0800 |
|---|---|---|
| committer | WillardHu <wei.hu@daocloud.io> | 2023-07-27 14:02:51 +0800 |
| commit | 6d35afb66c526e5acae65d496b97e28b7c2f5e85 (patch) | |
| tree | 8668c2db2c6ee4d1f4e680f3ed5aa9078268050a /keadm | |
| parent | Merge pull request #4884 from fisherxu/check-e2e (diff) | |
| download | kubeedge-6d35afb66c526e5acae65d496b97e28b7c2f5e85.tar.gz | |
Fixed the kubeedge-version flag does not take effect in the init & manifest generate command
Signed-off-by: WillardHu <wei.hu@daocloud.io>
Diffstat (limited to 'keadm')
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/cloud/init.go | 29 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/cloud/manifest.go | 27 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/common/constant.go | 4 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/helm/installer.go | 1 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/util/common.go | 23 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/util/common_test.go | 35 |
6 files changed, 67 insertions, 52 deletions
diff --git a/keadm/cmd/keadm/app/cmd/cloud/init.go b/keadm/cmd/keadm/app/cmd/cloud/init.go index 1be993d04..1ba6dd9e2 100644 --- a/keadm/cmd/keadm/app/cmd/cloud/init.go +++ b/keadm/cmd/keadm/app/cmd/cloud/init.go @@ -18,7 +18,6 @@ package cloud import ( "fmt" - "strings" "github.com/blang/semver" "github.com/spf13/cobra" @@ -77,7 +76,7 @@ func NewCloudInit() *cobra.Command { return cmd } -//newInitOptions will initialise new instance of options everytime +// newInitOptions will initialise new instance of options everytime func newInitOptions() *types.InitOptions { opts := &types.InitOptions{} opts.KubeConfig = types.DefaultKubeConfig @@ -118,35 +117,15 @@ func addForceOptionsFlags(cmd *cobra.Command, initOpts *types.InitOptions) { "Forced installing the cloud components without waiting.") } -//AddInit2ToolsList reads the flagData (containing val and default val) and join options to fill the list of tools. +// AddInit2ToolsList reads the flagData (containing val and default val) and join options to fill the list of tools. func AddInit2ToolsList(toolList map[string]types.ToolsInstaller, initOpts *types.InitOptions) error { - var latestVersion string - var kubeedgeVersion string - for i := 0; i < util.RetryTimes; i++ { - version, err := util.GetLatestVersion() - if err != nil { - fmt.Println("Failed to get the latest KubeEdge release version, error: ", err) - continue - } - if len(version) > 0 { - kubeedgeVersion = strings.TrimPrefix(version, "v") - latestVersion = version - break - } - } - if len(latestVersion) == 0 { - kubeedgeVersion = types.DefaultKubeEdgeVersion - fmt.Println("Failed to get the latest KubeEdge release version, will use default version: ", kubeedgeVersion) - } - common := util.Common{ - ToolVersion: semver.MustParse(kubeedgeVersion), + ToolVersion: semver.MustParse(util.GetHelmVersion(initOpts.KubeEdgeVersion, util.RetryTimes)), KubeConfig: initOpts.KubeConfig, } toolList["helm"] = &helm.KubeCloudHelmInstTool{ Common: common, AdvertiseAddress: initOpts.AdvertiseAddress, - KubeEdgeVersion: initOpts.KubeEdgeVersion, Manifests: initOpts.Manifests, Namespace: constants.SystemNamespace, DryRun: initOpts.DryRun, @@ -159,7 +138,7 @@ func AddInit2ToolsList(toolList map[string]types.ToolsInstaller, initOpts *types return nil } -//ExecuteInit the installation for each tool and start cloudcore +// ExecuteInit the installation for each tool and start cloudcore func ExecuteInit(toolList map[string]types.ToolsInstaller) error { return toolList["helm"].InstallTools() } diff --git a/keadm/cmd/keadm/app/cmd/cloud/manifest.go b/keadm/cmd/keadm/app/cmd/cloud/manifest.go index f4765ff76..44a8b81dd 100644 --- a/keadm/cmd/keadm/app/cmd/cloud/manifest.go +++ b/keadm/cmd/keadm/app/cmd/cloud/manifest.go @@ -18,7 +18,6 @@ package cloud import ( "fmt" - "strings" "github.com/blang/semver" "github.com/spf13/cobra" @@ -101,35 +100,15 @@ func addManifestsGenerateJoinOtherFlags(cmd *cobra.Command, initOpts *types.Init "Skip printing the contents of CRDs to stdout") } -//AddManifestsGenerate2ToolsList Reads the flagData (containing val and default val) and join options to fill the list of tools. +// AddManifestsGenerate2ToolsList Reads the flagData (containing val and default val) and join options to fill the list of tools. func AddManifestsGenerate2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string]types.FlagData, initOpts *types.InitOptions) error { - var latestVersion string - var kubeedgeVersion string - for i := 0; i < util.RetryTimes; i++ { - version, err := util.GetLatestVersion() - if err != nil { - fmt.Println("Failed to get the latest KubeEdge release version, error: ", err) - continue - } - if len(version) > 0 { - kubeedgeVersion = strings.TrimPrefix(version, "v") - latestVersion = version - break - } - } - if len(latestVersion) == 0 { - kubeedgeVersion = types.DefaultKubeEdgeVersion - fmt.Println("Failed to get the latest KubeEdge release version, will use default version: ", kubeedgeVersion) - } - common := util.Common{ - ToolVersion: semver.MustParse(kubeedgeVersion), + ToolVersion: semver.MustParse(util.GetHelmVersion(initOpts.KubeEdgeVersion, util.RetryTimes)), KubeConfig: initOpts.KubeConfig, } toolList["helm"] = &helm.KubeCloudHelmInstTool{ Common: common, AdvertiseAddress: initOpts.AdvertiseAddress, - KubeEdgeVersion: initOpts.KubeEdgeVersion, Manifests: initOpts.Manifests, Namespace: constants.SystemNamespace, DryRun: initOpts.DryRun, @@ -141,7 +120,7 @@ func AddManifestsGenerate2ToolsList(toolList map[string]types.ToolsInstaller, fl return nil } -//ExecuteManifestsGenerate executes the installation for helm +// ExecuteManifestsGenerate executes the installation for helm func ExecuteManifestsGenerate(toolList map[string]types.ToolsInstaller) error { return toolList["helm"].InstallTools() } diff --git a/keadm/cmd/keadm/app/cmd/common/constant.go b/keadm/cmd/keadm/app/cmd/common/constant.go index 686fc2fcb..c1af48223 100644 --- a/keadm/cmd/keadm/app/cmd/common/constant.go +++ b/keadm/cmd/keadm/app/cmd/common/constant.go @@ -53,8 +53,8 @@ const ( // RuntimeType is default runtime type RuntimeType = "runtimetype" - // DefaultKubeEdgeVersion is the default KubeEdge version - DefaultKubeEdgeVersion = "1.13.0" + // DefaultKubeEdgeVersion is the default KubeEdge version, it must have no prefix 'v' + DefaultKubeEdgeVersion = "1.14.0" // Token sets the token used when edge applying for the certificate Token = "token" diff --git a/keadm/cmd/keadm/app/cmd/helm/installer.go b/keadm/cmd/keadm/app/cmd/helm/installer.go index 19d2f7586..639bd33b9 100644 --- a/keadm/cmd/keadm/app/cmd/helm/installer.go +++ b/keadm/cmd/keadm/app/cmd/helm/installer.go @@ -58,7 +58,6 @@ var ( type KubeCloudHelmInstTool struct { util.Common AdvertiseAddress string - KubeEdgeVersion string Manifests string Namespace string Sets []string diff --git a/keadm/cmd/keadm/app/cmd/util/common.go b/keadm/cmd/keadm/app/cmd/util/common.go index e3f1eec4d..90888ef1c 100644 --- a/keadm/cmd/keadm/app/cmd/util/common.go +++ b/keadm/cmd/keadm/app/cmd/util/common.go @@ -310,6 +310,29 @@ func validateStableVersion(remoteVersion, clientVersion string) (string, error) return remoteVersion, nil } +// GetHelmVersion returns the verified version of Helm. If the verification fails, +// obtain the remote version first and then use the default value +func GetHelmVersion(version string, retryTimes int) string { + if kubeReleaseRegex.MatchString(version) { + return strings.TrimPrefix(version, "v") + } + + for i := 0; i < retryTimes; i++ { + v, err := GetLatestVersion() + if err != nil { + fmt.Println("Failed to get the latest KubeEdge release version, error: ", err) + continue + } + if v != "" { + // do not obtain remote version again + return GetHelmVersion(v, 0) + } + } + // returns default version + fmt.Println("Failed to get the latest KubeEdge release version, will use default version: ", types.DefaultKubeEdgeVersion) + return types.DefaultKubeEdgeVersion +} + // BuildConfig builds config from flags func BuildConfig(kubeConfig, master string) (conf *rest.Config, err error) { config, err := clientcmd.BuildConfigFromFlags(master, kubeConfig) diff --git a/keadm/cmd/keadm/app/cmd/util/common_test.go b/keadm/cmd/keadm/app/cmd/util/common_test.go index c8c3ea8d5..4e637a7c5 100644 --- a/keadm/cmd/keadm/app/cmd/util/common_test.go +++ b/keadm/cmd/keadm/app/cmd/util/common_test.go @@ -375,3 +375,38 @@ func TestValidateStableVersion(t *testing.T) { }) } } + +func TestGetHelmVersion(t *testing.T) { + cases := []struct { + name string + version string + retryTimes int // if zero, means don't obtant remote version + want string // if want is empty, means not check result + }{ + { + name: "get input version", + version: "v1.14.0", + want: "1.14.0", + }, + { + name: "get default version", + version: "1-14-0", + retryTimes: 0, + want: types.DefaultKubeEdgeVersion, + }, + { + name: "get remote version", + version: "1-14-0", + retryTimes: 1, + want: "", // obtain the remote version is not controllable + }, + } + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + res := GetHelmVersion(c.version, c.retryTimes) + if c.want != "" && c.want != res { + t.Fatalf("expected output: %s, got: %s", c.want, res) + } + }) + } +} |
