2014-02-15 01:10:49 +00:00
|
|
|
package operation
|
|
|
|
|
|
|
|
import (
|
2014-10-26 18:34:55 +00:00
|
|
|
"encoding/json"
|
|
|
|
|
2016-06-03 01:09:14 +00:00
|
|
|
"github.com/chrislusf/seaweedfs/weed/glog"
|
|
|
|
"github.com/chrislusf/seaweedfs/weed/util"
|
2014-02-15 01:10:49 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type ClusterStatusResult struct {
|
2014-04-15 16:30:08 +00:00
|
|
|
IsLeader bool `json:"IsLeader,omitempty"`
|
|
|
|
Leader string `json:"Leader,omitempty"`
|
|
|
|
Peers []string `json:"Peers,omitempty"`
|
2014-02-15 01:10:49 +00:00
|
|
|
}
|
|
|
|
|
2017-01-13 18:20:40 +00:00
|
|
|
func ListMasters(server string) (leader string, peers []string, err error) {
|
2014-02-15 01:10:49 +00:00
|
|
|
jsonBlob, err := util.Get("http://" + server + "/cluster/status")
|
|
|
|
glog.V(2).Info("list masters result :", string(jsonBlob))
|
|
|
|
if err != nil {
|
2017-01-13 18:20:40 +00:00
|
|
|
return "", nil, err
|
2014-02-15 01:10:49 +00:00
|
|
|
}
|
|
|
|
var ret ClusterStatusResult
|
|
|
|
err = json.Unmarshal(jsonBlob, &ret)
|
|
|
|
if err != nil {
|
2017-01-13 18:20:40 +00:00
|
|
|
return "", nil, err
|
2014-02-15 01:10:49 +00:00
|
|
|
}
|
2017-01-13 18:20:40 +00:00
|
|
|
peers = ret.Peers
|
2014-03-03 06:16:54 +00:00
|
|
|
if ret.IsLeader {
|
2017-01-13 18:20:40 +00:00
|
|
|
peers = append(peers, ret.Leader)
|
2014-03-03 06:16:54 +00:00
|
|
|
}
|
2017-01-13 18:20:40 +00:00
|
|
|
return ret.Leader, peers, nil
|
2014-02-15 01:10:49 +00:00
|
|
|
}
|