Merge pull request #14534 from jakecorrenti/docker-compose-update-network-mtu

(rootful) docker-compose now updates network MTU
This commit is contained in:
openshift-ci[bot]
2022-07-05 13:46:23 +00:00
committed by GitHub
3 changed files with 76 additions and 6 deletions

View File

@ -163,6 +163,7 @@ func CreateNetwork(w http.ResponseWriter, r *http.Request) {
var ( var (
networkCreate types.NetworkCreateRequest networkCreate types.NetworkCreateRequest
network nettypes.Network network nettypes.Network
responseWarning string
) )
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime) runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
if err := json.NewDecoder(r.Body).Decode(&networkCreate); err != nil { if err := json.NewDecoder(r.Body).Decode(&networkCreate); err != nil {
@ -179,8 +180,40 @@ func CreateNetwork(w http.ResponseWriter, r *http.Request) {
network.Internal = networkCreate.Internal network.Internal = networkCreate.Internal
network.IPv6Enabled = networkCreate.EnableIPv6 network.IPv6Enabled = networkCreate.EnableIPv6
// FIXME use docker options and convert them to valid libpod options network.Options = make(map[string]string)
// network.Options = networkCreate.Options
// TODO: we should consider making this constants in c/common/libnetwork/types
for opt, optVal := range networkCreate.Options {
switch opt {
case "mtu":
fallthrough
case "com.docker.network.driver.mtu":
if network.Driver == nettypes.BridgeNetworkDriver {
network.Options["mtu"] = optVal
}
case "icc":
fallthrough
case "com.docker.network.bridge.enable_icc":
// TODO: needs to be implemented
if network.Driver == nettypes.BridgeNetworkDriver {
responseWarning = "com.docker.network.bridge.enable_icc is not currently implemented"
}
case "com.docker.network.bridge.name":
if network.Driver == nettypes.BridgeNetworkDriver {
network.NetworkInterface = optVal
}
case "mode":
if network.Driver == nettypes.MacVLANNetworkDriver || network.Driver == nettypes.IPVLANNetworkDriver {
network.Options[opt] = optVal
}
case "parent":
if network.Driver == nettypes.MacVLANNetworkDriver || network.Driver == nettypes.IPVLANNetworkDriver {
network.NetworkInterface = optVal
}
default:
responseWarning = "\"" + opt + ": " + optVal + "\" is not a recognized option"
}
}
// dns is only enabled for the bridge driver // dns is only enabled for the bridge driver
if network.Driver == nettypes.BridgeNetworkDriver { if network.Driver == nettypes.BridgeNetworkDriver {
@ -242,9 +275,10 @@ func CreateNetwork(w http.ResponseWriter, r *http.Request) {
body := struct { body := struct {
ID string `json:"Id"` ID string `json:"Id"`
Warning string Warning string `json:"Warning"`
}{ }{
ID: newNetwork.ID, ID: newNetwork.ID,
Warning: responseWarning,
} }
utils.WriteResponse(w, http.StatusCreated, body) utils.WriteResponse(w, http.StatusCreated, body)
} }

View File

@ -0,0 +1,26 @@
version: '3.7'
services:
nginx:
image: alpine
ports:
- 8000:5000
networks:
- default
- macvlan_net
networks:
default:
driver: bridge
driver_opts:
com.docker.network.bridge.name: docker0
com.docker.network.driver.mtu: 9000
macvlan_net:
driver: macvlan
driver_opts:
mode: bridge
ipam:
config:
-
subnet: 192.168.20.0/24
gateway: 192.168.20.1

View File

@ -0,0 +1,10 @@
# -*- bash -*-
podman network inspect --format='{{ range . }} {{ .Options.mtu }} {{ end }}' update_network_mtu_default
like "$output" "9000" "$testname : network mtu is set"
podman network inspect --format='{{ range . }} {{ .NetworkInterface }} {{ end }}' update_network_mtu_default
like "$output" "docker0" "$testname: network interface is set"
podman network inspect --format='{{ range . }} {{ .Options.mode }} {{ end }}' update_network_mtu_macvlan_net
like "$output" "bridge" "$testname : network mode is set"