mirror of
https://github.com/containers/podman.git
synced 2026-10-22 18:05:37 -04:00
Merge pull request #7188 from zhangguanzhang/network-404
API returns 500 in case network is not found instead of 404
This commit is contained in:
8 files changed
+30
-14
No files matched your search
@@ -20,6 +20,9 @@ var (
|
||||
// ErrNoSuchVolume indicates the requested volume does not exist
|
||||
ErrNoSuchVolume = errors.New("no such volume")
|
||||
|
||||
// ErrNoSuchNetwork indicates the requested network does not exist
|
||||
ErrNoSuchNetwork = errors.New("network not found")
|
||||
|
||||
// ErrNoSuchExecSession indicates that the requested exec session does
|
||||
// not exist.
|
||||
ErrNoSuchExecSession = errors.New("no such exec session")
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
|
||||
"github.com/containernetworking/cni/libcni"
|
||||
"github.com/containers/podman/v2/libpod"
|
||||
"github.com/containers/podman/v2/libpod/define"
|
||||
"github.com/containers/podman/v2/pkg/api/handlers/utils"
|
||||
"github.com/containers/podman/v2/pkg/domain/entities"
|
||||
"github.com/containers/podman/v2/pkg/domain/infra/abi"
|
||||
@@ -44,9 +45,7 @@ func InspectNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
name := utils.GetName(r)
|
||||
_, err = network.InspectNetwork(config, name)
|
||||
if err != nil {
|
||||
// TODO our network package does not distinguish between not finding a
|
||||
// specific network vs not being able to read it
|
||||
utils.InternalServerError(w, err)
|
||||
utils.NetworkNotFound(w, name, err)
|
||||
return
|
||||
}
|
||||
report, err := getNetworkResourceByName(name, runtime)
|
||||
@@ -285,7 +284,7 @@ func RemoveNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
if !exists {
|
||||
utils.Error(w, "network not found", http.StatusNotFound, network.ErrNetworkNotFound)
|
||||
utils.Error(w, "network not found", http.StatusNotFound, define.ErrNoSuchNetwork)
|
||||
return
|
||||
}
|
||||
if err := network.RemoveNetwork(config, name); err != nil {
|
||||
|
||||
@@ -5,10 +5,10 @@ import (
|
||||
"net/http"
|
||||
|
||||
"github.com/containers/podman/v2/libpod"
|
||||
"github.com/containers/podman/v2/libpod/define"
|
||||
"github.com/containers/podman/v2/pkg/api/handlers/utils"
|
||||
"github.com/containers/podman/v2/pkg/domain/entities"
|
||||
"github.com/containers/podman/v2/pkg/domain/infra/abi"
|
||||
"github.com/containers/podman/v2/pkg/network"
|
||||
"github.com/gorilla/schema"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
@@ -78,7 +78,7 @@ func RemoveNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
if reports[0].Err != nil {
|
||||
// If the network cannot be found, we return a 404.
|
||||
if errors.Cause(err) == network.ErrNetworkNotFound {
|
||||
if errors.Cause(err) == define.ErrNoSuchNetwork {
|
||||
utils.Error(w, "Something went wrong", http.StatusNotFound, err)
|
||||
return
|
||||
}
|
||||
@@ -104,7 +104,7 @@ func InspectNetwork(w http.ResponseWriter, r *http.Request) {
|
||||
reports, err := ic.NetworkInspect(r.Context(), []string{name}, options)
|
||||
if err != nil {
|
||||
// If the network cannot be found, we return a 404.
|
||||
if errors.Cause(err) == network.ErrNetworkNotFound {
|
||||
if errors.Cause(err) == define.ErrNoSuchNetwork {
|
||||
utils.Error(w, "Something went wrong", http.StatusNotFound, err)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ func VolumeNotFound(w http.ResponseWriter, name string, err error) {
|
||||
msg := fmt.Sprintf("No such volume: %s", name)
|
||||
Error(w, msg, http.StatusNotFound, err)
|
||||
}
|
||||
|
||||
func ContainerNotFound(w http.ResponseWriter, name string, err error) {
|
||||
if errors.Cause(err) != define.ErrNoSuchCtr {
|
||||
InternalServerError(w, err)
|
||||
@@ -55,6 +56,14 @@ func ImageNotFound(w http.ResponseWriter, name string, err error) {
|
||||
Error(w, msg, http.StatusNotFound, err)
|
||||
}
|
||||
|
||||
func NetworkNotFound(w http.ResponseWriter, name string, err error) {
|
||||
if errors.Cause(err) != define.ErrNoSuchNetwork {
|
||||
InternalServerError(w, err)
|
||||
}
|
||||
msg := fmt.Sprintf("No such network: %s", name)
|
||||
Error(w, msg, http.StatusNotFound, err)
|
||||
}
|
||||
|
||||
func PodNotFound(w http.ResponseWriter, name string, err error) {
|
||||
if errors.Cause(err) != define.ErrNoSuchPod {
|
||||
InternalServerError(w, err)
|
||||
|
||||
@@ -2,7 +2,6 @@ package network
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net"
|
||||
)
|
||||
|
||||
@@ -20,10 +19,6 @@ const (
|
||||
DefaultPodmanDomainName = "dns.podman"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrNetworkNotFound = errors.New("network not found")
|
||||
)
|
||||
|
||||
// GetDefaultPodmanNetwork outputs the default network for podman
|
||||
func GetDefaultPodmanNetwork() (*net.IPNet, error) {
|
||||
_, n, err := net.ParseCIDR("10.88.1.0/24")
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/containernetworking/cni/libcni"
|
||||
"github.com/containernetworking/plugins/plugins/ipam/host-local/backend/allocator"
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v2/libpod/define"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
@@ -55,7 +56,7 @@ func GetCNIConfigPathByName(config *config.Config, name string) (string, error)
|
||||
return confFile, nil
|
||||
}
|
||||
}
|
||||
return "", errors.Wrap(ErrNetworkNotFound, fmt.Sprintf("unable to find network configuration for %s", name))
|
||||
return "", errors.Wrap(define.ErrNoSuchNetwork, fmt.Sprintf("unable to find network configuration for %s", name))
|
||||
}
|
||||
|
||||
// ReadRawCNIConfByName reads the raw CNI configuration for a CNI
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"github.com/containernetworking/cni/pkg/types"
|
||||
"github.com/containernetworking/plugins/plugins/ipam/host-local/backend/allocator"
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v2/libpod/define"
|
||||
"github.com/containers/podman/v2/pkg/util"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
@@ -200,7 +201,7 @@ func InspectNetwork(config *config.Config, name string) (map[string]interface{},
|
||||
func Exists(config *config.Config, name string) (bool, error) {
|
||||
_, err := ReadRawCNIConfByName(config, name)
|
||||
if err != nil {
|
||||
if errors.Cause(err) == ErrNetworkNotFound {
|
||||
if errors.Cause(err) == define.ErrNoSuchNetwork {
|
||||
return false, nil
|
||||
}
|
||||
return false, err
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# -*- sh -*-
|
||||
#
|
||||
# network-related tests
|
||||
#
|
||||
|
||||
t GET /networks/non-existing-network 404
|
||||
|
||||
# vim: filetype=sh
|
||||
Reference in new issue
Block a user