From 6af7c3c209ab4bfe6d158991e25c27605cf28300 Mon Sep 17 00:00:00 2001 From: Victor Vieux Date: Sat, 24 Jan 2015 21:27:03 -0800 Subject: [PATCH] match only repo Signed-off-by: Victor Vieux --- scheduler/filter/affinity.go | 3 ++- scheduler/filter/affinity_test.go | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/scheduler/filter/affinity.go b/scheduler/filter/affinity.go index 9722a31752..205113a33f 100644 --- a/scheduler/filter/affinity.go +++ b/scheduler/filter/affinity.go @@ -2,6 +2,7 @@ package filter import ( "fmt" + "strings" log "github.com/Sirupsen/logrus" "github.com/docker/swarm/cluster" @@ -39,7 +40,7 @@ func (f *AffinityFilter) Filter(config *dockerclient.ContainerConfig, nodes []*c break } for _, tag := range image.RepoTags { - if affinity.Match(tag) { + if affinity.Match(tag, strings.Split(tag, ":")[0]) { candidates = append(candidates, node) break done } diff --git a/scheduler/filter/affinity_test.go b/scheduler/filter/affinity_test.go index 64f54ce7b8..5624e2f10b 100644 --- a/scheduler/filter/affinity_test.go +++ b/scheduler/filter/affinity_test.go @@ -131,6 +131,14 @@ func TestAffinityFilter(t *testing.T) { assert.NoError(t, err) assert.Len(t, result, 2) + // Validate images by name + result, err = f.Filter(&dockerclient.ContainerConfig{ + Env: []string{"affinity:image==image-1"}, + }, nodes) + assert.NoError(t, err) + assert.Len(t, result, 1) + assert.Equal(t, result[0], nodes[1]) + // Not support = any more result, err = f.Filter(&dockerclient.ContainerConfig{ Env: []string{"affinity:image=image-0:tag3"},