code: func (c *Client) nodeJoin(me serf.MemberEvent) {
  	for _, m := range me.Members {
  		ok, parts := metadata.IsConsulServer(m)
  		if !ok {
  			continue
  		}
  		if parts.Datacenter != c.config.Datacenter {
  			c.logger.Printf("[WARN] consul: server %s for datacenter %s has joined wrong cluster",
  				m.Name, parts.Datacenter)
  			continue
  		}
  		c.logger.Printf("[INFO] consul: adding server %s", parts)
  		c.routers.AddServer(parts)
  
  		// Trigger the callback
  		if c.config.ServerUp != nil {
  			c.config.ServerUp()
  		}
  	}
  }
docs: // nodeJoin is used to handle join events on the serf cluster