mirror of
https://github.com/containers/podman.git
synced 2025-06-28 05:58:50 +08:00
Merge pull request #16745 from Luap99/docker-compose-mac
compat API: allow MacAddress on container config
This commit is contained in:
@ -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 = ""
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
Reference in New Issue
Block a user