mirror of
https://github.com/docker/compose.git
synced 2025-07-23 21:54:40 +02:00
fix support for service.mac_address
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
e73c2303fb
commit
fc566509d5
@ -545,23 +545,28 @@ func defaultNetworkSettings(
|
|||||||
primaryNetworkKey = "default"
|
primaryNetworkKey = "default"
|
||||||
}
|
}
|
||||||
primaryNetworkMobyNetworkName := project.Networks[primaryNetworkKey].Name
|
primaryNetworkMobyNetworkName := project.Networks[primaryNetworkKey].Name
|
||||||
endpointsConfig := map[string]*network.EndpointSettings{
|
primaryNetworkEndpoint := createEndpointSettings(project, service, serviceIndex, primaryNetworkKey, links, useNetworkAliases)
|
||||||
primaryNetworkMobyNetworkName: createEndpointSettings(project, service, serviceIndex, primaryNetworkKey, links, useNetworkAliases),
|
endpointsConfig := map[string]*network.EndpointSettings{}
|
||||||
}
|
|
||||||
|
|
||||||
// Starting from API version 1.44, the Engine will take several EndpointsConfigs
|
// Starting from API version 1.44, the Engine will take several EndpointsConfigs
|
||||||
// so we can pass all the extra networks we want the container to be connected to
|
// so we can pass all the extra networks we want the container to be connected to
|
||||||
// in the network configuration instead of connecting the container to each extra
|
// in the network configuration instead of connecting the container to each extra
|
||||||
// network individually after creation.
|
// network individually after creation.
|
||||||
if versions.GreaterThanOrEqualTo(version, "1.44") && len(service.Networks) > 1 {
|
if versions.GreaterThanOrEqualTo(version, "1.44") {
|
||||||
serviceNetworks := service.NetworksByPriority()
|
if len(service.Networks) > 1 {
|
||||||
for _, networkKey := range serviceNetworks[1:] {
|
serviceNetworks := service.NetworksByPriority()
|
||||||
mobyNetworkName := project.Networks[networkKey].Name
|
for _, networkKey := range serviceNetworks[1:] {
|
||||||
epSettings := createEndpointSettings(project, service, serviceIndex, networkKey, links, useNetworkAliases)
|
mobyNetworkName := project.Networks[networkKey].Name
|
||||||
endpointsConfig[mobyNetworkName] = epSettings
|
epSettings := createEndpointSettings(project, service, serviceIndex, networkKey, links, useNetworkAliases)
|
||||||
|
endpointsConfig[mobyNetworkName] = epSettings
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if primaryNetworkEndpoint.MacAddress == "" {
|
||||||
|
primaryNetworkEndpoint.MacAddress = service.MacAddress
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
endpointsConfig[primaryNetworkMobyNetworkName] = primaryNetworkEndpoint
|
||||||
networkConfig := &network.NetworkingConfig{
|
networkConfig := &network.NetworkingConfig{
|
||||||
EndpointsConfig: endpointsConfig,
|
EndpointsConfig: endpointsConfig,
|
||||||
}
|
}
|
||||||
|
@ -278,33 +278,26 @@ func TestDefaultNetworkSettings(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestCreateEndpointSettings(t *testing.T) {
|
func TestCreateEndpointSettings(t *testing.T) {
|
||||||
eps := createEndpointSettings(
|
eps := createEndpointSettings(&composetypes.Project{
|
||||||
&composetypes.Project{
|
Name: "projName",
|
||||||
Name: "projName",
|
}, composetypes.ServiceConfig{
|
||||||
},
|
Name: "serviceName",
|
||||||
composetypes.ServiceConfig{
|
ContainerName: "containerName",
|
||||||
Name: "serviceName",
|
Networks: map[string]*composetypes.ServiceNetworkConfig{
|
||||||
ContainerName: "containerName",
|
"netName": {
|
||||||
Networks: map[string]*composetypes.ServiceNetworkConfig{
|
Priority: 100,
|
||||||
"netName": {
|
Aliases: []string{"alias1", "alias2"},
|
||||||
Priority: 100,
|
Ipv4Address: "10.16.17.18",
|
||||||
Aliases: []string{"alias1", "alias2"},
|
Ipv6Address: "fdb4:7a7f:373a:3f0c::42",
|
||||||
Ipv4Address: "10.16.17.18",
|
LinkLocalIPs: []string{"169.254.10.20"},
|
||||||
Ipv6Address: "fdb4:7a7f:373a:3f0c::42",
|
MacAddress: "10:00:00:00:01",
|
||||||
LinkLocalIPs: []string{"169.254.10.20"},
|
DriverOpts: composetypes.Options{
|
||||||
MacAddress: "10:00:00:00:01",
|
"driverOpt1": "optval1",
|
||||||
DriverOpts: composetypes.Options{
|
"driverOpt2": "optval2",
|
||||||
"driverOpt1": "optval1",
|
|
||||||
"driverOpt2": "optval2",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
0, // serviceIndex
|
}, 0, "netName", []string{"link1", "link2"}, true)
|
||||||
"netName", // networkKey
|
|
||||||
[]string{"link1", "link2"}, // links
|
|
||||||
true, // useNetworkAliases
|
|
||||||
)
|
|
||||||
assert.Check(t, cmp.DeepEqual(eps, &network.EndpointSettings{
|
assert.Check(t, cmp.DeepEqual(eps, &network.EndpointSettings{
|
||||||
IPAMConfig: &network.EndpointIPAMConfig{
|
IPAMConfig: &network.EndpointIPAMConfig{
|
||||||
IPv4Address: "10.16.17.18",
|
IPv4Address: "10.16.17.18",
|
||||||
|
4
pkg/e2e/fixtures/network-test/mac_address.yaml
Normal file
4
pkg/e2e/fixtures/network-test/mac_address.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
services:
|
||||||
|
test:
|
||||||
|
image: nginx:alpine
|
||||||
|
mac_address: 00:e0:84:35:d0:e8
|
@ -172,3 +172,15 @@ func TestNetworkConfigChanged(t *testing.T) {
|
|||||||
res = c.RunDockerComposeCmd(t, "--project-name", projectName, "exec", "test", "hostname", "-i")
|
res = c.RunDockerComposeCmd(t, "--project-name", projectName, "exec", "test", "hostname", "-i")
|
||||||
res.Assert(t, icmd.Expected{Out: "192.168.0."})
|
res.Assert(t, icmd.Expected{Out: "192.168.0."})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMacAddress(t *testing.T) {
|
||||||
|
c := NewCLI(t)
|
||||||
|
const projectName = "network_mac_address"
|
||||||
|
c.RunDockerComposeCmd(t, "-f", "./fixtures/network-test/mac_address.yaml", "--project-name", projectName, "up", "-d")
|
||||||
|
t.Cleanup(func() {
|
||||||
|
c.cleanupWithDown(t, projectName)
|
||||||
|
})
|
||||||
|
res := c.RunDockerCmd(t, "inspect", fmt.Sprintf("%s-test-1", projectName), "-f", "{{ (index .NetworkSettings.Networks \"network_mac_address_default\" ).MacAddress }}")
|
||||||
|
res.Assert(t, icmd.Expected{Out: "00:e0:84:35:d0:e8"})
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user