fix func name and use extracExprs

Signed-off-by: Xian Chaobo <xianchaobo@huawei.com>
This commit is contained in:
Xian Chaobo 2015-07-07 11:30:26 +08:00
parent 05ba86d329
commit 0037c31a95
3 changed files with 7 additions and 10 deletions

View File

@ -147,13 +147,10 @@ func (c *ContainerConfig) Constraints() []string {
return c.extractExprs("constraints") return c.extractExprs("constraints")
} }
// AddSoftImageAffinity to config // AddAffinity to config
func (c *ContainerConfig) AddSoftImageAffinity(image string) error { func (c *ContainerConfig) AddAffinity(affinity string) error {
affnitiesJSON := c.Labels[SwarmLabelNamespace+".affinities"] affinities := c.extractExprs("affinities")
var affinities []string affinities = append(affinities, affinity)
json.Unmarshal([]byte(affnitiesJSON), &affinities)
affinities = append(affinities, "image==~"+image)
labels, err := json.Marshal(affinities) labels, err := json.Marshal(affinities)
if err != nil { if err != nil {
return err return err

View File

@ -82,10 +82,10 @@ func TestConsolidateResourceFields(t *testing.T) {
} }
func TestAddSoftImageAffinity(t *testing.T) { func TestAddAffinity(t *testing.T) {
config := BuildContainerConfig(dockerclient.ContainerConfig{}) config := BuildContainerConfig(dockerclient.ContainerConfig{})
assert.Empty(t, config.Affinities()) assert.Empty(t, config.Affinities())
config.AddSoftImageAffinity("testimage") config.AddAffinity("image==~testimage")
assert.Len(t, config.Affinities(), 1) assert.Len(t, config.Affinities(), 1)
} }

View File

@ -116,7 +116,7 @@ func (c *Cluster) createContainer(config *cluster.ContainerConfig, name string,
configTemp := config configTemp := config
if withSoftImageAffinity { if withSoftImageAffinity {
configTemp.AddSoftImageAffinity(config.Image) configTemp.AddAffinity("image==~" + config.Image)
} }
n, err := c.scheduler.SelectNodeForContainer(c.listNodes(), configTemp) n, err := c.scheduler.SelectNodeForContainer(c.listNodes(), configTemp)