Commit 25ceb096 authored by ligaishun's avatar ligaishun

Update node.go

parent 5d497e3e
...@@ -19,53 +19,61 @@ var flag bool//判断是否正在更新 ...@@ -19,53 +19,61 @@ var flag bool//判断是否正在更新
func ResetWallet(c *gin.Context) { func ResetWallet(c *gin.Context) {
appG := app.Gin{C: c} appG := app.Gin{C: c}
if app.NodeError!=nil{ if app.NodeError!=nil{
appG.Response(http.StatusOK, e.ERROR, app.NodeError.Error()) log.Println(app.NodeError.Error())
appG.Response(http.StatusOK, e.NODE_ERROR,"node internal error,could not start node")
return return
} }
cmd:=exec.Command("kill","-9",app.Wallet.Pid) cmd:=exec.Command("kill","-9",app.Bityuan.Pid)
err:=cmd.Start() err:=cmd.Start()
if err!=nil{ if err!=nil{
appG.Response(http.StatusOK, e.ERROR, "fail to reset wallet") appG.Response(http.StatusOK, e.ENV_ERROR, "fail to reset wallet")
log.Fatalln(err) log.Fatalln(err)
return return
} }
err=os.RemoveAll(fmt.Sprintf(path.Dir(app.Wallet.Path),"/wallet")) err=os.RemoveAll(fmt.Sprintf("%s/wallet",path.Dir(app.Bityuan.Path)))
if err!=nil{ if err!=nil{
appG.Response(http.StatusOK, e.ERROR, "fail to reset wallet") appG.Response(http.StatusOK, e.NODE_ERROR, "fail to reset wallet")
log.Fatalln(err) log.Fatalln(err)
return return
} }
err=app.StartProcess(setting.Chain33Pai.Auto) err=app.StartProcess(setting.Chain33Pai.Auto)
if err!=nil{ if err!=nil{
appG.Response(http.StatusOK, e.ERROR,"fail to restart node") appG.Response(http.StatusOK, e.NODE_ERROR,"fail to restart node")
log.Fatalln(err) log.Fatalln(err)
return return
} }
appG.Response(http.StatusOK, e.SUCCESS,nil) appG.Response(http.StatusOK, e.SUCCESS,"reset complete")
} }
func UpdateNode(c *gin.Context){ func UpdateNode(c *gin.Context){
appG := app.Gin{C: c} appG := app.Gin{C: c}
if flag{ if flag{
appG.Response(http.StatusOK,e.SUCCESS,"node is updating") appG.Response(http.StatusOK,e.SUCCESS_RUNNING,"node is updating")
}
if app.NodeError!=nil{
appG.Response(http.StatusOK, e.NODE_ERROR,"node internal error,could not start node")
return
} }
setting.FreshVersion() setting.FreshVersion()
app.UpdateInfo.Status=false
app.UpdateInfo.Info="updating..."
latestVersion:=app.GetLatestVersion() latestVersion:=app.GetLatestVersion()
app.UpdateInfo.Status=false
if latestVersion==setting.BityuanSetting.Version{ if latestVersion==setting.BityuanSetting.Version{
app.UpdateInfo.Info="current version is latest"
appG.Response(http.StatusOK,e.SUCCESS,"current version is latest") appG.Response(http.StatusOK,e.SUCCESS,"current version is latest")
return return
} }
if flag{ if flag{
appG.Response(http.StatusOK,e.SUCCESS,"node is updating") app.UpdateInfo.Info="Updating..."
appG.Response(http.StatusOK,e.SUCCESS_RUNNING,"node is updating")
return return
} }
if latestVersion==""{ if latestVersion==""{
flag=false flag=false
appG.Response(http.StatusOK,e.ERROR,"network error") app.UpdateInfo.Info="network error"
appG.Response(http.StatusOK,e.NETWORK_ERROR,"network error,please checkout your network then try again")
return return
} }
appG.Response(http.StatusOK,e.SUCCESS,"update job started") appG.Response(http.StatusOK,e.SUCCESS,"update job started")
...@@ -77,18 +85,18 @@ func UpdateNode(c *gin.Context){ ...@@ -77,18 +85,18 @@ func UpdateNode(c *gin.Context){
app.UpdateInfo.Info=err.Error() app.UpdateInfo.Info=err.Error()
return return
} }
app.Copy(setting.BityuanSetting.Name,setting.BityuanSetting.Path) app.Copy(setting.BityuanSetting.Name,app.Bityuan.Path)
app.Copy(setting.BityuanSetting.Name+"-cli",setting.BityuanSetting.Path) app.Copy(fmt.Sprintf("%s-cli",setting.BityuanSetting.Name),app.Bityuan.Path)
os.Chdir("..") os.Chdir("..")
os.RemoveAll("bityuan") os.RemoveAll(setting.BityuanSetting.Name)
kill:=exec.Command("kill","-9",app.Wallet.Pid) kill:=exec.Command("kill","-9",app.Bityuan.Pid)
kill.Start() kill.Start()
err=kill.Wait() err=kill.Wait()
if err!=nil{ if err!=nil{
flag=false flag=false
app.UpdateInfo.Info="fail to update node " app.UpdateInfo.Info="fail to update node "
return return
} }
err=app.StartProcess(setting.Chain33Pai.Auto) err=app.StartProcess(setting.Chain33Pai.Auto)
if err!=nil{ if err!=nil{
flag=false flag=false
...@@ -106,7 +114,7 @@ func ResetNode(c* gin.Context){ ...@@ -106,7 +114,7 @@ func ResetNode(c* gin.Context){
app.UpdateInfo.Status=false app.UpdateInfo.Status=false
app.UpdateInfo.Info="updating..." app.UpdateInfo.Info="updating..."
if flag{ if flag{
appG.Response(http.StatusOK,e.SUCCESS,"node is resetting") appG.Response(http.StatusOK,e.SUCCESS_RUNNING,"node is resetting")
return return
} }
appG.Response(http.StatusOK,e.SUCCESS,"reset job started") appG.Response(http.StatusOK,e.SUCCESS,"reset job started")
...@@ -118,17 +126,19 @@ func ResetNode(c* gin.Context){ ...@@ -118,17 +126,19 @@ func ResetNode(c* gin.Context){
app.UpdateInfo.Info = err.Error() app.UpdateInfo.Info = err.Error()
return return
} }
app.Copy(setting.BityuanSetting.Name, path.Dir(setting.BityuanSetting.Path))
app.Copy(setting.BityuanSetting.Name, path.Dir(setting.BityuanSetting.Path))//pro
app.Copy(setting.BityuanSetting.Name+"-cli", path.Dir(setting.BityuanSetting.Path)) app.Copy(setting.BityuanSetting.Name+"-cli", path.Dir(setting.BityuanSetting.Path))
os.Chdir("..") os.Chdir("..")//make操作进入了该目录
os.RemoveAll("bityuan") os.RemoveAll(setting.BityuanSetting.Name)
os.Chdir(setting.BityuanSetting.Path) //os.Chdir(setting.BityuanSetting.Path)
os.RemoveAll("datadir") os.RemoveAll(fmt.Sprint(app.Bityuan.Path,"/datadir"))
os.Chdir(setting.Chain33Pai.Path) //os.Chdir(setting.Chain33Pai.Path)
kill := exec.Command("kill", "-9", app.Wallet.Pid) kill := exec.Command("kill", "-9", app.Bityuan.Pid)
//start := exec.Command(path.Dir(app.Wallet.Path) + "/" + app.Wallet.PName) //start := exec.Command(path.Dir(app.Wallet.Path) + "/" + app.Wallet.PName)
err=kill.Start() err=kill.Start()
if err != nil { if err != nil {
app.UpdateInfo.Info = fmt.Sprintf("fail to reset node:%s",err.Error()) app.UpdateInfo.Info = fmt.Sprintf("fail to reset node:%s",err.Error())
return return
} }
...@@ -155,25 +165,34 @@ func ResetNode(c* gin.Context){ ...@@ -155,25 +165,34 @@ func ResetNode(c* gin.Context){
func UpdateDetail(c* gin.Context){ func UpdateDetail(c* gin.Context){
appG := app.Gin{C: c} appG := app.Gin{C: c}
if flag{
appG.Response(http.StatusOK,e.SUCCESS_RUNNING,app.UpdateInfo)
return
}
appG.Response(http.StatusOK,e.SUCCESS,app.UpdateInfo) appG.Response(http.StatusOK,e.SUCCESS,app.UpdateInfo)
} }
//get current version and latest version //get current version and latest version
func Version(c* gin.Context){ func Version(c* gin.Context){
appG := app.Gin{C: c} appG := app.Gin{C: c}
setting.FreshVersion()
latestVersion:=app.GetLatestVersion()
if latestVersion==""{
appG.Response(http.StatusOK,e.NETWORK_ERROR,"network error,please try again")
return
}
appG.Response(http.StatusOK,e.SUCCESS,gin.H{ appG.Response(http.StatusOK,e.SUCCESS,gin.H{
"current":setting.BityuanSetting.Version, "current":setting.BityuanSetting.Version,
"latest" :app.GetLatestVersion(), "latest" :latestVersion,
}) })
} }
func NodeInfo(c *gin.Context){ func NodeInfo(c *gin.Context){
appG:=app.Gin{C:c} appG:=app.Gin{C:c}
if app.NodeError!=nil{ if app.NodeError!=nil{
appG.Response(http.StatusOK,e.ERROR,app.NodeError.Error()) appG.Response(http.StatusOK,e.NODE_ERROR,"node down")
return return
} }
appG.Response(http.StatusOK,e.SUCCESS,"node is running") appG.Response(http.StatusOK,e.SUCCESS,"node is running")
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment