Fix returned error code for network creation from 500 to 409

Signed-off-by: He Xiaoxi <tossmilestone@gmail.com>
Upstream-commit: ab1871872d547e01f78a8a6c7af96c6cf05f793d
Component: engine
This commit is contained in:
He Xiaoxi
2017-10-08 16:00:00 +08:00
parent 364ecfbfa8
commit a7e36cfccc
2 changed files with 46 additions and 29 deletions
@@ -100,6 +100,24 @@ func (e ambigousResultsError) Error() string {
func (ambigousResultsError) InvalidParameter() {}
type conflictError struct {
cause error
}
func (e conflictError) Error() string {
return e.cause.Error()
}
func (e conflictError) Cause() error {
return e.cause
}
func (e conflictError) Conflict() {}
func nameConflict(name string) error {
return conflictError{libnetwork.NetworkNameError(name)}
}
func (n *networkRouter) getNetwork(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
if err := httputils.ParseForm(r); err != nil {
return err
@@ -225,7 +243,7 @@ func (n *networkRouter) postNetworkCreate(ctx context.Context, w http.ResponseWr
}
if nws, err := n.cluster.GetNetworksByName(create.Name); err == nil && len(nws) > 0 {
return libnetwork.NetworkNameError(create.Name)
return nameConflict(create.Name)
}
nw, err := n.backend.CreateNetwork(create)
@@ -235,7 +253,7 @@ func (n *networkRouter) postNetworkCreate(ctx context.Context, w http.ResponseWr
// check if user defined CheckDuplicate, if set true, return err
// otherwise prepare a warning message
if create.CheckDuplicate {
return libnetwork.NetworkNameError(create.Name)
return nameConflict(create.Name)
}
warning = libnetwork.NetworkNameError(create.Name).Error()
}