summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com>2020-02-29 17:16:51 +0800
committerGitHub <noreply@github.com>2020-02-29 17:16:51 +0800
commit9d0dd7fc1bfb30040c7830ceffd2cd4d3dbe09b6 (patch)
tree61729f9920a7c9b2c416fa35b6936c05ef7b4a57
parentMerge pull request #1512 from fisherxu/automated-cherry-pick-of-#1504-upstrea... (diff)
parentget latest version from release instead of set the default value (diff)
downloadkubeedge-origin/release-1.2.tar.gz
Merge pull request #1516 from fisherxu/automated-cherry-pick-of-#1514-upstream-release-1.2v1.2.1origin/release-1.2
Automated cherry pick of #1514: get latest version from release instead of set the default
-rw-r--r--keadm/cmd/keadm/app/cmd/cloud/init.go19
-rw-r--r--keadm/cmd/keadm/app/cmd/common/constant.go3
-rw-r--r--keadm/cmd/keadm/app/cmd/edge/join.go18
-rw-r--r--keadm/cmd/keadm/app/cmd/util/common.go41
-rw-r--r--keadm/cmd/keadm/app/cmd/util/ubuntuinstaller.go15
5 files changed, 68 insertions, 28 deletions
diff --git a/keadm/cmd/keadm/app/cmd/cloud/init.go b/keadm/cmd/keadm/app/cmd/cloud/init.go
index 9fe35e38e..ec8e7732a 100644
--- a/keadm/cmd/keadm/app/cmd/cloud/init.go
+++ b/keadm/cmd/keadm/app/cmd/cloud/init.go
@@ -48,6 +48,7 @@ func NewCloudInit(out io.Writer, init *types.InitOptions) *cobra.Command {
if init == nil {
init = newInitOptions()
}
+
tools := make(map[string]types.ToolsInstaller, 0)
flagVals := make(map[string]types.FlagData, 0)
@@ -61,7 +62,10 @@ func NewCloudInit(out io.Writer, init *types.InitOptions) *cobra.Command {
util.AddToolVals(f, flagVals)
}
cmd.Flags().VisitAll(checkFlags)
- Add2ToolsList(tools, flagVals, init)
+ err := Add2ToolsList(tools, flagVals, init)
+ if err != nil {
+ return err
+ }
return Execute(tools)
},
}
@@ -74,7 +78,6 @@ func NewCloudInit(out io.Writer, init *types.InitOptions) *cobra.Command {
func newInitOptions() *types.InitOptions {
var opts *types.InitOptions
opts = &types.InitOptions{}
- opts.KubeEdgeVersion = types.DefaultKubeEdgeVersion
opts.KubeConfig = types.DefaultKubeConfig
return opts
}
@@ -92,7 +95,7 @@ func addJoinOtherFlags(cmd *cobra.Command, initOpts *types.InitOptions) {
}
//Add2ToolsList Reads the flagData (containing val and default val) and join options to fill the list of tools.
-func Add2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string]types.FlagData, initOptions *types.InitOptions) {
+func Add2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string]types.FlagData, initOptions *types.InitOptions) error {
toolList["Kubernetes"] = &util.K8SInstTool{
Common: util.Common{
KubeConfig: initOptions.KubeConfig,
@@ -104,8 +107,13 @@ func Add2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string
flgData, ok := flagData[types.KubeEdgeVersion]
if ok {
kubeVer = util.CheckIfAvailable(flgData.Val.(string), flgData.DefVal.(string))
- } else {
- kubeVer = initOptions.KubeEdgeVersion
+ }
+ if kubeVer == "" {
+ latestVersion, err := util.GetLatestVersion()
+ if err != nil {
+ return err
+ }
+ kubeVer = latestVersion[1:]
}
toolList["Cloud"] = &util.KubeCloudInstTool{
Common: util.Common{
@@ -114,6 +122,7 @@ func Add2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string
Master: initOptions.Master,
},
}
+ return nil
}
//Execute the installation for each tool and start cloudcore
diff --git a/keadm/cmd/keadm/app/cmd/common/constant.go b/keadm/cmd/keadm/app/cmd/common/constant.go
index c561cc3db..cc48ca6b8 100644
--- a/keadm/cmd/keadm/app/cmd/common/constant.go
+++ b/keadm/cmd/keadm/app/cmd/common/constant.go
@@ -44,9 +44,6 @@ const (
// DefaultCertPath is the default certificate path in edge node
DefaultCertPath = "/etc/kubeedge/certs"
- // DefaultKubeEdgeVersion is the current default version of KubeEdge
- DefaultKubeEdgeVersion = "1.2.0"
-
// DefaultK8SMinimumVersion is the minimum version of K8S
DefaultK8SMinimumVersion = 11
diff --git a/keadm/cmd/keadm/app/cmd/edge/join.go b/keadm/cmd/keadm/app/cmd/edge/join.go
index f4495e41a..452918c1e 100644
--- a/keadm/cmd/keadm/app/cmd/edge/join.go
+++ b/keadm/cmd/keadm/app/cmd/edge/join.go
@@ -65,7 +65,10 @@ func NewEdgeJoin(out io.Writer, joinOptions *types.JoinOptions) *cobra.Command {
}
cmd.Flags().VisitAll(checkFlags)
- Add2ToolsList(tools, flagVals, joinOptions)
+ err := Add2ToolsList(tools, flagVals, joinOptions)
+ if err != nil {
+ return err
+ }
return Execute(tools)
},
}
@@ -101,20 +104,24 @@ func addJoinOtherFlags(cmd *cobra.Command, joinOptions *types.JoinOptions) {
func newJoinOptions() *types.JoinOptions {
opts := &types.JoinOptions{}
opts.CertPath = types.DefaultCertPath
- opts.KubeEdgeVersion = types.DefaultKubeEdgeVersion
return opts
}
//Add2ToolsList Reads the flagData (containing val and default val) and join options to fill the list of tools.
-func Add2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string]types.FlagData, joinOptions *types.JoinOptions) {
+func Add2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string]types.FlagData, joinOptions *types.JoinOptions) error {
var kubeVer string
flgData, ok := flagData[types.KubeEdgeVersion]
if ok {
kubeVer = util.CheckIfAvailable(flgData.Val.(string), flgData.DefVal.(string))
- } else {
- kubeVer = joinOptions.KubeEdgeVersion
+ }
+ if kubeVer == "" {
+ latestVersion, err := util.GetLatestVersion()
+ if err != nil {
+ return err
+ }
+ kubeVer = latestVersion[1:]
}
toolList["KubeEdge"] = &util.KubeEdgeInstTool{
Common: util.Common{
@@ -128,6 +135,7 @@ func Add2ToolsList(toolList map[string]types.ToolsInstaller, flagData map[string
}
toolList["MQTT"] = &util.MQTTInstTool{}
+ return nil
}
//Execute the instalation for each tool and start edgecore
diff --git a/keadm/cmd/keadm/app/cmd/util/common.go b/keadm/cmd/keadm/app/cmd/util/common.go
index 5baacd4ca..1761a3aeb 100644
--- a/keadm/cmd/keadm/app/cmd/util/common.go
+++ b/keadm/cmd/keadm/app/cmd/util/common.go
@@ -26,6 +26,7 @@ import (
"sync"
"github.com/spf13/pflag"
+ "k8s.io/apimachinery/pkg/util/json"
types "github.com/kubeedge/kubeedge/keadm/cmd/keadm/app/cmd/common"
)
@@ -63,8 +64,14 @@ const (
KubeEdgeCRDDownloadURL = "https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds"
InterfaceName = "eth0"
+
+ latestReleaseVersionURL = "https://api.github.com/repos/kubeedge/kubeedge/releases/latest"
)
+type latestReleaseVersion struct {
+ TagName string `json:"tag_name"`
+}
+
//AddToolVals gets the value and default values of each flags and collects them in temporary cache
func AddToolVals(f *pflag.Flag, flagData map[string]types.FlagData) {
flagData[f.Name] = types.FlagData{Val: f.Value.String(), DefVal: f.DefValue}
@@ -206,3 +213,37 @@ func IsCloudCore() (types.ModuleRunning, error) {
return types.NoneRunning, nil
}
+
+// GetLatestVersion return the latest non-prerelease, non-draft version of kubeedge in releases
+func GetLatestVersion() (string, error) {
+ //Download the tar from repo
+ versionURL := "curl -k " + latestReleaseVersionURL
+ cmd := exec.Command("sh", "-c", versionURL)
+ latestReleaseData, err := cmd.Output()
+ if err != nil {
+ return "", err
+ }
+
+ latestRelease := &latestReleaseVersion{}
+ err = json.Unmarshal(latestReleaseData, latestRelease)
+ if err != nil {
+ return "", err
+ }
+
+ return latestRelease.TagName, nil
+}
+
+// runCommandWithShell executes the given command with "sh -c".
+// It returns an error if the command outputs anything on the stderr.
+func runCommandWithShell(command string) (string, error) {
+ cmd := &Command{Cmd: exec.Command("sh", "-c", command)}
+ err := cmd.ExecuteCmdShowOutput()
+ if err != nil {
+ return "", err
+ }
+ errout := cmd.GetStdErr()
+ if errout != "" {
+ return "", fmt.Errorf("%s", errout)
+ }
+ return cmd.GetStdOutput(), nil
+}
diff --git a/keadm/cmd/keadm/app/cmd/util/ubuntuinstaller.go b/keadm/cmd/keadm/app/cmd/util/ubuntuinstaller.go
index 74ab16047..a01f381e2 100644
--- a/keadm/cmd/keadm/app/cmd/util/ubuntuinstaller.go
+++ b/keadm/cmd/keadm/app/cmd/util/ubuntuinstaller.go
@@ -274,21 +274,6 @@ func (u *UbuntuOS) IsKubeEdgeProcessRunning(proc string) (bool, error) {
return false, nil
}
-// runCommandWithShell executes the given command with "sh -c".
-// It returns an error if the command outputs anything on the stderr.
-func runCommandWithShell(command string) (string, error) {
- cmd := &Command{Cmd: exec.Command("sh", "-c", command)}
- err := cmd.ExecuteCmdShowOutput()
- if err != nil {
- return "", err
- }
- errout := cmd.GetStdErr()
- if errout != "" {
- return "", fmt.Errorf("%s", errout)
- }
- return cmd.GetStdOutput(), nil
-}
-
// build Config from flags
func BuildConfig(kubeConfig, master string) (conf *rest.Config, err error) {
config, err := clientcmd.BuildConfigFromFlags(master, kubeConfig)