mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
Merge pull request #25938 from sitepod/third-party-resource-watch-fix
Automatic merge from submit-queue handle watch event serialization for third party resources This is a quick fix for #24963 although I understand @brendandburns is overhauling thirdparty resources at the moment []()
This commit is contained in:
commit
1ea3b171d8
@ -485,8 +485,6 @@ func encodeToJSON(obj *extensions.ThirdPartyResourceData, stream io.Writer) erro
|
||||
|
||||
func (t *thirdPartyResourceDataEncoder) Encode(obj runtime.Object, stream io.Writer) (err error) {
|
||||
switch obj := obj.(type) {
|
||||
case *versioned.InternalEvent:
|
||||
return t.delegate.Encode(obj, stream)
|
||||
case *extensions.ThirdPartyResourceData:
|
||||
return encodeToJSON(obj, stream)
|
||||
case *extensions.ThirdPartyResourceDataList:
|
||||
@ -502,6 +500,20 @@ func (t *thirdPartyResourceDataEncoder) Encode(obj runtime.Object, stream io.Wri
|
||||
}
|
||||
gv := t.gvk.GroupVersion()
|
||||
fmt.Fprintf(stream, template, t.gvk.Kind+"List", gv.String(), strings.Join(dataStrings, ","))
|
||||
return nil
|
||||
case *versioned.InternalEvent:
|
||||
event := &versioned.Event{}
|
||||
err := versioned.Convert_versioned_InternalEvent_to_versioned_Event(obj, event, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
enc := json.NewEncoder(stream)
|
||||
err = enc.Encode(event)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
case *unversioned.Status, *unversioned.APIResourceList:
|
||||
return t.delegate.Encode(obj, stream)
|
||||
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||
package thirdpartyresourcedata
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"reflect"
|
||||
"testing"
|
||||
@ -29,6 +30,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/watch/versioned"
|
||||
)
|
||||
|
||||
type Foo struct {
|
||||
@ -219,3 +221,28 @@ func TestCreater(t *testing.T) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func TestEncodeToStreamForInternalEvent(t *testing.T) {
|
||||
e := &thirdPartyResourceDataEncoder{gvk: unversioned.GroupVersionKind{
|
||||
Group: "company.com",
|
||||
Version: "v1",
|
||||
Kind: "Foo",
|
||||
}, delegate: testapi.Extensions.Codec()}
|
||||
buf := bytes.NewBuffer([]byte{})
|
||||
expected := &versioned.Event{
|
||||
Type: "Added",
|
||||
}
|
||||
err := e.Encode(&versioned.InternalEvent{
|
||||
Type: "Added",
|
||||
}, buf)
|
||||
|
||||
jBytes, _ := json.Marshal(expected)
|
||||
|
||||
if string(jBytes) == buf.String() {
|
||||
t.Errorf("unexpected encoding expected %s got %s", string(jBytes), buf.String())
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error encoding: %v", err)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user