From c5654846d3b8b002284dee57aa50e95d67649f0e Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期二, 24 十月 2023 18:59:31 +0800 Subject: [PATCH] 集群退出密码 --- system-service/controllers/cluster.go | 26 +++++++++++++++++++++----- system-service/serf/sync.go | 19 ++++++++++++++++++- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/system-service/controllers/cluster.go b/system-service/controllers/cluster.go index 39b980f..90c5ee3 100644 --- a/system-service/controllers/cluster.go +++ b/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: "閫�鍑烘垚鍔�"} diff --git a/system-service/serf/sync.go b/system-service/serf/sync.go index 8c831d8..d7338ee 100644 --- a/system-service/serf/sync.go +++ b/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!") -- Gitblit v1.8.0