makes listServers api more informative
parent
aa4f2363b0
commit
8fdd988226
|
@ -60,3 +60,6 @@ config.toml
|
|||
|
||||
# test data files
|
||||
integration/migration_data/
|
||||
|
||||
# goide project files
|
||||
.idea
|
||||
|
|
|
@ -985,8 +985,22 @@ func (self *HttpServer) listServers(w libhttp.ResponseWriter, r *libhttp.Request
|
|||
self.tryAsClusterAdmin(w, r, func(u User) (int, interface{}) {
|
||||
servers := self.clusterConfig.Servers()
|
||||
serverMaps := make([]map[string]interface{}, len(servers), len(servers))
|
||||
|
||||
//FIXME: GetLeaderConnectString is not consistent yet when called on different server.
|
||||
leaderConnectString, _ := self.raftServer.GetLeaderConnectString()
|
||||
leaderRaftName := self.raftServer.GetLeaderRaftName()
|
||||
for i, s := range servers {
|
||||
serverMaps[i] = map[string]interface{}{"id": s.Id, "protobufConnectString": s.ProtobufConnectionString}
|
||||
serverMaps[i] = map[string]interface{}{
|
||||
"id": s.Id,
|
||||
"protobufConnectString": s.ProtobufConnectionString,
|
||||
"isUp": s.IsUp(), //FIXME: IsUp is not consistent
|
||||
"raftName": s.RaftName,
|
||||
"state": s.State,
|
||||
"stateName": s.GetStateName(),
|
||||
"raftConnectionString": s.RaftConnectionString,
|
||||
"leaderRaftName": leaderRaftName,
|
||||
"leaderConnectString": leaderConnectString,
|
||||
"isLeader": self.raftServer.IsLeaderByRaftName(s.RaftName)}
|
||||
}
|
||||
return libhttp.StatusOK, serverMaps
|
||||
})
|
||||
|
|
|
@ -48,6 +48,22 @@ const (
|
|||
Potential
|
||||
)
|
||||
|
||||
func (self *ClusterServer) GetStateName() (stateName string) {
|
||||
switch {
|
||||
case self.State == LoadingRingData:
|
||||
return "LoadingRingData"
|
||||
case self.State == SendingRingData:
|
||||
return "SendingRingData"
|
||||
case self.State == DeletingOldData:
|
||||
return "DeletingOldData"
|
||||
case self.State == Running:
|
||||
return "Running"
|
||||
case self.State == Potential:
|
||||
return "Potential"
|
||||
}
|
||||
return "UNKNOWN"
|
||||
}
|
||||
|
||||
func NewClusterServer(raftName, raftConnectionString, protobufConnectionString string, connection ServerConnection, config *c.Configuration) *ClusterServer {
|
||||
|
||||
s := &ClusterServer{
|
||||
|
|
|
@ -115,6 +115,19 @@ func (s *RaftServer) GetRaftName() string {
|
|||
return s.name
|
||||
}
|
||||
|
||||
func (s *RaftServer) GetLeaderRaftName() string {
|
||||
return s.raftServer.Leader()
|
||||
}
|
||||
|
||||
func (s *RaftServer) IsLeaderByRaftName(name string) bool {
|
||||
//s.raftServer.State() == raft.Leader
|
||||
return s.raftServer.Leader() == name
|
||||
}
|
||||
|
||||
func (s *RaftServer) GetLeaderConnectString() (string, bool) {
|
||||
return s.leaderConnectString()
|
||||
}
|
||||
|
||||
func (s *RaftServer) leaderConnectString() (string, bool) {
|
||||
leader := s.raftServer.Leader()
|
||||
peers := s.raftServer.Peers()
|
||||
|
|
Loading…
Reference in New Issue