aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-03-06 12:10:45 -0800
committerChris Lu <chris.lu@gmail.com>2019-03-06 12:10:45 -0800
commit4773497d2c2a96990cd68e841675405db26353cb (patch)
tree8f0a676cec0d01468a622afa64a67585d99c2746
parente71e0db5b7bb3001caeb8ec1da31028a3a5b9b42 (diff)
downloadseaweedfs-4773497d2c2a96990cd68e841675405db26353cb.tar.xz
seaweedfs-4773497d2c2a96990cd68e841675405db26353cb.zip
add back "/cluster/status"
fix https://github.com/chrislusf/seaweedfs/issues/870
-rw-r--r--weed/command/master.go1
-rw-r--r--weed/command/server.go1
-rw-r--r--weed/server/raft_server_handlers.go22
3 files changed, 24 insertions, 0 deletions
diff --git a/weed/command/master.go b/weed/command/master.go
index cc6818967..4207a331c 100644
--- a/weed/command/master.go
+++ b/weed/command/master.go
@@ -97,6 +97,7 @@ func runMaster(cmd *Command, args []string) bool {
raftServer := weed_server.NewRaftServer(security.LoadClientTLS(viper.Sub("grpc"), "master"),
peers, myMasterAddress, *metaFolder, ms.Topo, *mpulse)
ms.SetRaftServer(raftServer)
+ r.HandleFunc("/cluster/status", raftServer.StatusHandler).Methods("GET")
// starting grpc server
grpcPort := *mport + 10000
diff --git a/weed/command/server.go b/weed/command/server.go
index d625dd732..32b9f6987 100644
--- a/weed/command/server.go
+++ b/weed/command/server.go
@@ -187,6 +187,7 @@ func runServer(cmd *Command, args []string) bool {
raftServer := weed_server.NewRaftServer(security.LoadClientTLS(viper.Sub("grpc"), "master"),
peers, myMasterAddress, *masterMetaFolder, ms.Topo, *pulseSeconds)
ms.SetRaftServer(raftServer)
+ r.HandleFunc("/cluster/status", raftServer.StatusHandler).Methods("GET")
// starting grpc server
grpcPort := *masterPort + 10000
diff --git a/weed/server/raft_server_handlers.go b/weed/server/raft_server_handlers.go
new file mode 100644
index 000000000..fd38cb977
--- /dev/null
+++ b/weed/server/raft_server_handlers.go
@@ -0,0 +1,22 @@
+package weed_server
+
+import (
+ "net/http"
+)
+
+type ClusterStatusResult struct {
+ IsLeader bool `json:"IsLeader,omitempty"`
+ Leader string `json:"Leader,omitempty"`
+ Peers []string `json:"Peers,omitempty"`
+}
+
+func (s *RaftServer) StatusHandler(w http.ResponseWriter, r *http.Request) {
+ ret := ClusterStatusResult{
+ IsLeader: s.topo.IsLeader(),
+ Peers: s.Peers(),
+ }
+ if leader, e := s.topo.Leader(); e == nil {
+ ret.Leader = leader
+ }
+ writeJsonQuiet(w, r, http.StatusOK, ret)
+}