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