mirror of
https://github.com/containers/podman.git
synced 2025-06-21 17:38:12 +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:
@ -161,8 +161,9 @@ func ListNetworks(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
func CreateNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
var (
|
||||
networkCreate types.NetworkCreateRequest
|
||||
network nettypes.Network
|
||||
networkCreate types.NetworkCreateRequest
|
||||
network nettypes.Network
|
||||
responseWarning string
|
||||
)
|
||||
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
|
||||
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.IPv6Enabled = networkCreate.EnableIPv6
|
||||
|
||||
// FIXME use docker options and convert them to valid libpod options
|
||||
// network.Options = networkCreate.Options
|
||||
network.Options = make(map[string]string)
|
||||
|
||||
// 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
|
||||
if network.Driver == nettypes.BridgeNetworkDriver {
|
||||
@ -242,9 +275,10 @@ func CreateNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
body := struct {
|
||||
ID string `json:"Id"`
|
||||
Warning string
|
||||
Warning string `json:"Warning"`
|
||||
}{
|
||||
ID: newNetwork.ID,
|
||||
ID: newNetwork.ID,
|
||||
Warning: responseWarning,
|
||||
}
|
||||
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