aboutsummaryrefslogtreecommitdiff
path: root/weed/operation/list_masters.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/operation/list_masters.go')
-rw-r--r--weed/operation/list_masters.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/weed/operation/list_masters.go b/weed/operation/list_masters.go
new file mode 100644
index 000000000..0a15b0af8
--- /dev/null
+++ b/weed/operation/list_masters.go
@@ -0,0 +1,32 @@
+package operation
+
+import (
+ "encoding/json"
+
+ "github.com/chrislusf/seaweedfs/weed/glog"
+ "github.com/chrislusf/seaweedfs/weed/util"
+)
+
+type ClusterStatusResult struct {
+ IsLeader bool `json:"IsLeader,omitempty"`
+ Leader string `json:"Leader,omitempty"`
+ Peers []string `json:"Peers,omitempty"`
+}
+
+func ListMasters(server string) ([]string, error) {
+ jsonBlob, err := util.Get("http://" + server + "/cluster/status")
+ glog.V(2).Info("list masters result :", string(jsonBlob))
+ if err != nil {
+ return nil, err
+ }
+ var ret ClusterStatusResult
+ err = json.Unmarshal(jsonBlob, &ret)
+ if err != nil {
+ return nil, err
+ }
+ masters := ret.Peers
+ if ret.IsLeader {
+ masters = append(masters, ret.Leader)
+ }
+ return masters, nil
+}