Signed-off-by: Dong Chen <dongluo.chen@docker.com>
| ... | ... |
@@ -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 |
} |