mirror of
https://github.com/containers/podman.git
synced 2025-10-18 03:33:32 +08:00
Merge pull request #5169 from edsantiago/apiv2_pod_status_codes
API v2: pods: fix two incorrect return codes
This commit is contained in:
@ -91,7 +91,11 @@ func PodCreate(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
pod, err := runtime.NewPod(r.Context(), options...)
|
pod, err := runtime.NewPod(r.Context(), options...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, err)
|
http_code := http.StatusInternalServerError
|
||||||
|
if errors.Cause(err) == define.ErrPodExists {
|
||||||
|
http_code = http.StatusConflict
|
||||||
|
}
|
||||||
|
utils.Error(w, "Something went wrong.", http_code, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
utils.WriteResponse(w, http.StatusCreated, handlers.IDResponse{ID: pod.CgroupParent()})
|
utils.WriteResponse(w, http.StatusCreated, handlers.IDResponse{ID: pod.CgroupParent()})
|
||||||
@ -409,5 +413,5 @@ func PodExists(w http.ResponseWriter, r *http.Request) {
|
|||||||
utils.PodNotFound(w, name, err)
|
utils.PodNotFound(w, name, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
utils.WriteResponse(w, http.StatusOK, "")
|
utils.WriteResponse(w, http.StatusNoContent, "")
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,14 @@ func IsLibpodRequest(r *http.Request) bool {
|
|||||||
|
|
||||||
// WriteResponse encodes the given value as JSON or string and renders it for http client
|
// WriteResponse encodes the given value as JSON or string and renders it for http client
|
||||||
func WriteResponse(w http.ResponseWriter, code int, value interface{}) {
|
func WriteResponse(w http.ResponseWriter, code int, value interface{}) {
|
||||||
|
// RFC2616 explicitly states that the following status codes "MUST NOT
|
||||||
|
// include a message-body":
|
||||||
|
switch code {
|
||||||
|
case http.StatusNoContent, http.StatusNotModified: // 204, 304
|
||||||
|
w.WriteHeader(code)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
switch v := value.(type) {
|
switch v := value.(type) {
|
||||||
case string:
|
case string:
|
||||||
w.Header().Set("Content-Type", "text/plain; charset=us-ascii")
|
w.Header().Set("Content-Type", "text/plain; charset=us-ascii")
|
||||||
|
@ -41,6 +41,8 @@ func (s *APIServer) registerPodsHandlers(r *mux.Router) error {
|
|||||||
// type: string
|
// type: string
|
||||||
// 400:
|
// 400:
|
||||||
// $ref: "#/responses/BadParamError"
|
// $ref: "#/responses/BadParamError"
|
||||||
|
// 409:
|
||||||
|
// description: pod already exists
|
||||||
// 500:
|
// 500:
|
||||||
// $ref: "#/responses/InternalError"
|
// $ref: "#/responses/InternalError"
|
||||||
r.Handle(VersionedPath("/libpod/pods/prune"), APIHandler(s.Context, libpod.PodPrune)).Methods(http.MethodPost)
|
r.Handle(VersionedPath("/libpod/pods/prune"), APIHandler(s.Context, libpod.PodPrune)).Methods(http.MethodPost)
|
||||||
|
Reference in New Issue
Block a user