open-consul/consul/status_endpoint.go

36 lines
798 B
Go
Raw Normal View History

2013-12-09 23:29:20 +00:00
package consul
// Status endpoint is used to check on server status
type Status struct {
server *Server
}
// Ping is used to just check for connectivity
func (s *Status) Ping(args struct{}, reply *struct{}) error {
return nil
}
2013-12-10 23:16:41 +00:00
// Leader is used to get the address of the leader
func (s *Status) Leader(args struct{}, reply *string) error {
leader := string(s.server.raft.Leader())
2015-05-08 18:35:12 +00:00
if leader != "" {
*reply = leader
2013-12-10 23:16:41 +00:00
} else {
*reply = ""
}
return nil
}
// Peers is used to get all the Raft peers
func (s *Status) Peers(args struct{}, reply *[]string) error {
future := s.server.raft.GetConfiguration()
if err := future.Error(); err != nil {
return err
}
for _, server := range future.Configuration().Servers {
*reply = append(*reply, string(server.Address))
}
return nil
}