mirror of
https://github.com/containers/podman.git
synced 2025-06-22 01:48:54 +08:00
Merge pull request #14534 from jakecorrenti/docker-compose-update-network-mtu
(rootful) docker-compose now updates network MTU
This commit is contained in:
@ -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)
|
||||||
}
|
}
|
||||||
|
26
test/compose/update_network_mtu/docker-compose.yml
Normal file
26
test/compose/update_network_mtu/docker-compose.yml
Normal 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
|
10
test/compose/update_network_mtu/tests.sh
Normal file
10
test/compose/update_network_mtu/tests.sh
Normal 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"
|
Reference in New Issue
Block a user