mirror of
https://github.com/containers/podman.git
synced 2025-06-23 02:18:13 +08:00
compat api: allow default bridge name for networks
Docker uses "bridge" as default network name so some tools expect this to work with network list or inspect. To fix this we change "bridge" to the podman default ("podman") name. Fixes #14983 Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
@ -23,6 +23,13 @@ import (
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func normalizeNetworkName(rt *libpod.Runtime, name string) (string, bool) {
|
||||
if name == nettypes.BridgeNetworkDriver {
|
||||
return rt.Network().DefaultNetworkName(), true
|
||||
}
|
||||
return name, false
|
||||
}
|
||||
|
||||
func InspectNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
|
||||
|
||||
@ -44,13 +51,13 @@ func InspectNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
utils.Error(w, http.StatusBadRequest, define.ErrInvalidArg)
|
||||
return
|
||||
}
|
||||
name := utils.GetName(r)
|
||||
name, changed := normalizeNetworkName(runtime, utils.GetName(r))
|
||||
net, err := runtime.Network().NetworkInspect(name)
|
||||
if err != nil {
|
||||
utils.NetworkNotFound(w, name, err)
|
||||
return
|
||||
}
|
||||
report, err := convertLibpodNetworktoDockerNetwork(runtime, net)
|
||||
report, err := convertLibpodNetworktoDockerNetwork(runtime, &net, changed)
|
||||
if err != nil {
|
||||
utils.InternalServerError(w, err)
|
||||
return
|
||||
@ -58,7 +65,7 @@ func InspectNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
utils.WriteResponse(w, http.StatusOK, report)
|
||||
}
|
||||
|
||||
func convertLibpodNetworktoDockerNetwork(runtime *libpod.Runtime, network nettypes.Network) (*types.NetworkResource, error) {
|
||||
func convertLibpodNetworktoDockerNetwork(runtime *libpod.Runtime, network *nettypes.Network, changeDefaultName bool) (*types.NetworkResource, error) {
|
||||
cons, err := runtime.GetAllContainers()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -107,11 +114,15 @@ func convertLibpodNetworktoDockerNetwork(runtime *libpod.Runtime, network nettyp
|
||||
Config: ipamConfigs,
|
||||
}
|
||||
|
||||
name := network.Name
|
||||
if changeDefaultName && name == runtime.Network().DefaultNetworkName() {
|
||||
name = nettypes.BridgeNetworkDriver
|
||||
}
|
||||
report := types.NetworkResource{
|
||||
Name: network.Name,
|
||||
ID: network.ID,
|
||||
Driver: network.Driver,
|
||||
// TODO add Created: ,
|
||||
Name: name,
|
||||
ID: network.ID,
|
||||
Driver: network.Driver,
|
||||
Created: network.Created,
|
||||
Internal: network.Internal,
|
||||
EnableIPv6: network.IPv6Enabled,
|
||||
Labels: network.Labels,
|
||||
@ -149,7 +160,7 @@ func ListNetworks(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
reports := make([]*types.NetworkResource, 0, len(nets))
|
||||
for _, net := range nets {
|
||||
report, err := convertLibpodNetworktoDockerNetwork(runtime, net)
|
||||
report, err := convertLibpodNetworktoDockerNetwork(runtime, &net, true)
|
||||
if err != nil {
|
||||
utils.InternalServerError(w, err)
|
||||
return
|
||||
@ -305,7 +316,7 @@ func RemoveNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
Timeout: query.Timeout,
|
||||
}
|
||||
|
||||
name := utils.GetName(r)
|
||||
name, _ := normalizeNetworkName(runtime, utils.GetName(r))
|
||||
reports, err := ic.NetworkRm(r.Context(), []string{name}, options)
|
||||
if err != nil {
|
||||
utils.Error(w, http.StatusInternalServerError, err)
|
||||
@ -340,7 +351,7 @@ func Connect(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
netOpts := nettypes.PerNetworkOptions{}
|
||||
|
||||
name := utils.GetName(r)
|
||||
name, _ := normalizeNetworkName(runtime, utils.GetName(r))
|
||||
if netConnect.EndpointConfig != nil {
|
||||
if netConnect.EndpointConfig.Aliases != nil {
|
||||
netOpts.Aliases = netConnect.EndpointConfig.Aliases
|
||||
@ -416,7 +427,7 @@ func Disconnect(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
name := utils.GetName(r)
|
||||
name, _ := normalizeNetworkName(runtime, utils.GetName(r))
|
||||
err := runtime.DisconnectContainerFromNetwork(netDisconnect.Container, name, netDisconnect.Force)
|
||||
if err != nil {
|
||||
if errors.Is(err, define.ErrNoSuchCtr) {
|
||||
|
@ -84,12 +84,24 @@ t GET networks?filters='{"dangling":["true","0"]}' 500 \
|
||||
t GET networks?filters='{"name":["doesnotexists"]}' 200 \
|
||||
"[]"
|
||||
|
||||
# check default name in list endpoint
|
||||
t GET networks 200 \
|
||||
.[].Name~.*bridge.*
|
||||
|
||||
# network inspect docker
|
||||
t GET networks/$network1_id 200 \
|
||||
.Name=network1 \
|
||||
.Id=$network1_id \
|
||||
.Scope=local
|
||||
|
||||
# inspect default bridge network
|
||||
t GET networks/bridge 200 \
|
||||
.Name=bridge
|
||||
|
||||
# inspect default bridge network with real podman name should return real name
|
||||
t GET networks/podman 200 \
|
||||
.Name=podman
|
||||
|
||||
# network create docker
|
||||
t POST networks/create Name=net3\ IPAM='{"Config":[]}' 201
|
||||
# network delete docker
|
||||
|
Reference in New Issue
Block a user