Visitar URL original
Add maximum replicas per node support to stack version 3.8 · docker/cli@6347ab3 · GitHub
Skip to content

Commit 6347ab3

Browse files
committed
Add maximum replicas per node support to stack version 3.8
Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
1 parent 1b8d1e2 commit 6347ab3

6 files changed

Lines changed: 48 additions & 40 deletions

File tree

‎cli/compose/convert/service.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ func Service(
158158
Placement: &swarm.Placement{
159159
Constraints: service.Deploy.Placement.Constraints,
160160
Preferences: getPlacementPreference(service.Deploy.Placement.Preferences),
161+
MaxReplicas: service.Deploy.Placement.MaxReplicas,
161162
},
162163
},
163164
EndpointSpec: endpoint,

‎cli/compose/loader/full-example.yml‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version: "3.7"
1+
version: "3.8"
22

33
services:
44
foo:
@@ -82,6 +82,7 @@ services:
8282
window: 120s
8383
placement:
8484
constraints: [node=foo]
85+
max_replicas_per_node: 5
8586
preferences:
8687
- spread: node.labels.az
8788
endpoint_mode: dnsrr

‎cli/compose/loader/full-struct_test.go‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010

1111
func fullExampleConfig(workingDir, homeDir string) *types.Config {
1212
return &types.Config{
13-
Version: "3.7",
13+
Version: "3.8",
1414
Services: services(workingDir, homeDir),
1515
Networks: networks(),
1616
Volumes: volumes(),
@@ -111,6 +111,7 @@ func services(workingDir, homeDir string) []types.ServiceConfig {
111111
},
112112
Placement: types.Placement{
113113
Constraints: []string{"node=foo"},
114+
MaxReplicas: uint64(5),
114115
Preferences: []types.PlacementPreferences{
115116
{
116117
Spread: "node.labels.az",
@@ -507,7 +508,7 @@ func secrets(workingDir string) map[string]types.SecretConfig {
507508
}
508509

509510
func fullExampleYAML(workingDir string) string {
510-
return fmt.Sprintf(`version: "3.7"
511+
return fmt.Sprintf(`version: "3.8"
511512
services:
512513
foo:
513514
build:
@@ -588,6 +589,7 @@ services:
588589
- node=foo
589590
preferences:
590591
- spread: node.labels.az
592+
max_replicas_per_node: 5
591593
endpoint_mode: dnsrr
592594
devices:
593595
- /dev/ttyUSB0:/dev/ttyUSB0
@@ -1083,7 +1085,8 @@ func fullExampleJSON(workingDir string) string {
10831085
{
10841086
"spread": "node.labels.az"
10851087
}
1086-
]
1088+
],
1089+
"max_replicas_per_node": 5
10871090
},
10881091
"endpoint_mode": "dnsrr"
10891092
},
@@ -1383,7 +1386,7 @@ func fullExampleJSON(workingDir string) string {
13831386
"working_dir": "/code"
13841387
}
13851388
},
1386-
"version": "3.7",
1389+
"version": "3.8",
13871390
"volumes": {
13881391
"another-volume": {
13891392
"name": "user_specified_name",

‎cli/compose/schema/bindata.go‎

Lines changed: 35 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎cli/compose/schema/data/config_schema_v3.8.json‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,8 @@
424424
},
425425
"additionalProperties": false
426426
}
427-
}
427+
},
428+
"max_replicas_per_node": {"type": "integer"}
428429
},
429430
"additionalProperties": false
430431
}

‎cli/compose/types/types.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ type RestartPolicy struct {
346346
type Placement struct {
347347
Constraints []string `yaml:",omitempty" json:"constraints,omitempty"`
348348
Preferences []PlacementPreferences `yaml:",omitempty" json:"preferences,omitempty"`
349+
MaxReplicas uint64 `mapstructure:"max_replicas_per_node" yaml:"max_replicas_per_node,omitempty" json:"max_replicas_per_node,omitempty"`
349350
}
350351

351352
// PlacementPreferences is the preferences for a service placement

0 commit comments

Comments
 (0)