Merge pull request #16745 from Luap99/docker-compose-mac

compat API: allow MacAddress on container config
This commit is contained in:
OpenShift Merge Robot
2022-12-05 13:57:53 -05:00
committed by GitHub
3 changed files with 17 additions and 1 deletions

View File

@ -287,6 +287,9 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
NoHosts: rtc.Containers.NoHosts,
}
// sigh docker-compose sets the mac address on the container config instead on the per network endpoint config
containerMacAddress := cc.MacAddress
// network names
switch {
case len(cc.NetworkingConfig.EndpointsConfig) > 0:
@ -331,6 +334,16 @@ func cliOpts(cc handlers.CreateContainerConfig, rtc *config.Config) (*entities.C
return nil, nil, fmt.Errorf("failed to parse the mac address %q", endpoint.MacAddress)
}
netOpts.StaticMAC = types.HardwareAddr(staticMac)
} else if len(containerMacAddress) > 0 {
// docker-compose only sets one mac address for the container on the container config
// If there are more than one network attached it will end up on the first one,
// which is not deterministic since we iterate a map. Not nice but this matches docker.
staticMac, err := net.ParseMAC(containerMacAddress)
if err != nil {
return nil, nil, fmt.Errorf("failed to parse the mac address %q", containerMacAddress)
}
netOpts.StaticMAC = types.HardwareAddr(staticMac)
containerMacAddress = ""
}
}

View File

@ -2,6 +2,7 @@ version: "3.2"
services:
test:
image: alpine
mac_address: 32:b5:b2:55:48:72
networks:
net1:
ipv4_address: 10.123.0.253

View File

@ -5,4 +5,6 @@ if [ "$TEST_FLAVOR" = "compose_v2" ]; then
ctr_name="ipam_set_ip-test-1"
fi
podman container inspect "$ctr_name" --format '{{ .NetworkSettings.Networks.ipam_set_ip_net1.IPAddress }}'
like "$output" "10.123.0.253" "$testname : ip address is set"
is "$output" "10.123.0.253" "$testname : ip address is set"
podman container inspect "$ctr_name" --format '{{ .NetworkSettings.Networks.ipam_set_ip_net1.MacAddress }}'
is "$output" "32:b5:b2:55:48:72" "$testname : mac address is set"