MCPcopy Create free account
hub / github.com/docker/cli / ToServiceMode

Method ToServiceMode

cli/command/service/opts.go:624–672  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

622}
623
624func (options *serviceOptions) ToServiceMode() (swarm.ServiceMode, error) {
625 serviceMode := swarm.ServiceMode{}
626 switch options.mode {
627 case "global":
628 if options.replicas.Value() != nil {
629 return serviceMode, errors.New("replicas can only be used with replicated or replicated-job mode")
630 }
631
632 if options.maxReplicas > 0 {
633 return serviceMode, errors.New("replicas-max-per-node can only be used with replicated or replicated-job mode")
634 }
635 if options.maxConcurrent.Value() != nil {
636 return serviceMode, errors.New("max-concurrent can only be used with replicated-job mode")
637 }
638
639 serviceMode.Global = &swarm.GlobalService{}
640 case "replicated":
641 if options.maxConcurrent.Value() != nil {
642 return serviceMode, errors.New("max-concurrent can only be used with replicated-job mode")
643 }
644
645 serviceMode.Replicated = &swarm.ReplicatedService{
646 Replicas: options.replicas.Value(),
647 }
648 case "replicated-job":
649 concurrent := options.maxConcurrent.Value()
650 if concurrent == nil {
651 concurrent = options.replicas.Value()
652 }
653 serviceMode.ReplicatedJob = &swarm.ReplicatedJob{
654 MaxConcurrent: concurrent,
655 TotalCompletions: options.replicas.Value(),
656 }
657 case "global-job":
658 if options.maxReplicas > 0 {
659 return serviceMode, errors.New("replicas-max-per-node can only be used with replicated or replicated-job mode")
660 }
661 if options.maxConcurrent.Value() != nil {
662 return serviceMode, errors.New("max-concurrent can only be used with replicated-job mode")
663 }
664 if options.replicas.Value() != nil {
665 return serviceMode, errors.New("replicas can only be used with replicated or replicated-job mode")
666 }
667 serviceMode.GlobalJob = &swarm.GlobalJob{}
668 default:
669 return serviceMode, fmt.Errorf("unknown mode: %s, only replicated and global supported", options.mode)
670 }
671 return serviceMode, nil
672}
673
674func (options *serviceOptions) ToStopGracePeriod(flags *pflag.FlagSet) *time.Duration {
675 if flags.Changed(flagStopGracePeriod) {

Callers 2

ToServiceMethod · 0.95

Calls 1

ValueMethod · 0.65