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  }