mirror of https://github.com/docker/docs.git
32 lines
623 B
Go
32 lines
623 B
Go
package filter
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/docker/swarm/cluster"
|
|
"github.com/samalba/dockerclient"
|
|
)
|
|
|
|
var (
|
|
ErrNoHealthyNodeAvailable = errors.New("No healthy node available in the cluster")
|
|
)
|
|
|
|
// HealthFilter only schedules containers on healthy nodes.
|
|
type HealthFilter struct {
|
|
}
|
|
|
|
func (f *HealthFilter) Filter(config *dockerclient.ContainerConfig, nodes []*cluster.Node) ([]*cluster.Node, error) {
|
|
result := []*cluster.Node{}
|
|
for _, node := range nodes {
|
|
if node.IsHealthy() {
|
|
result = append(result, node)
|
|
}
|
|
}
|
|
|
|
if len(result) == 0 {
|
|
return nil, ErrNoHealthyNodeAvailable
|
|
}
|
|
|
|
return result, nil
|
|
}
|