zhangzengfei
2023-10-24 c5654846d3b8b002284dee57aa50e95d67649f0e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package controllers
 
import (
    "fmt"
    "time"
    "vamicro/config"
    "vamicro/system-service/sys"
    "vamicro/system-service/util"
 
    "basic.com/valib/bhomeclient.git"
    "basic.com/valib/logger.git"
)
 
type WeedInfo struct {
    ScriptPath         string   `json:"scriptPath"`
    Peers              []string `json:"peers"`
    DefaultReplication string   `json:"defaultReplication"`
}
 
type SyncSWFSNodeController struct{}
 
func (ssn *SyncSWFSNodeController) SyncSWFSNode(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
    var err error
    var spp WeedInfo
    logger.Debug("SyncSWFSNode start")
    if err = c.BindJSON(&spp); err != nil {
        logger.Error("SyncSWFSNode param error")
        return &bhomeclient.Reply{Msg: "param error"}
    }
 
    ip, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
    scriptPath := spp.ScriptPath
    peers := spp.Peers
    defaultReplication := spp.DefaultReplication
    _, err = util.VerifyServer(ip)
    logger.Debugf("SyncSWFSNode req=%v, ip=%v, peers=%v, err=%v", spp, ip, peers, err)
    if err == nil {
        sp := util.StopServer(scriptPath)
        if sp == false {
            logger.Errorf("SyncSWFSNode StopServer, ip=%v, peers=%v", ip, peers)
            return &bhomeclient.Reply{Msg: "stop scriptPath  路径错误!"}
        }
    }
 
    if !util.SetConfig(scriptPath, ip, peers, defaultReplication) {
        logger.Errorf("SyncSWFSNode SetConfig, ip=%v, peers=%v", ip, peers)
        return &bhomeclient.Reply{Msg: "scriptPath  路径错误!"}
    }
    if !util.StartServer(scriptPath) {
        logger.Errorf("SyncSWFSNode StartServer, ip=%v, peers=%v", ip, peers)
        return &bhomeclient.Reply{Msg: "scriptPath  路径错误!"}
    }
 
    time.Sleep(time.Second * 3)
    _, errF := util.VerifyServer(ip)
    logger.Debugf("SyncSWFSNode first time wait 3 sec, errF=%v, ip=%v, peers=%v", errF, ip, peers)
    if errF != nil {
        time.Sleep(time.Second * 3)
        _, errS := util.VerifyServer(ip)
        logger.Debugf("SyncSWFSNode second time wait 3 sec, errS=%v, ip=%v, peers=%v", errS, ip, peers)
        if errS != nil {
            logger.Errorf("SyncSWFSNode 启动超时, errS=%v, ip=%v, peers=%v", errS, ip, peers)
            return &bhomeclient.Reply{Msg: "启动超时"}
        }
    }
    logger.Debugf("SyncSWFSNode success, ip=%v, peers=%v", ip, peers)
    return &bhomeclient.Reply{Success: true, Msg: fmt.Sprintf("%v: 节点同步成功", ip)}
}
 
func (ssn *SyncSWFSNodeController) GetSWFSPeers(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
    var spp WeedInfo
    c.BindJSON(&spp)
    scriptPath := spp.ScriptPath
    configInfo, err := util.GetConfig(scriptPath)
    if err != nil {
        return &bhomeclient.Reply{Msg: "配置文件路径或文件格式错误!!!"}
    }
    if len(configInfo.Peers) < 1 {
        return &bhomeclient.Reply{Msg: "目标节点服务不存在"}
    }
    return &bhomeclient.Reply{Success: true, Data: configInfo.Peers}
}