summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmbrose Chua <ambrose@hey.com>2021-11-17 20:07:58 +0800
committerAmbrose Chua <ambrose@hey.com>2021-11-20 21:00:38 +0800
commitab56a7c4b75e3f4c083da420cc9b7a85be4303c8 (patch)
tree1d05961b8a50d295725e80bf5cf364c628ac3c19
parenta6976c9ca8346331001dfade295173ad1482c2f6 (diff)
downloadpodman-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.go15
-rw-r--r--test/apiv2/35-networks.at27
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