...
1 package serialization
2
3 import (
4 "k8s.io/apimachinery/pkg/runtime"
5 )
6
7
8 func DecodeNestedRawExtensionOrUnknown(d runtime.Decoder, ext *runtime.RawExtension) {
9 if ext.Raw == nil || ext.Object != nil {
10 return
11 }
12 obj, gvk, err := d.Decode(ext.Raw, nil, nil)
13 if err != nil {
14 unk := &runtime.Unknown{Raw: ext.Raw}
15 if runtime.IsNotRegisteredError(err) {
16 if _, gvk, err := d.Decode(ext.Raw, nil, unk); err == nil {
17 unk.APIVersion = gvk.GroupVersion().String()
18 unk.Kind = gvk.Kind
19 ext.Object = unk
20 return
21 }
22 }
23
24 if gvk != nil {
25 unk.APIVersion = gvk.GroupVersion().String()
26 unk.Kind = gvk.Kind
27 }
28 obj = unk
29 }
30 ext.Object = obj
31 }
32
33
34
35 func EncodeNestedRawExtension(e runtime.Encoder, ext *runtime.RawExtension) error {
36 if ext.Raw != nil || ext.Object == nil {
37 return nil
38 }
39 data, err := runtime.Encode(e, ext.Object)
40 if err != nil {
41 return err
42 }
43 ext.Raw = data
44 return nil
45 }
46
View as plain text