Updating filters

Signed-off-by: Nishant Totla <nishanttotla@gmail.com>
This commit is contained in:
Nishant Totla 2016-03-22 14:02:21 -07:00
parent 81e1528d0f
commit 48cd1ebd69
No known key found for this signature in database
GPG Key ID: 7EA5781C9B3D0C19
3 changed files with 12 additions and 12 deletions

View File

@ -38,7 +38,7 @@ func (f *AffinityFilter) Filter(config *cluster.ContainerConfig, nodes []*node.N
containers := []string{} containers := []string{}
for _, container := range node.Containers { for _, container := range node.Containers {
if len(container.Names) > 0 { if len(container.Names) > 0 {
containers = append(containers, container.Id, strings.TrimPrefix(container.Names[0], "/")) containers = append(containers, container.ID, strings.TrimPrefix(container.Names[0], "/"))
} }
} }
if affinity.Match(containers...) { if affinity.Match(containers...) {

View File

@ -36,8 +36,8 @@ func (f *DependencyFilter) Filter(config *cluster.ContainerConfig, nodes []*node
// Check if --net points to a container. // Check if --net points to a container.
net := []string{} net := []string{}
if strings.HasPrefix(config.HostConfig.NetworkMode, "container:") { if strings.HasPrefix(string(config.HostConfig.NetworkMode), "container:") {
net = append(net, strings.TrimPrefix(config.HostConfig.NetworkMode, "container:")) net = append(net, strings.TrimPrefix(string(config.HostConfig.NetworkMode), "container:"))
} }
candidates := []*node.Node{} candidates := []*node.Node{}
@ -65,7 +65,7 @@ func (f *DependencyFilter) GetFilters(config *cluster.ContainerConfig) ([]string
for _, link := range config.HostConfig.Links { for _, link := range config.HostConfig.Links {
dependencies = append(dependencies, fmt.Sprintf("--link=%s", link)) dependencies = append(dependencies, fmt.Sprintf("--link=%s", link))
} }
if strings.HasPrefix(config.HostConfig.NetworkMode, "container:") { if strings.HasPrefix(string(config.HostConfig.NetworkMode), "container:") {
dependencies = append(dependencies, fmt.Sprintf("--net=%s", config.HostConfig.NetworkMode)) dependencies = append(dependencies, fmt.Sprintf("--net=%s", config.HostConfig.NetworkMode))
} }
return dependencies, nil return dependencies, nil

View File

@ -3,9 +3,9 @@ package filter
import ( import (
"fmt" "fmt"
"github.com/docker/go-connections/nat"
"github.com/docker/swarm/cluster" "github.com/docker/swarm/cluster"
"github.com/docker/swarm/scheduler/node" "github.com/docker/swarm/scheduler/node"
"github.com/samalba/dockerclient"
) )
// PortFilter guarantees that, when scheduling a container binding a public // PortFilter guarantees that, when scheduling a container binding a public
@ -32,7 +32,7 @@ func (p *PortFilter) filterHost(config *cluster.ContainerConfig, nodes []*node.N
for port := range config.ExposedPorts { for port := range config.ExposedPorts {
candidates := []*node.Node{} candidates := []*node.Node{}
for _, node := range nodes { for _, node := range nodes {
if !p.portAlreadyExposed(node, port) { if !p.portAlreadyExposed(node, string(port)) {
candidates = append(candidates, node) candidates = append(candidates, node)
} }
} }
@ -66,7 +66,7 @@ func (p *PortFilter) portAlreadyExposed(node *node.Node, requestedPort string) b
for _, c := range node.Containers { for _, c := range node.Containers {
if c.Info.HostConfig.NetworkMode == "host" { if c.Info.HostConfig.NetworkMode == "host" {
for port := range c.Info.Config.ExposedPorts { for port := range c.Info.Config.ExposedPorts {
if port == requestedPort { if string(port) == requestedPort {
return true return true
} }
} }
@ -75,7 +75,7 @@ func (p *PortFilter) portAlreadyExposed(node *node.Node, requestedPort string) b
return false return false
} }
func (p *PortFilter) portAlreadyInUse(node *node.Node, requested dockerclient.PortBinding) bool { func (p *PortFilter) portAlreadyInUse(node *node.Node, requested nat.PortBinding) bool {
for _, c := range node.Containers { for _, c := range node.Containers {
// HostConfig.PortBindings contains the requested ports. // HostConfig.PortBindings contains the requested ports.
// NetworkSettings.Ports contains the actual ports. // NetworkSettings.Ports contains the actual ports.
@ -96,7 +96,7 @@ func (p *PortFilter) portAlreadyInUse(node *node.Node, requested dockerclient.Po
return false return false
} }
func (p *PortFilter) compare(requested dockerclient.PortBinding, bindings map[string][]dockerclient.PortBinding) bool { func (p *PortFilter) compare(requested nat.PortBinding, bindings nat.PortMap) bool {
for _, binding := range bindings { for _, binding := range bindings {
for _, b := range binding { for _, b := range binding {
if b.HostPort == "" { if b.HostPort == "" {
@ -110,7 +110,7 @@ func (p *PortFilter) compare(requested dockerclient.PortBinding, bindings map[st
// port/protocol. Verify if they are requesting the same // port/protocol. Verify if they are requesting the same
// binding IP, or if the other container is already binding on // binding IP, or if the other container is already binding on
// every interface. // every interface.
if requested.HostIp == b.HostIp || bindsAllInterfaces(requested) || bindsAllInterfaces(b) { if requested.HostIP == b.HostIP || bindsAllInterfaces(requested) || bindsAllInterfaces(b) {
return true return true
} }
} }
@ -137,6 +137,6 @@ func (p *PortFilter) GetFilters(config *cluster.ContainerConfig) ([]string, erro
return allPortConstraints, nil return allPortConstraints, nil
} }
func bindsAllInterfaces(binding dockerclient.PortBinding) bool { func bindsAllInterfaces(binding nat.PortBinding) bool {
return binding.HostIp == "0.0.0.0" || binding.HostIp == "" return binding.HostIP == "0.0.0.0" || binding.HostIP == ""
} }