| | |
| | | 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} |
| | |
| | | } |
| | | |
| | | type LeaveArg struct { |
| | | IsDel bool `json:"isDel"` //是否删除数据 |
| | | IsDel bool `json:"isDel"` //是否删除数据 |
| | | Pwd string `json:"password"` //是否删除数据 |
| | | } |
| | | |
| | | // @Summary 退出集群 |
| | |
| | | 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: "退出成功"} |
| | |
| | | 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] |
| | | } |
| | | } |
| | | |
| | |
| | | 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!") |