mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 05:03:09 +00:00
Remove APIStatus from the client
Everything that used it also depended on pkg/api/errors. It was a needless abstraction since it was always an *errors.StatusError.
This commit is contained in:
parent
9d1f07da4e
commit
ca7c765f0a
@ -45,6 +45,12 @@ type StatusError struct {
|
|||||||
ErrStatus unversioned.Status
|
ErrStatus unversioned.Status
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// APIStatus is exposed by errors that can be converted to an api.Status object
|
||||||
|
// for finer grained details.
|
||||||
|
type APIStatus interface {
|
||||||
|
Status() unversioned.Status
|
||||||
|
}
|
||||||
|
|
||||||
var _ error = &StatusError{}
|
var _ error = &StatusError{}
|
||||||
|
|
||||||
// Error implements the Error interface.
|
// Error implements the Error interface.
|
||||||
@ -394,7 +400,7 @@ func IsServerTimeout(err error) bool {
|
|||||||
// and may be the result of another HTTP actor.
|
// and may be the result of another HTTP actor.
|
||||||
func IsUnexpectedServerError(err error) bool {
|
func IsUnexpectedServerError(err error) bool {
|
||||||
switch t := err.(type) {
|
switch t := err.(type) {
|
||||||
case *StatusError:
|
case APIStatus:
|
||||||
if d := t.Status().Details; d != nil {
|
if d := t.Status().Details; d != nil {
|
||||||
for _, cause := range d.Causes {
|
for _, cause := range d.Causes {
|
||||||
if cause.Type == unversioned.CauseTypeUnexpectedServerResponse {
|
if cause.Type == unversioned.CauseTypeUnexpectedServerResponse {
|
||||||
@ -416,7 +422,7 @@ func IsUnexpectedObjectError(err error) bool {
|
|||||||
// suggested seconds to wait, or false if the error does not imply a wait.
|
// suggested seconds to wait, or false if the error does not imply a wait.
|
||||||
func SuggestsClientDelay(err error) (int, bool) {
|
func SuggestsClientDelay(err error) (int, bool) {
|
||||||
switch t := err.(type) {
|
switch t := err.(type) {
|
||||||
case *StatusError:
|
case APIStatus:
|
||||||
if t.Status().Details != nil {
|
if t.Status().Details != nil {
|
||||||
switch t.Status().Reason {
|
switch t.Status().Reason {
|
||||||
case unversioned.StatusReasonServerTimeout, unversioned.StatusReasonTimeout:
|
case unversioned.StatusReasonServerTimeout, unversioned.StatusReasonTimeout:
|
||||||
@ -429,8 +435,8 @@ func SuggestsClientDelay(err error) (int, bool) {
|
|||||||
|
|
||||||
func reasonForError(err error) unversioned.StatusReason {
|
func reasonForError(err error) unversioned.StatusReason {
|
||||||
switch t := err.(type) {
|
switch t := err.(type) {
|
||||||
case *StatusError:
|
case APIStatus:
|
||||||
return t.ErrStatus.Reason
|
return t.Status().Reason
|
||||||
}
|
}
|
||||||
return unversioned.StatusReasonUnknown
|
return unversioned.StatusReasonUnknown
|
||||||
}
|
}
|
||||||
|
@ -120,12 +120,6 @@ type VersionInterface interface {
|
|||||||
ServerAPIVersions() (*unversioned.APIVersions, error)
|
ServerAPIVersions() (*unversioned.APIVersions, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// APIStatus is exposed by errors that can be converted to an api.Status object
|
|
||||||
// for finer grained details.
|
|
||||||
type APIStatus interface {
|
|
||||||
Status() unversioned.Status
|
|
||||||
}
|
|
||||||
|
|
||||||
// Client is the implementation of a Kubernetes client.
|
// Client is the implementation of a Kubernetes client.
|
||||||
type Client struct {
|
type Client struct {
|
||||||
*RESTClient
|
*RESTClient
|
||||||
|
@ -686,7 +686,7 @@ func (r *Request) Stream() (io.ReadCloser, error) {
|
|||||||
if runtimeObject, err := r.codec.Decode(bodyBytes); err == nil {
|
if runtimeObject, err := r.codec.Decode(bodyBytes); err == nil {
|
||||||
statusError := errors.FromObject(runtimeObject)
|
statusError := errors.FromObject(runtimeObject)
|
||||||
|
|
||||||
if _, ok := statusError.(APIStatus); ok {
|
if _, ok := statusError.(errors.APIStatus); ok {
|
||||||
return nil, statusError
|
return nil, statusError
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -333,7 +333,7 @@ func TestTransformResponse(t *testing.T) {
|
|||||||
if hasErr != test.Error {
|
if hasErr != test.Error {
|
||||||
t.Errorf("%d: unexpected error: %t %v", i, test.Error, err)
|
t.Errorf("%d: unexpected error: %t %v", i, test.Error, err)
|
||||||
} else if hasErr && test.Response.StatusCode > 399 {
|
} else if hasErr && test.Response.StatusCode > 399 {
|
||||||
status, ok := err.(APIStatus)
|
status, ok := err.(apierrors.APIStatus)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Errorf("%d: response should have been transformable into APIStatus: %v", i, err)
|
t.Errorf("%d: response should have been transformable into APIStatus: %v", i, err)
|
||||||
continue
|
continue
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -92,7 +93,7 @@ func TestDoRequestFailed(t *testing.T) {
|
|||||||
if err == nil || body != nil {
|
if err == nil || body != nil {
|
||||||
t.Errorf("unexpected non-error: %#v", body)
|
t.Errorf("unexpected non-error: %#v", body)
|
||||||
}
|
}
|
||||||
ss, ok := err.(APIStatus)
|
ss, ok := err.(errors.APIStatus)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Errorf("unexpected error type %v", err)
|
t.Errorf("unexpected error type %v", err)
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
||||||
@ -370,7 +369,7 @@ func (r *editResults) addError(err error, info *resource.Info) string {
|
|||||||
reason := editReason{
|
reason := editReason{
|
||||||
head: fmt.Sprintf("%s %s was not valid", info.Mapping.Kind, info.Name),
|
head: fmt.Sprintf("%s %s was not valid", info.Mapping.Kind, info.Name),
|
||||||
}
|
}
|
||||||
if err, ok := err.(client.APIStatus); ok {
|
if err, ok := err.(errors.APIStatus); ok {
|
||||||
if details := err.Status().Details; details != nil {
|
if details := err.Status().Details; details != nil {
|
||||||
for _, cause := range details.Causes {
|
for _, cause := range details.Causes {
|
||||||
reason.other = append(reason.other, cause.Message)
|
reason.other = append(reason.other, cause.Message)
|
||||||
|
@ -31,7 +31,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/latest"
|
"k8s.io/kubernetes/pkg/api/latest"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
@ -57,7 +56,7 @@ type debugError interface {
|
|||||||
// souce is the filename or URL to the template file(*.json or *.yaml), or stdin to use to handle the resource.
|
// souce is the filename or URL to the template file(*.json or *.yaml), or stdin to use to handle the resource.
|
||||||
func AddSourceToErr(verb string, source string, err error) error {
|
func AddSourceToErr(verb string, source string, err error) error {
|
||||||
if source != "" {
|
if source != "" {
|
||||||
if statusError, ok := err.(*errors.StatusError); ok {
|
if statusError, ok := err.(errors.APIStatus); ok {
|
||||||
status := statusError.Status()
|
status := statusError.Status()
|
||||||
status.Message = fmt.Sprintf("error when %s %q: %v", verb, source, status.Message)
|
status.Message = fmt.Sprintf("error when %s %q: %v", verb, source, status.Message)
|
||||||
return &errors.StatusError{ErrStatus: status}
|
return &errors.StatusError{ErrStatus: status}
|
||||||
@ -145,7 +144,7 @@ func StandardErrorMessage(err error) (string, bool) {
|
|||||||
if debugErr, ok := err.(debugError); ok {
|
if debugErr, ok := err.(debugError); ok {
|
||||||
glog.V(4).Infof(debugErr.DebugError())
|
glog.V(4).Infof(debugErr.DebugError())
|
||||||
}
|
}
|
||||||
_, isStatus := err.(client.APIStatus)
|
_, isStatus := err.(errors.APIStatus)
|
||||||
switch {
|
switch {
|
||||||
case isStatus:
|
case isStatus:
|
||||||
return fmt.Sprintf("Error from server: %s", err.Error()), true
|
return fmt.Sprintf("Error from server: %s", err.Error()), true
|
||||||
|
Loading…
Reference in New Issue
Block a user