sunty
2020-04-15 08f01c51bbeaee94d88b21a3cf263c3698f4db5a
add server option
1个文件已修改
31 ■■■■ 已修改文件
controllers/swfsControllers.go 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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