| | |
| | | package controllers |
| | | |
| | | import ( |
| | | "encoding/json" |
| | | "fmt" |
| | | "github.com/gin-gonic/gin" |
| | | "io/ioutil" |
| | |
| | | |
| | | func AsMaVo() { |
| | | AsMaster() |
| | | ReplaceLineContentBySearch(StartScriptAsMaVo, Option, config.Server.ScriptPath, StartServerScript) |
| | | ReplaceLineContentBySearch(Option+StartScriptAsMaVo, Option, config.Server.ScriptPath, StartServerScript) |
| | | } |
| | | |
| | | func (sc *SeaweedfsController) RoleOfVolumeToMasterController(c *gin.Context) { |
| | | AsMaster() |
| | | ReplaceLineContentBySearch(StartScriptAsMaVo, Option, config.Server.ScriptPath, StartServerScript) |
| | | ReplaceLineContentBySearch(Option+StartScriptAsMaVo, Option, config.Server.ScriptPath, StartServerScript) |
| | | } |
| | | |
| | | func (sc *SeaweedfsController) RestartServerController(c *gin.Context) { |
| | |
| | | //重启所有节点服务并验证 |
| | | func Restart(ip string, timeOut int) { |
| | | url := "http://" + ip + ":7020/node/api-v/swfs/restartServer" |
| | | var info interface{} |
| | | httpRes, _ := http.Get(url) |
| | | defer httpRes.Body.Close() |
| | | body, _ := ioutil.ReadAll(httpRes.Body) |
| | | startupItem := "" |
| | | json.Unmarshal(body, &info) |
| | | res, ok := info.(map[string]interface{}) |
| | | if !ok { |
| | | fmt.Println("http response interface can not change map[string]interface{}") |
| | | } |
| | | startupItem := res["data"].(string) |
| | | if httpRes.StatusCode == 200 { |
| | | startupItem = string(body) |
| | | } |
| | | tick := time.Tick(1 * time.Second) |
| | | for countdown := timeOut; countdown > 0; countdown-- { |
| | | Verification(startupItem, ip) |
| | | result := Verification(startupItem, ip) |
| | | if result == true { |
| | | break |
| | | } |
| | | <-tick |
| | | } |
| | | } |
| | | |
| | | func Verification(startupItem string, ip string) { |
| | | //验证服务状态 |
| | | func Verification(startupItem string, ip string) bool { |
| | | resStatu := false |
| | | switch startupItem { |
| | | case StartScriptAsVolume: |
| | | verificationVolumeUrl := "http://" + ip + ":6700" |
| | | _, volume1Err := http.Get(verificationVolumeUrl) |
| | | if volume1Err == nil { |
| | | break |
| | | resStatu = true |
| | | } |
| | | case StartScriptAsMaster: |
| | | verificationMasterUrl := "http://" + ip + ":6333" |
| | | _, masterErr := http.Get(verificationMasterUrl) |
| | | if masterErr == nil { |
| | | break |
| | | resStatu = true |
| | | } |
| | | case StartScriptAsMaVo: |
| | | verificationMasterUrl := "http://" + ip + ":6333" |
| | |
| | | _, masterErr := http.Get(verificationMasterUrl) |
| | | _, volume1Err := http.Get(verificationVolumeUrl) |
| | | if masterErr == nil && volume1Err == nil { |
| | | break |
| | | resStatu = true |
| | | } |
| | | } |
| | | return resStatu |
| | | } |
| | | |
| | | //获取本地启动项 |
| | |
| | | if nowPeers == nil || len(nowPeers) == 0 { |
| | | return false |
| | | } |
| | | ReplaceLineContentBySearch(StartScriptAsVolume, Option, config.Server.ScriptPath, StartServerScript) |
| | | ReplaceLineContentBySearch(Option+StartScriptAsVolume, Option, config.Server.ScriptPath, StartServerScript) |
| | | ReplaceLineContentBySearch(GetNewPeers(), Peer, config.Server.ScriptPath, StartServerScript) |
| | | StartServer(config.Server.ScriptPath) |
| | | return true |