diff options
author | Ambrose Chua <ambrose@hey.com> | 2021-11-17 20:07:58 +0800 |
---|---|---|
committer | Ambrose Chua <ambrose@hey.com> | 2021-11-20 21:00:38 +0800 |
commit | ab56a7c4b75e3f4c083da420cc9b7a85be4303c8 (patch) | |
tree | 1d05961b8a50d295725e80bf5cf364c628ac3c19 | |
parent | a6976c9ca8346331001dfade295173ad1482c2f6 (diff) | |
download | podman-ab56a7c4b75e3f4c083da420cc9b7a85be4303c8.tar.gz podman-ab56a7c4b75e3f4c083da420cc9b7a85be4303c8.tar.bz2 podman-ab56a7c4b75e3f4c083da420cc9b7a85be4303c8.zip |
compat: Add subnet mask behind IP address to match Docker API
Signed-off-by: Ambrose Chua <ambrose@hey.com>
-rw-r--r-- | pkg/api/handlers/compat/networks.go | 15 | ||||
-rw-r--r-- | test/apiv2/35-networks.at | 27 |
2 files changed, 39 insertions, 3 deletions
diff --git a/pkg/api/handlers/compat/networks.go b/pkg/api/handlers/compat/networks.go index dd28f6deb..8aab29658 100644 --- a/pkg/api/handlers/compat/networks.go +++ b/pkg/api/handlers/compat/networks.go @@ -2,6 +2,7 @@ package compat import ( "encoding/json" + "fmt" "net" "net/http" @@ -69,12 +70,20 @@ func convertLibpodNetworktoDockerNetwork(runtime *libpod.Runtime, network nettyp return nil, err } if netData, ok := data.NetworkSettings.Networks[network.Name]; ok { + ipv4Address := "" + if netData.IPAddress != "" { + ipv4Address = fmt.Sprintf("%s/%d", netData.IPAddress, netData.IPPrefixLen) + } + ipv6Address := "" + if netData.GlobalIPv6Address != "" { + ipv6Address = fmt.Sprintf("%s/%d", netData.GlobalIPv6Address, netData.GlobalIPv6PrefixLen) + } containerEndpoint := types.EndpointResource{ - Name: netData.NetworkID, + Name: con.Name(), EndpointID: netData.EndpointID, MacAddress: netData.MacAddress, - IPv4Address: netData.IPAddress, - IPv6Address: netData.GlobalIPv6Address, + IPv4Address: ipv4Address, + IPv6Address: ipv6Address, } containerEndpoints[con.ID()] = containerEndpoint } diff --git a/test/apiv2/35-networks.at b/test/apiv2/35-networks.at index fd8dfd32b..713f677fa 100644 --- a/test/apiv2/35-networks.at +++ b/test/apiv2/35-networks.at @@ -170,4 +170,31 @@ t DELETE libpod/networks/macvlan1 200 \ .[0].Name~macvlan1 \ .[0].Err=null +# +# test networks with containers +# +podman pull $IMAGE &>/dev/null + +# Ensure clean slate +podman rm -a -f &>/dev/null + +# create a network +podman network create --subnet 10.10.253.0/24 --gateway 10.10.253.1 network5 +t GET libpod/networks/json?filters='{"name":["network5"]}' 200 \ + .[0].id~[0-9a-f]\\{64\\} +nid=$(jq -r '.[0].id' <<<"$output") +# create a pod on a network +CNAME=mynettest +podman run --network network5 --name $CNAME --ip 10.10.253.2 --mac-address 0a:01:73:78:43:18 -td $IMAGE top +t GET libpod/containers/json?all=true 200 \ + .[0].Id~[0-9a-f]\\{64\\} +cid=$(jq -r '.[0].Id' <<<"$output") +# compat api inspect network +t GET networks/$nid 200 .Name="network5" \ + .Containers[\"$cid\"].Name=$CNAME \ + .Containers[\"$cid\"].MacAddress=0a:01:73:78:43:18 \ + .Containers[\"$cid\"].IPv4Address=10.10.253.2/24 +# clean the network +podman network rm -f network5 + # vim: filetype=sh |