From 129f38366ede43090fd61d721e5858b3cab0eee7 Mon Sep 17 00:00:00 2001 From: Sun Hongliang Date: Thu, 17 Mar 2016 20:13:46 +0800 Subject: [PATCH] move more experimental out of rescheduling Signed-off-by: Sun Hongliang --- cluster/config.go | 47 ++++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/cluster/config.go b/cluster/config.go index 0a22434746..f68a85dbbf 100644 --- a/cluster/config.go +++ b/cluster/config.go @@ -6,7 +6,6 @@ import ( "fmt" "strings" - "github.com/docker/swarm/experimental" "github.com/samalba/dockerclient" ) @@ -87,19 +86,18 @@ func BuildContainerConfig(c dockerclient.ContainerConfig) *ContainerConfig { json.Unmarshal([]byte(labels), &constraints) } - if experimental.ENABLED { - // parse reschedule policy from labels (ex. docker run --label 'com.docker.swarm.reschedule-policies=on-node-failure') - if labels, ok := c.Labels[SwarmLabelNamespace+".reschedule-policies"]; ok { - json.Unmarshal([]byte(labels), &reschedulePolicies) - } + // parse reschedule policy from labels (ex. docker run --label 'com.docker.swarm.reschedule-policies=on-node-failure') + if labels, ok := c.Labels[SwarmLabelNamespace+".reschedule-policies"]; ok { + json.Unmarshal([]byte(labels), &reschedulePolicies) } + // parse affinities/constraints/reschedule policies from env (ex. docker run -e affinity:container==redis -e affinity:image==nginx -e constraint:region==us-east -e constraint:storage==ssd -e reschedule:off) for _, e := range c.Env { if ok, key, value := parseEnv(e); ok && key == "affinity" { affinities = append(affinities, value) } else if ok && key == "constraint" { constraints = append(constraints, value) - } else if experimental.ENABLED && ok && key == "reschedule" { + } else if ok && key == "reschedule" { reschedulePolicies = append(reschedulePolicies, value) } else { env = append(env, e) @@ -123,12 +121,10 @@ func BuildContainerConfig(c dockerclient.ContainerConfig) *ContainerConfig { } } - if experimental.ENABLED { - // store reschedule policies in labels - if len(reschedulePolicies) > 0 { - if labels, err := json.Marshal(reschedulePolicies); err == nil { - c.Labels[SwarmLabelNamespace+".reschedule-policies"] = string(labels) - } + // store reschedule policies in labels + if len(reschedulePolicies) > 0 { + if labels, err := json.Marshal(reschedulePolicies); err == nil { + c.Labels[SwarmLabelNamespace+".reschedule-policies"] = string(labels) } } @@ -233,22 +229,19 @@ func (c *ContainerConfig) HasReschedulePolicy(p string) bool { // Validate returns an error if the config isn't valid func (c *ContainerConfig) Validate() error { //TODO: add validation for affinities and constraints - - if experimental.ENABLED { - reschedulePolicies := c.extractExprs("reschedule-policies") - if len(reschedulePolicies) > 1 { - return errors.New("too many reschedule policies") - } else if len(reschedulePolicies) == 1 { - valid := false - for _, validReschedulePolicy := range []string{"off", "on-node-failure"} { - if reschedulePolicies[0] == validReschedulePolicy { - valid = true - } - } - if !valid { - return fmt.Errorf("invalid reschedule policy: %s", reschedulePolicies[0]) + reschedulePolicies := c.extractExprs("reschedule-policies") + if len(reschedulePolicies) > 1 { + return errors.New("too many reschedule policies") + } else if len(reschedulePolicies) == 1 { + valid := false + for _, validReschedulePolicy := range []string{"off", "on-node-failure"} { + if reschedulePolicies[0] == validReschedulePolicy { + valid = true } } + if !valid { + return fmt.Errorf("invalid reschedule policy: %s", reschedulePolicies[0]) + } } return nil