Skip to content

Commit

Permalink
Merge pull request #5169 from edsantiago/apiv2_pod_status_codes
Browse files Browse the repository at this point in the history
API v2: pods: fix two incorrect return codes
  • Loading branch information
openshift-merge-robot authored Feb 11, 2020
2 parents d34ce13 + bdccdd2 commit 4bdfeed
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
8 changes: 6 additions & 2 deletions pkg/api/handlers/libpod/pods.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,11 @@ func PodCreate(w http.ResponseWriter, r *http.Request) {

pod, err := runtime.NewPod(r.Context(), options...)
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
}
utils.WriteResponse(w, http.StatusCreated, handlers.IDResponse{ID: pod.CgroupParent()})
Expand Down Expand Up @@ -409,5 +413,5 @@ func PodExists(w http.ResponseWriter, r *http.Request) {
utils.PodNotFound(w, name, err)
return
}
utils.WriteResponse(w, http.StatusOK, "")
utils.WriteResponse(w, http.StatusNoContent, "")
}
8 changes: 8 additions & 0 deletions pkg/api/handlers/utils/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
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) {
case string:
w.Header().Set("Content-Type", "text/plain; charset=us-ascii")
Expand Down
2 changes: 2 additions & 0 deletions pkg/api/server/register_pods.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ func (s *APIServer) registerPodsHandlers(r *mux.Router) error {
// type: string
// 400:
// $ref: "#/responses/BadParamError"
// 409:
// description: pod already exists
// 500:
// $ref: "#/responses/InternalError"
r.Handle(VersionedPath("/libpod/pods/prune"), APIHandler(s.Context, libpod.PodPrune)).Methods(http.MethodPost)
Expand Down

0 comments on commit 4bdfeed

Please sign in to comment.