diff options
| author | KubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com> | 2020-02-29 17:16:51 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-29 17:16:51 +0800 |
| commit | 9d0dd7fc1bfb30040c7830ceffd2cd4d3dbe09b6 (patch) | |
| tree | 61729f9920a7c9b2c416fa35b6936c05ef7b4a57 | |
| parent | Merge pull request #1512 from fisherxu/automated-cherry-pick-of-#1504-upstrea... (diff) | |
| parent | get latest version from release instead of set the default value (diff) | |
| download | kubeedge-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.go | 19 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/common/constant.go | 3 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/edge/join.go | 18 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/util/common.go | 41 | ||||
| -rw-r--r-- | keadm/cmd/keadm/app/cmd/util/ubuntuinstaller.go | 15 |
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) |
