etcd/machines.go

51 lines
857 B
Go
Raw Normal View History

package main
// machineNum returns the number of machines in the cluster
func machineNum() int {
response, _ := etcdStore.RawGet("_etcd/machines")
return len(response)
}
2013-08-14 08:35:23 +04:00
// getMachines gets the current machines in the cluster
2013-08-19 23:10:11 +04:00
func getMachines(etcd bool) []string {
2013-08-14 08:35:23 +04:00
2013-08-15 03:27:52 +04:00
peers := r.Peers()
2013-08-14 08:35:23 +04:00
machines := make([]string, len(peers)+1)
2013-08-19 23:10:11 +04:00
var toURL func(string) (string, bool)
if etcd {
toURL = nameToEtcdURL
} else {
toURL = nameToRaftURL
}
leader, ok := toURL(r.Leader())
2013-08-15 01:45:47 +04:00
self := e.url
2013-08-14 22:27:54 +04:00
i := 1
if ok {
machines[0] = leader
if leader != self {
machines[1] = self
i = 2
2013-08-14 08:35:23 +04:00
}
2013-08-14 22:27:54 +04:00
} else {
machines[0] = self
2013-08-14 08:35:23 +04:00
}
// Add all peers to the slice
for peerName, _ := range peers {
2013-08-19 23:10:11 +04:00
if machine, ok := toURL(peerName); ok {
2013-08-14 08:35:23 +04:00
// do not add leader twice
if machine != leader {
machines[i] = machine
i++
}
}
}
return machines
}