Skip to content

Commit 615df13

Browse files
committed
fix network aliasses merge logic to conform to docker compose v1
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent 999ce24 commit 615df13

File tree

2 files changed

+6
-26
lines changed

2 files changed

+6
-26
lines changed

loader/merge.go

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ var serviceSpecials = &specials{
3838
reflect.TypeOf([]types.ServiceSecretConfig{}): mergeSlice(toServiceSecretConfigsMap, toServiceSecretConfigsSlice),
3939
reflect.TypeOf([]types.ServiceConfigObjConfig{}): mergeSlice(toServiceConfigObjConfigsMap, toSServiceConfigObjConfigsSlice),
4040
reflect.TypeOf(&types.UlimitsConfig{}): mergeUlimitsConfig,
41-
reflect.TypeOf(&types.ServiceNetworkConfig{}): mergeServiceNetworkConfig,
4241
},
4342
}
4443

@@ -327,20 +326,6 @@ func mergeUlimitsConfig(dst, src reflect.Value) error {
327326
return nil
328327
}
329328

330-
// nolint: unparam
331-
func mergeServiceNetworkConfig(dst, src reflect.Value) error {
332-
if src.Interface() != reflect.Zero(reflect.TypeOf(src.Interface())).Interface() {
333-
dst.Elem().FieldByName("Aliases").Set(src.Elem().FieldByName("Aliases"))
334-
if ipv4 := src.Elem().FieldByName("Ipv4Address").Interface().(string); ipv4 != "" {
335-
dst.Elem().FieldByName("Ipv4Address").SetString(ipv4)
336-
}
337-
if ipv6 := src.Elem().FieldByName("Ipv6Address").Interface().(string); ipv6 != "" {
338-
dst.Elem().FieldByName("Ipv6Address").SetString(ipv6)
339-
}
340-
}
341-
return nil
342-
}
343-
344329
func getLoggingDriver(v reflect.Value) string {
345330
return v.FieldByName("Driver").String()
346331
}

loader/merge_test.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,7 @@ func TestLoadMultipleServiceNetworks(t *testing.T) {
816816
},
817817
expected: map[string]*types.ServiceNetworkConfig{
818818
"net1": {
819-
Aliases: []string{"alias2", "alias3"},
819+
Aliases: []string{"alias1", "alias2", "alias3"},
820820
},
821821
"net2": nil,
822822
"net3": {},
@@ -1111,13 +1111,8 @@ func TestMergeUlimitsConfig(t *testing.T) {
11111111
}
11121112

11131113
func TestMergeServiceNetworkConfig(t *testing.T) {
1114-
specials := &specials{
1115-
m: map[reflect.Type]func(dst, src reflect.Value) error{
1116-
reflect.TypeOf(&types.ServiceNetworkConfig{}): mergeServiceNetworkConfig,
1117-
},
1118-
}
11191114
base := map[string]*types.ServiceNetworkConfig{
1120-
"override-aliases": {
1115+
"merge": {
11211116
Aliases: []string{"100", "101"},
11221117
Ipv4Address: "127.0.0.1",
11231118
Ipv6Address: "0:0:0:0:0:0:0:1",
@@ -1129,7 +1124,7 @@ func TestMergeServiceNetworkConfig(t *testing.T) {
11291124
},
11301125
}
11311126
override := map[string]*types.ServiceNetworkConfig{
1132-
"override-aliases": {
1127+
"merge": {
11331128
Aliases: []string{"110", "111"},
11341129
Ipv4Address: "127.0.1.1",
11351130
Ipv6Address: "0:0:0:0:0:0:1:1",
@@ -1140,14 +1135,14 @@ func TestMergeServiceNetworkConfig(t *testing.T) {
11401135
Ipv6Address: "0:0:0:0:0:0:3:1",
11411136
},
11421137
}
1143-
err := mergo.Merge(&base, &override, mergo.WithOverride, mergo.WithTransformers(specials))
1138+
err := mergo.Merge(&base, &override, mergo.WithAppendSlice, mergo.WithOverride)
11441139
assert.NilError(t, err)
11451140
assert.DeepEqual(
11461141
t,
11471142
base,
11481143
map[string]*types.ServiceNetworkConfig{
1149-
"override-aliases": {
1150-
Aliases: []string{"110", "111"},
1144+
"merge": {
1145+
Aliases: []string{"100", "101", "110", "111"},
11511146
Ipv4Address: "127.0.1.1",
11521147
Ipv6Address: "0:0:0:0:0:0:1:1",
11531148
},

0 commit comments

Comments
 (0)