summaryrefslogtreecommitdiff
path: root/keadm
diff options
context:
space:
mode:
authorWillardHu <wei.hu@daocloud.io>2023-07-03 17:29:07 +0800
committerWillardHu <wei.hu@daocloud.io>2023-07-27 14:02:51 +0800
commit6d35afb66c526e5acae65d496b97e28b7c2f5e85 (patch)
tree8668c2db2c6ee4d1f4e680f3ed5aa9078268050a /keadm
parentMerge pull request #4884 from fisherxu/check-e2e (diff)
downloadkubeedge-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.go29
-rw-r--r--keadm/cmd/keadm/app/cmd/cloud/manifest.go27
-rw-r--r--keadm/cmd/keadm/app/cmd/common/constant.go4
-rw-r--r--keadm/cmd/keadm/app/cmd/helm/installer.go1
-rw-r--r--keadm/cmd/keadm/app/cmd/util/common.go23
-rw-r--r--keadm/cmd/keadm/app/cmd/util/common_test.go35
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)
+ }
+ })
+ }
+}