zhangqian
2023-11-01 443fb992699818305e3d7f6885ca7d1d36fbe7cd
serf/sync.go
@@ -5,6 +5,7 @@
   "context"
   "encoding/json"
   "fmt"
   "github.com/mitchellh/mapstructure"
   "os"
   "os/signal"
   "regexp"
@@ -311,7 +312,7 @@
}
// 查询集群状态, 返回 master, slave, leave
func (ss *SyncServer) QueryClusterStat() string {
func (ss *SyncServer) QueryClusterStat() *bhomeclient.Reply {
   clusterStatTopic := "/data/api-v/cluster/status"
   req := bhomeclient.Request{
      Path:   clusterStatTopic,
@@ -322,14 +323,14 @@
   if err != nil {
      fmt.Println("RequestTopic error", err.Error())
      return ""
      return reply
   }
   ss.ClusterStatus = reply.Msg
   logx.Debugf("当前集群状态: %s", ss.ClusterStatus)
   return reply.Msg
   return reply
}
func (ss *SyncServer) handleDbLoggerPrint() {
@@ -439,7 +440,7 @@
   return err
}
func (ss *SyncServer)Print(values ...interface{}) {
func (ss *SyncServer) Print(values ...interface{}) {
   var (
      level = values[0]
   )
@@ -519,3 +520,28 @@
   return ""
}
type NodeInfo struct {
   NodeID     string `json:"node_id,omitempty"`
   NodeIp     string `json:"node_ip,omitempty"`
   NodeName   string `json:"node_name,omitempty"`
   ClusterID  string `json:"cluster_id"`
   CreateTime string `json:"create_time"`
   DeviceType string `json:"device_type"`
   DriftState string `json:"drift_state"`
   Online     string `json:"online"`
}
func QueryClusterStatusAndNodeQuantity() (string, int) {
   reply := agent.QueryClusterStat()
   if reply == nil {
      return "", 0
   }
   var nodes []NodeInfo
   err := mapstructure.Decode(reply.Data, &nodes)
   if err != nil {
      logx.Errorf("mapstructure.Decode QueryClusterStat data err:%v", err)
      return reply.Msg, 0
   }
   return reply.Msg, len(nodes)
}