zhangzengfei
2023-10-24 c5654846d3b8b002284dee57aa50e95d67649f0e
集群退出密码
2个文件已修改
45 ■■■■ 已修改文件
system-service/controllers/cluster.go 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-service/serf/sync.go 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-service/controllers/cluster.go
@@ -75,10 +75,10 @@
            return &bhomeclient.Reply{Success: true, Data: map[string]interface{}{
                "clusterId":   arr[0].ClusterId,
                "clusterName": arr[0].ClusterName,
                "password":    arr[0].Password,
                "nodes":       nodes,
                "virtualIp":   arr[0].VirtualIp,
                "localId":     config.Server.AnalyServerId,
                //"password":    arr[0].Password,
                "nodes":     nodes,
                "virtualIp": arr[0].VirtualIp,
                "localId":   config.Server.AnalyServerId,
            }}
        } else {
            return &bhomeclient.Reply{Success: true}
@@ -251,7 +251,8 @@
}
type LeaveArg struct {
    IsDel bool `json:"isDel"` //是否删除数据
    IsDel bool   `json:"isDel"`    //是否删除数据
    Pwd   string `json:"password"` //是否删除数据
}
// @Summary 退出集群
@@ -264,6 +265,21 @@
func (cc ClusterController) Leave(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
    var reqBody LeaveArg
    c.BindJSON(&reqBody)
    var clusterE models.Cluster
    arr, err := clusterE.FindAll()
    if err != nil {
        return &bhomeclient.Reply{Success: false, Msg: "集群查询失败"}
    }
    if arr != nil && len(arr) > 0 {
        if config.ClusterSet.PwdPre+reqBody.Pwd != arr[0].Password {
            return &bhomeclient.Reply{Success: false, Msg: "密码错误"}
        }
    } else {
        return &bhomeclient.Reply{Success: false, Msg: "集群查询失败"}
    }
    sv := service.NewClusterService(h.Bk)
    if b, err := sv.Leave(reqBody.IsDel); b {
        return &bhomeclient.Reply{Success: true, Msg: "退出成功"}
system-service/serf/sync.go
@@ -52,9 +52,11 @@
        nodes, e := nodeE.FindNodesByClusterId(c.ClusterId)
        if e == nil && nodes != nil && len(nodes) > 0 {
            var nodeIps []string
            for _, n := range nodes {
            for idx, n := range nodes {
                if n.NodeId != config.Server.AnalyServerId {
                    nodeIps = append(nodeIps, n.NodeIp)
                } else {
                    nodeE = nodes[idx]
                }
            }
@@ -69,6 +71,21 @@
            Agent, err = sdb.Init(c.ClusterId, c.Password, config.Server.AnalyServerId, nodeIps, config.ClusterSet.SerfSnapShotPath, conf)
            if Agent != nil {
                Agent.RegisterHandleEventFunc(HandleSerfEvent)
                logger.Debugf("local node:", nodeE)
                if nodeE.DriftState == "slave" {
                    chMsg := protomsg.DbChangeMessage{
                        Id:     nodeE.ClusterId,
                        Table:  protomsg.TableChanged_T_Cluster,
                        Action: protomsg.DbAction_Insert,
                        Info:   "master2slave",
                    }
                    b, _ := json.Marshal(chMsg)
                    err = hms.Publish(bhomeclient.Proc_System_Service, b)
                    if err != nil {
                        logger.Error(err.Error())
                    }
                }
                logger.Debug("sync.Agent init success!")
            } else {
                logger.Debug("sync.Agent init fail!")