github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/cmd/swarmctl/service/flagparser/placement.go (about) 1 package flagparser 2 3 import ( 4 "fmt" 5 6 "github.com/docker/swarmkit/api" 7 "github.com/spf13/pflag" 8 ) 9 10 func parsePlacement(flags *pflag.FlagSet, spec *api.ServiceSpec) error { 11 if flags.Changed("constraint") { 12 constraints, err := flags.GetStringSlice("constraint") 13 if err != nil { 14 return err 15 } 16 if spec.Task.Placement == nil { 17 spec.Task.Placement = &api.Placement{} 18 } 19 spec.Task.Placement.Constraints = constraints 20 } 21 22 if flags.Changed("replicas-max-per-node") { 23 if spec.GetReplicated() == nil { 24 return fmt.Errorf("--replicas-max-per-node can only be specified in --mode replicated") 25 } 26 maxReplicas, err := flags.GetUint64("replicas-max-per-node") 27 if err != nil { 28 return err 29 } 30 if spec.Task.Placement == nil { 31 spec.Task.Placement = &api.Placement{} 32 } 33 spec.Task.Placement.MaxReplicas = maxReplicas 34 } 35 36 return nil 37 }