Commit 87b7d166 authored by szh's avatar szh

重置节点 重置钱包 改为消息发送 接口即时返回成功

parent fe2a3c59
...@@ -9,6 +9,7 @@ import ( ...@@ -9,6 +9,7 @@ import (
"os" "os"
"os/exec" "os/exec"
"time" "time"
"path"
) )
var ( var (
...@@ -30,37 +31,51 @@ func RaspberryChan() { ...@@ -30,37 +31,51 @@ func RaspberryChan() {
case "ROLLBACK": case "ROLLBACK":
err := rollback() err := rollback()
if err == nil { if err == nil {
tlog.Info("rollback success", "err", nil) tlog.Info("RaspberryChan rollback success", "err", nil)
} else { } else {
tlog.Error("rollback fail ", "err", err) tlog.Error("RaspberryChan rollback fail ", "err", err)
} }
case "BACKUP": case "BACKUP":
err := backup() err := backup()
if err == nil { if err == nil {
tlog.Info("backup success", "err", nil) tlog.Info("RaspberryChan backup success", "err", nil)
} else { } else {
tlog.Error("backup fail ", "err", err) tlog.Error("RaspberryChan backup fail ", "err", err)
} }
case "RECOVER": case "RECOVER":
err := recoverNode() err := recoverNode()
if err == nil { if err == nil {
tlog.Info("recover success", "err", nil) tlog.Info("RaspberryChan recover success", "err", nil)
} else { } else {
tlog.Error("recover fail ", "err", err) tlog.Error("RaspberryChan recover fail ", "err", err)
} }
case "DELETEBACKUP": case "DELETEBACKUP":
err := deleteBackup() err := deleteBackup()
if err == nil { if err == nil {
tlog.Info("deleteBackup success", "err", nil) tlog.Info("RaspberryChan deleteBackup success", "err", nil)
} else { } else {
tlog.Error("deleteBackup fail ", "err", err) tlog.Error("RaspberryChan deleteBackup fail ", "err", err)
} }
case "RESTART": case "RESTART":
err := restartNode() err := restartNode()
if err == nil { if err == nil {
tlog.Info("deleteBackup success", "err", nil) tlog.Info("RaspberryChan deleteBackup success", "err", nil)
} else { } else {
tlog.Error("deleteBackup fail ", "err", err) tlog.Error("RaspberryChan deleteBackup fail ", "err", err)
}
case "RESET":
err := resetNode()
if err == nil {
tlog.Info("RaspberryChan resetNode success", "err", nil)
} else {
tlog.Error("RaspberryChan resetNode fail ", "err", err)
}
case "RESETWALLET":
err := resetWallet()
if err == nil {
tlog.Info("RaspberryChan resetWallet success", "err", nil)
} else {
tlog.Error("RaspberryChan resetWallet fail ", "err", err)
} }
} }
...@@ -248,6 +263,52 @@ func restartNode() error { ...@@ -248,6 +263,52 @@ func restartNode() error {
return nil return nil
} }
func resetNode() error {
BityuanFlag.Lock.Lock()
defer BityuanFlag.Lock.Unlock()
if btyPath == "" {
tlog.Error("btyPath empty", "err", "node not exists")
return errors.New("node not exists")
}
_, err := SafeCloseNode()
if err != nil {
return err
}
isrun := MakeSureBtyIsNotRun()
if isrun {
return errors.New("bty is running")
}
err = os.RemoveAll(fmt.Sprintf("%s/datadir", path.Dir(btyPath)))
if err != nil {
return err
}
StartProcess(setting.Chain33Pai.Auto)
return nil
}
func resetWallet() error {
BityuanFlag.Lock.Lock()
defer BityuanFlag.Lock.Unlock()
if btyPath == "" {
tlog.Error("btyPath empty", "err", "node not exists")
return errors.New("node not exists")
}
_, err := SafeCloseNode()
if err != nil {
return err
}
isrun := MakeSureBtyIsNotRun()
if isrun {
return errors.New("bty is running")
}
err = os.RemoveAll(fmt.Sprintf("%s/wallet", path.Dir(btyPath)))
if err != nil {
return err
}
StartProcess(setting.Chain33Pai.Auto)
return nil
}
func MakeSureBtyIsNotRun() bool { func MakeSureBtyIsNotRun() bool {
s := time.Now() s := time.Now()
defer func() { defer func() {
......
...@@ -16,7 +16,6 @@ import ( ...@@ -16,7 +16,6 @@ import (
"net/http" "net/http"
"os" "os"
"os/exec" "os/exec"
"path"
"reflect" "reflect"
"strconv" "strconv"
"strings" "strings"
...@@ -25,42 +24,8 @@ import ( ...@@ -25,42 +24,8 @@ import (
func ResetWallet(c *gin.Context) { func ResetWallet(c *gin.Context) {
appG := app.Gin{C: c} appG := app.Gin{C: c}
app.BityuanFlag.Lock.Lock() app.JobChan <- app.MsgType{Name: "RESETWALLET"}
defer app.BityuanFlag.Lock.Unlock() appG.Response(http.StatusOK, e.SUCCESS, "bityuan wallet reset")
if app.BityuanFlag.Flag {
appG.Response(http.StatusOK, e.TRY_LATER, "other job is busy,please try later")
return
}
app.BityuanFlag.Flag = true
if app.NodeError != nil {
tlog.Error(app.NodeError.Error())
appG.Response(http.StatusOK, e.NODE_ERROR, "node internal error,could not start node")
app.BityuanFlag.Flag = false
return
}
t, err := app.SafeCloseNode()
if err != nil || !t {
app.BityuanFlag.Flag = false
appG.Response(http.StatusOK, e.NODE_ERROR, err)
return
}
err = os.RemoveAll(fmt.Sprintf("%s/wallet", path.Dir(app.Bityuan.Path)))
if err != nil {
appG.Response(http.StatusOK, e.NODE_ERROR, "fail to remove wallet")
tlog.Error("ResetWallet", "remove error", err)
app.BityuanFlag.Flag = false
return
}
err = app.StartProcess(setting.Chain33Pai.Auto)
if err != nil {
appG.Response(http.StatusOK, e.NODE_ERROR, "fail to restart node")
tlog.Error("ResetWallet", "auto.sh error ", err)
app.BityuanFlag.Flag = false
return
}
appG.Response(http.StatusOK, e.SUCCESS, "reset complete")
app.BityuanFlag.Flag = false
} }
//钱包更新,只替换执行文件和配置文件 //钱包更新,只替换执行文件和配置文件
...@@ -189,36 +154,8 @@ func UpdateNodeNew(c *gin.Context) { ...@@ -189,36 +154,8 @@ func UpdateNodeNew(c *gin.Context) {
//重置节点只需要删除datadir 然后重启节点 //重置节点只需要删除datadir 然后重启节点
func ResetNode(c *gin.Context) { func ResetNode(c *gin.Context) {
appG := app.Gin{C: c} appG := app.Gin{C: c}
app.BityuanFlag.Lock.Lock() app.JobChan <- app.MsgType{Name: "RESET"}
defer app.BityuanFlag.Lock.Unlock() appG.Response(http.StatusOK, e.SUCCESS, "bityuan reset")
if app.BityuanFlag.Flag {
appG.Response(http.StatusOK, e.TRY_LATER, "other job is busy,please try later")
return
}
app.BityuanFlag.Flag = true
_, err := app.SafeCloseNode()
if err != nil {
appG.Response(http.StatusOK, e.NODE_ERROR, "node err")
app.BityuanFlag.Flag = false
return
}
err = os.RemoveAll(fmt.Sprintf("%s/datadir", path.Dir(app.Bityuan.Path)))
if err != nil {
app.BityuanFlag.Flag = false
tlog.Error("ResetNode", "remove datadir err", err)
appG.Response(http.StatusOK, e.RM_ERROR, "remove datadir err")
return
}
err = app.StartProcess(setting.Chain33Pai.Auto)
if err != nil {
tlog.Error("ResetNode", "start node err", err)
app.BityuanFlag.Flag = false
appG.Response(http.StatusOK, e.NODE_ERROR, "start auto sh err")
return
}
app.BityuanFlag.Flag = false
appG.Response(http.StatusOK, e.SUCCESS, "reset job ok")
} }
func UpdateDetail(c *gin.Context) { func UpdateDetail(c *gin.Context) {
......
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