diff --git a/pkg/client/request.go b/pkg/client/request.go index 1e16b98eeaf..de16849f75e 100644 --- a/pkg/client/request.go +++ b/pkg/client/request.go @@ -411,11 +411,26 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) ([]b switch { case resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent: if !isStatusResponse { - return nil, false, &UnexpectedStatusError{ + var err error = &UnexpectedStatusError{ Request: req, Response: resp, Body: string(body), } + // TODO: handle other error classes we know about + switch resp.StatusCode { + case http.StatusConflict: + if req.Method == "POST" { + // TODO: add Resource() and ResourceName() as Request methods so that we can set these + err = errors.NewAlreadyExists("", "") + } else { + err = errors.NewConflict("", "", err) + } + case http.StatusNotFound: + err = errors.NewNotFound("", "") + case http.StatusBadRequest: + err = errors.NewBadRequest(err.Error()) + } + return nil, false, err } return nil, false, errors.FromObject(&status) } diff --git a/pkg/kubectl/cmd/delete.go b/pkg/kubectl/cmd/delete.go index 4ee75a6d8cb..9d220d6eeac 100644 --- a/pkg/kubectl/cmd/delete.go +++ b/pkg/kubectl/cmd/delete.go @@ -20,15 +20,17 @@ import ( "fmt" "io" - "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl" + "github.com/golang/glog" "github.com/spf13/cobra" + + "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl" ) func (f *Factory) NewCmdDelete(out io.Writer) *cobra.Command { cmd := &cobra.Command{ - Use: "delete ([-f filename] | ( ))", + Use: "delete ([-f filename] | ( [( | -l