machines.go 776 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package main
  2. // machineNum returns the number of machines in the cluster
  3. func machineNum() int {
  4. response, _ := etcdStore.RawGet("_etcd/machines")
  5. return len(response)
  6. }
  7. // getMachines gets the current machines in the cluster
  8. func getMachines() []string {
  9. peers := raftServer.Peers()
  10. machines := make([]string, len(peers)+1)
  11. leader, ok := nameToEtcdURL(raftServer.Leader())
  12. self := info.EtcdURL
  13. i := 1
  14. if ok {
  15. machines[0] = leader
  16. if leader != self {
  17. machines[1] = self
  18. i = 2
  19. }
  20. } else {
  21. machines[0] = self
  22. }
  23. // Add all peers to the slice
  24. for peerName, _ := range peers {
  25. if machine, ok := nameToEtcdURL(peerName); ok {
  26. // do not add leader twice
  27. if machine != leader {
  28. machines[i] = machine
  29. i++
  30. }
  31. }
  32. }
  33. return machines
  34. }