Browse code

Block service mode change.

Signed-off-by: Dong Chen <dongluo.chen@docker.com>

Dong Chen authored on 2016/06/18 03:14:36
Showing 3 changed files
... ...
@@ -24,6 +24,8 @@ func newCreateCommand(dockerCli *client.DockerCli) *cobra.Command {
24 24
 			return runCreate(dockerCli, opts)
25 25
 		},
26 26
 	}
27
+	flags := cmd.Flags()
28
+	flags.StringVar(&opts.mode, flagMode, "replicated", "Service mode (replicated or global)")
27 29
 	addServiceFlags(cmd, opts)
28 30
 	cmd.Flags().SetInterspersed(false)
29 31
 	return cmd
... ...
@@ -447,7 +447,6 @@ func addServiceFlags(cmd *cobra.Command, opts *serviceOptions) {
447 447
 	flags.Var(&opts.resources.resMemBytes, flagReserveMemory, "Reserve Memory")
448 448
 	flags.Var(&opts.stopGrace, "stop-grace-period", "Time to wait before force killing a container")
449 449
 
450
-	flags.StringVar(&opts.mode, flagMode, "replicated", "Service mode (replicated or global)")
451 450
 	flags.Var(&opts.replicas, flagReplicas, "Number of tasks")
452 451
 
453 452
 	flags.StringVar(&opts.restartPolicy.condition, flagRestartCondition, "", "Restart when condition is met (none, on_failure, or any)")
... ...
@@ -161,7 +161,7 @@ func updateService(spec *swarm.ServiceSpec, flags *pflag.FlagSet) error {
161 161
 		updateSlice(flagConstraint, &task.Placement.Constraints)
162 162
 	}
163 163
 
164
-	if err := updateMode(flags, &spec.Mode); err != nil {
164
+	if err := updateReplicas(flags, &spec.Mode); err != nil {
165 165
 		return err
166 166
 	}
167 167
 
... ...
@@ -240,40 +240,14 @@ func updateNetworks(flags *pflag.FlagSet, attachments *[]swarm.NetworkAttachment
240 240
 	*attachments = localAttachments
241 241
 }
242 242
 
243
-func updateMode(flags *pflag.FlagSet, serviceMode *swarm.ServiceMode) error {
244
-	if !flags.Changed(flagMode) && !flags.Changed(flagReplicas) {
243
+func updateReplicas(flags *pflag.FlagSet, serviceMode *swarm.ServiceMode) error {
244
+	if !flags.Changed(flagReplicas) {
245 245
 		return nil
246 246
 	}
247 247
 
248
-	var mode string
249
-	if flags.Changed(flagMode) {
250
-		mode, _ = flags.GetString(flagMode)
251
-	}
252
-
253
-	if !(mode == "replicated" || serviceMode.Replicated != nil) && flags.Changed(flagReplicas) {
248
+	if serviceMode.Replicated == nil {
254 249
 		return fmt.Errorf("replicas can only be used with replicated mode")
255 250
 	}
256
-
257
-	if mode == "global" {
258
-		serviceMode.Replicated = nil
259
-		serviceMode.Global = &swarm.GlobalService{}
260
-		return nil
261
-	}
262
-
263
-	if flags.Changed(flagReplicas) {
264
-		replicas := flags.Lookup(flagReplicas).Value.(*Uint64Opt).Value()
265
-		serviceMode.Replicated = &swarm.ReplicatedService{Replicas: replicas}
266
-		serviceMode.Global = nil
267
-		return nil
268
-	}
269
-
270
-	if mode == "replicated" {
271
-		if serviceMode.Replicated != nil {
272
-			return nil
273
-		}
274
-		serviceMode.Replicated = &swarm.ReplicatedService{Replicas: &DefaultReplicas}
275
-		serviceMode.Global = nil
276
-	}
277
-
251
+	serviceMode.Replicated.Replicas = flags.Lookup(flagReplicas).Value.(*Uint64Opt).Value()
278 252
 	return nil
279 253
 }