github.com/technosophos/deis@v1.7.1-0.20150915173815-f9005256004b/mesos/pkg/fleet/machines.go (about) 1 package fleet 2 3 import ( 4 "net/http" 5 "time" 6 7 "github.com/coreos/fleet/etcd" 8 "github.com/coreos/fleet/registry" 9 logger "github.com/deis/deis/mesos/pkg/log" 10 ) 11 12 var log = logger.New() 13 14 // GetNodesWithMetadata returns the ip address of the nodes with all the specified roles 15 func GetNodesWithMetadata(url []string, metadata map[string][]string) ([]string, error) { 16 etcdClient, err := etcd.NewClient(url, &http.Transport{}, time.Second) 17 if err != nil { 18 log.Debugf("error creating new fleet etcd client: %v", err) 19 return nil, err 20 } 21 22 fleetClient := registry.NewEtcdRegistry(etcdClient, "/_coreos.com/fleet/") 23 machines, err := fleetClient.Machines() 24 if err != nil { 25 log.Debugf("error creating new fleet etcd client: %v", err) 26 return nil, err 27 } 28 29 var machineList []string 30 for _, m := range machines { 31 if hasMetadata(m, metadata) { 32 machineList = append(machineList, m.PublicIP) 33 } 34 } 35 36 return machineList, nil 37 } 38 39 // GetNodesInCluster return the list of ip address of all the nodes 40 // running in the cluster currently active (fleetctl list-machines) 41 func GetNodesInCluster(url []string) []string { 42 etcdClient, err := etcd.NewClient(url, &http.Transport{}, time.Second) 43 if err != nil { 44 log.Debugf("error creating new fleet etcd client: %v", err) 45 return []string{} 46 } 47 48 fleetClient := registry.NewEtcdRegistry(etcdClient, "/_coreos.com/fleet/") 49 machines, err := fleetClient.Machines() 50 if err != nil { 51 log.Debugf("error creating new fleet etcd client: %v", err) 52 return []string{} 53 } 54 55 var machineList []string 56 for _, m := range machines { 57 machineList = append(machineList, m.PublicIP) 58 } 59 60 return machineList 61 }