...

Source file src/github.com/openshift/api/pkg/serialization/serialization.go

Documentation: github.com/openshift/api/pkg/serialization

     1  package serialization
     2  
     3  import (
     4  	"k8s.io/apimachinery/pkg/runtime"
     5  )
     6  
     7  // DecodeNestedRawExtensionOrUnknown
     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  		// TODO: record mime-type with the object
    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  // EncodeNestedRawExtension will encode the object in the RawExtension (if not nil) or
    34  // return an error.
    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