From e12bca22ef82aa5a2df0448a4715b1a948604156 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期二, 07 四月 2020 14:57:38 +0800 Subject: [PATCH] first commit --- controllers/swfsControllers.go | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 179 insertions(+), 0 deletions(-) diff --git a/controllers/swfsControllers.go b/controllers/swfsControllers.go new file mode 100644 index 0000000..17d0b7b --- /dev/null +++ b/controllers/swfsControllers.go @@ -0,0 +1,179 @@ +package controllers + +import ( + "fmt" + "github.com/gin-gonic/gin" + "strings" + "test/config" + "test/util" + "time" +) + +type SeaweedfsController struct{} + +type SWFSInfo struct { + Role string `json:"role"` +} + +//淇敼 +func (sc *SeaweedfsController) UpdateSWFSServiceController(c *gin.Context) { + oldPeers := GetOldPeers() + newPeers := GetNewPeers() + UpdatePeers(oldPeers, newPeers) +} + +func (sc *SeaweedfsController) AddSWFSNodeController(c *gin.Context) { + var body SWFSInfo + c.BindJSON(&body) + role := body.Role + if role == "master" { + AsMaster() + } else if role == "volume" { + AsVolume() + } else { + + return + } + +} + +func (sc *SeaweedfsController) RestartMaster(c *gin.Context) { + end := "sh /opt/vasystem/script/seaweedfs_stop.sh" + start := "sh /opt/vasystem/script/seaweedfs_start.sh" + util.RunScript(end) + util.RunScript(start) +} + +func RequestMasterNodesOperation() { + nowPeers := GetNowPeersList() + coreThread := len(nowPeers)/100 + 1 + masterIp := make([]string, 0) + for i, val := range nowPeers { + ip := val.(string) + if (i+1)%coreThread == 0 { + masterIp = append(masterIp, strings.Split(ip, ":")[0]) + for _, val := range masterIp { + RestartOrtherMaster(val) + masterIp = append(masterIp[:0], masterIp[1:]...) + } + time.Sleep(time.Second * 2) + } else { + masterIp = append(masterIp, strings.Split(ip, ":")[0]) + if len(nowPeers) == i+1 { + for _, val := range masterIp { + RestartOrtherMaster(val) + } + break + } + continue + } + } +} + +func GetOldPeers() string { + str := "cat /opt/vasystem/seaweedfs_start.sh | grep peers=" + peers := strings.Split(util.RunScript(str), "\n")[0] + return peers +} + +func AsVolume() { + nowPeers := GetNowPeersList() + fmt.Println(nowPeers) +} + +func AsMaster() { + nowPeers := GetNowPeersList() + coreThread := len(nowPeers) / 100 + fmt.Println(coreThread) + +} + +func GetNowPeersList() []interface{} { + + getUrl := "http://" + config.Server.EsServerIp + ":" + config.Server.EsServerPort + "/" + config.BasicFS.IndexName + "/_search" + getJson := `{ + "query": { + "bool": { + "filter": [ + { + "term": { + "application":"nodeOperation" + } + } + ] + } + }, + "size": 1 +}` + + buf, _ := util.EsReq("POST", getUrl, []byte(getJson)) + source, _ := util.Sourcelist(buf) + //fmt.Println(source) + peers := source[0]["peers"].([]interface{}) + return peers +} + +func GetNewPeers() string { + + getUrl := "http://" + config.Server.EsServerIp + ":" + config.Server.EsServerPort + "/" + config.BasicFS.IndexName + "/_search" + getJson := `{ + "query": { + "bool": { + "filter": [ + { + "term": { + "application":"nodeOperation" + } + } + ] + } + }, + "size": 1 +}` + + buf, _ := util.EsReq("POST", getUrl, []byte(getJson)) + source, _ := util.Sourcelist(buf) + //fmt.Println(source) + peers := source[0]["peers"].([]interface{}) + fmt.Println(peers) + p := "peers=" + strings.Replace(strings.Trim(fmt.Sprint(peers), "[]"), " ", ",", -1) + return p +} + +func UpdatePeers(oldPeers string, newPeers string) { + str := "sed -ie 's/" + oldPeers + "/" + newPeers + "/g' /opt/vasystem/seaweedfs_start.sh" + util.RunScript(str) +} + +func AddNewMasterToPeers() (result bool) { + peer := config.Server.EsServerIp + ":6333" + addUrl := "http://" + config.Server.EsServerIp + ":" + config.Server.EsServerPort + "/" + config.BasicFS.IndexName + "/_update_by_query" + addJson := `{ + "script": { + "lang": "painless", + "inline": "ctx._source.peers.add(params.newpeer)", + "params": { + "newpeer": "` + peer + `" + } + }, + "query": { + "bool": { + "filter": [ + { + "term": { + "application": "nodeOperation" + } + } + ] + } + } +}` + buf, _ := util.EsReq("POST", addUrl, []byte(addJson)) + updateRes, _ := util.SourceUpdated(buf) + if updateRes == -1 { + result = false + } else { + result = true + } + return result +} -- Gitblit v1.8.0