mirror of https://github.com/k3s-io/k3s
Merge pull request #20674 from caesarxuchao/decode-status
To be compatible with release 1.1, decode Status even if the APIVersion is not set in the responsepull/6/head
commit
2e7993e057
|
@ -841,10 +841,13 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) Resu
|
|||
|
||||
// Did the server give us a status response?
|
||||
isStatusResponse := false
|
||||
var status *unversioned.Status
|
||||
result, err := runtime.Decode(r.content.Codec, body)
|
||||
if out, ok := result.(*unversioned.Status); err == nil && ok && len(out.Status) > 0 {
|
||||
status = out
|
||||
// Because release-1.1 server returns Status with empty APIVersion at paths
|
||||
// to the Extensions resources, we need to use DecodeInto here to provide
|
||||
// default groupVersion, otherwise a status response won't be correctly
|
||||
// decoded.
|
||||
status := &unversioned.Status{}
|
||||
err := runtime.DecodeInto(r.content.Codec, body, status)
|
||||
if err == nil && len(status.Status) > 0 {
|
||||
isStatusResponse = true
|
||||
}
|
||||
|
||||
|
|
|
@ -109,7 +109,11 @@ func TestDoRequestFailed(t *testing.T) {
|
|||
t.Errorf("unexpected error type %v", err)
|
||||
}
|
||||
actual := ss.Status()
|
||||
if !reflect.DeepEqual(status, &actual) {
|
||||
expected := *status
|
||||
// The decoder will apply the default Version and Kind to the Status.
|
||||
expected.APIVersion = "v1"
|
||||
expected.Kind = "Status"
|
||||
if !reflect.DeepEqual(&expected, &actual) {
|
||||
t.Errorf("Unexpected mis-match: %s", util.ObjectDiff(status, &actual))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue