Set default network driver for APIv2 networks

Recent changes in networking require that the cni network driver be set.
If the user provides no driver, we set the driver to the
defaultnetworkdriver which currently is "bridge".

Fixes: #8294

Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
baude 2020-11-10 12:41:16 -06:00
parent ca672373b5
commit b917b9925c
2 changed files with 41 additions and 41 deletions

View File

@ -6,6 +6,7 @@ import (
"github.com/containers/podman/v2/libpod" "github.com/containers/podman/v2/libpod"
"github.com/containers/podman/v2/libpod/define" "github.com/containers/podman/v2/libpod/define"
"github.com/containers/podman/v2/libpod/network"
"github.com/containers/podman/v2/pkg/api/handlers/utils" "github.com/containers/podman/v2/pkg/api/handlers/utils"
"github.com/containers/podman/v2/pkg/domain/entities" "github.com/containers/podman/v2/pkg/domain/entities"
"github.com/containers/podman/v2/pkg/domain/infra/abi" "github.com/containers/podman/v2/pkg/domain/infra/abi"
@ -31,6 +32,9 @@ func CreateNetwork(w http.ResponseWriter, r *http.Request) {
errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String())) errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String()))
return return
} }
if len(options.Driver) < 1 {
options.Driver = network.DefaultNetworkDriver
}
ic := abi.ContainerEngine{Libpod: runtime} ic := abi.ContainerEngine{Libpod: runtime}
report, err := ic.NetworkCreate(r.Context(), query.Name, options) report, err := ic.NetworkCreate(r.Context(), query.Name, options)
if err != nil { if err != nil {

View File

@ -6,52 +6,48 @@
t GET networks/non-existing-network 404 \ t GET networks/non-existing-network 404 \
.cause='network not found' .cause='network not found'
# FIXME FIXME FIXME: failing in CI. Deferring to someone else to fix later. t POST libpod/networks/create?name=network1 '' 200 \
#if root; then .Filename~.*/network1\\.conflist
if false; then
t POST libpod/networks/create?name=network1 '' 200 \
.Filename~.*/network1\\.conflist
# --data '{"Subnet":{"IP":"10.10.254.0","Mask":[255,255,255,0]}}' # --data '{"Subnet":{"IP":"10.10.254.0","Mask":[255,255,255,0]}}'
t POST libpod/networks/create?name=network2 '"Subnet":{"IP":"10.10.254.0","Mask":[255,255,255,0]}' 200 \ t POST libpod/networks/create?name=network2 '"Subnet":{"IP":"10.10.254.0","Mask":[255,255,255,0]}' 200 \
.Filename~.*/network2\\.conflist .Filename~.*/network2\\.conflist
# test for empty mask # test for empty mask
t POST libpod/networks/create '"Subnet":{"IP":"10.10.1.0","Mask":[]}' 500 \ t POST libpod/networks/create '"Subnet":{"IP":"10.10.1.0","Mask":[]}' 500 \
.cause~'.*cannot be empty' .cause~'.*cannot be empty'
# test for invalid mask # test for invalid mask
t POST libpod/networks/create '"Subnet":{"IP":"10.10.1.0","Mask":[0,255,255,0]}' 500 \ t POST libpod/networks/create '"Subnet":{"IP":"10.10.1.0","Mask":[0,255,255,0]}' 500 \
.cause~'.*mask is invalid' .cause~'.*mask is invalid'
# network list # network list
t GET libpod/networks/json 200 t GET libpod/networks/json 200
t GET libpod/networks/json?filter=name=network1 200 \ t GET libpod/networks/json?filter=name=network1 200 \
length=1 \ length=1 \
.[0].Name=network1 .[0].Name=network1
t GET networks 200 t GET networks 200
#network list docker endpoint #network list docker endpoint
#filters={"name":["network1","network2"]} #filters={"name":["network1","network2"]}
t GET networks?filters=%7B%22name%22%3A%5B%22network1%22%2C%22network2%22%5D%7D 200 \ t GET networks?filters=%7B%22name%22%3A%5B%22network1%22%2C%22network2%22%5D%7D 200 \
length=2 length=2
#filters={"name":["network"]} #filters={"name":["network"]}
t GET networks?filters=%7B%22name%22%3A%5B%22network%22%5D%7D 200 \ t GET networks?filters=%7B%22name%22%3A%5B%22network%22%5D%7D 200 \
length=2 length=2
# invalid filter filters={"label":"abc"} # invalid filter filters={"label":"abc"}
t GET networks?filters=%7B%22label%22%3A%5B%22abc%22%5D%7D 500 \ t GET networks?filters=%7B%22label%22%3A%5B%22abc%22%5D%7D 500 \
.cause="only the name filter for listing networks is implemented" .cause="only the name filter for listing networks is implemented"
# invalid filter filters={"label":"abc","name":["network"]} # invalid filter filters={"label":"abc","name":["network"]}
t GET networks?filters=%7B%22label%22%3A%22abc%22%2C%22name%22%3A%5B%22network%22%5D%7D 500 \ t GET networks?filters=%7B%22label%22%3A%22abc%22%2C%22name%22%3A%5B%22network%22%5D%7D 500 \
.cause="only the name filter for listing networks is implemented" .cause="only the name filter for listing networks is implemented"
# clean the network # clean the network
t DELETE libpod/networks/network1 200 \ t DELETE libpod/networks/network1 200 \
.[0].Name~network1 \ .[0].Name~network1 \
.[0].Err=null .[0].Err=null
t DELETE libpod/networks/network2 200 \ t DELETE libpod/networks/network2 200 \
.[0].Name~network2 \ .[0].Name~network2 \
.[0].Err=null .[0].Err=null
fi
# vim: filetype=sh # vim: filetype=sh