sunty
2020-04-15 08f01c51bbeaee94d88b21a3cf263c3698f4db5a
controllers/swfsControllers.go
@@ -1,6 +1,7 @@
package controllers
import (
   "encoding/json"
   "fmt"
   "github.com/gin-gonic/gin"
   "io/ioutil"
@@ -80,12 +81,12 @@
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) {
@@ -134,33 +135,44 @@
//重启所有节点服务并验证
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"
@@ -168,9 +180,10 @@
      _, masterErr := http.Get(verificationMasterUrl)
      _, volume1Err := http.Get(verificationVolumeUrl)
      if masterErr == nil && volume1Err == nil {
         break
         resStatu = true
      }
   }
   return resStatu
}
//获取本地启动项
@@ -226,7 +239,7 @@
   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