chenshijun
2019-09-04 161a6826538945851cb367b1f743461265542839
agent.go
@@ -25,6 +25,7 @@
   "io/ioutil"
   "net"
   "os"
   "strconv"
   //"os"
   "strings"
@@ -444,14 +445,14 @@
}
//Init serf Init
func Init(clusterID string, password string, nodeID string, ips []string) (*Agent, error) {
func Init(clusterID string, password string, nodeID string, addrs []string) (*Agent, error) {
   agent, err := InitNode(clusterID, password, nodeID)
   if err != nil {
      fmt.Printf("InitNode failed, error: %s", err)
      return agent, err
   }
   err = agent.JoinByNodeIP(ips)
   err = agent.JoinByNodeAddrs(addrs)
   if err != nil {
      fmt.Printf("JoinByNodeIP failed, error: %s", err)
      return agent, err
@@ -496,6 +497,21 @@
   return agent, nil
}
func (a *Agent) JoinByNodeAddrs(addrs []string) error {
   var nodes []string
   if len(addrs) == 0 {
      return fmt.Errorf("No Nodes To Join!")
   }
   for _, addr := range addrs {
      nodes = append(nodes, addr)
   }
   a.Agent.Join(nodes, true)
   return nil
}
func (a *Agent) JoinByNodeIP(ips []string) error {
   var nodes []string
@@ -509,30 +525,21 @@
   n, err := a.Agent.Join(nodes, true)
   if err != nil || n == 0 {
      //a.Stop()
      //fmt.Println("Stop node")
      return fmt.Errorf("Error Encrypt Key!")
   }
   return err
}
type Node struct {
   clusterID string
   NodeID    string
   IP        string
   isAlive   int //StatusNone:0, StatusAlive:1, StatusLeaving:2, StatusLeft:3, StatusFailed:4
}
func (a *Agent) GetNodes() (nodes []Node) {
   var node Node
func (a *Agent) GetNodes() (nodes []NodeInfo) {
   var node NodeInfo
   fmt.Println("a.conf.ClusterID:", a.conf.ClusterID)
   mbs := a.GroupMembers(a.conf.ClusterID)
   for _, mb := range mbs {
      node.NodeID = mb.Name
      node.IP = mb.Addr.String()
      node.isAlive = int(mb.Status)
      node.clusterID = mb.Tags[tagKeyClusterID]
      node.NodeAddress = mb.Addr.String() + ":" + strconv.Itoa(int(mb.Port))
      node.IsAlive = int(mb.Status)
      node.ClusterID = mb.Tags[tagKeyClusterID]
      nodes = append(nodes, node)
   }