...

Source file src/github.com/openshift/api/legacyconfig/v1/serialization.go

Documentation: github.com/openshift/api/legacyconfig/v1

     1  package v1
     2  
     3  import "k8s.io/apimachinery/pkg/runtime"
     4  
     5  var _ runtime.NestedObjectDecoder = &MasterConfig{}
     6  
     7  // DecodeNestedObjects handles encoding RawExtensions on the MasterConfig, ensuring the
     8  // objects are decoded with the provided decoder.
     9  func (c *MasterConfig) DecodeNestedObjects(d runtime.Decoder) error {
    10  	// decoding failures result in a runtime.Unknown object being created in Object and passed
    11  	// to conversion
    12  	for k, v := range c.AdmissionConfig.PluginConfig {
    13  		DecodeNestedRawExtensionOrUnknown(d, &v.Configuration)
    14  		c.AdmissionConfig.PluginConfig[k] = v
    15  	}
    16  	if c.OAuthConfig != nil {
    17  		for i := range c.OAuthConfig.IdentityProviders {
    18  			DecodeNestedRawExtensionOrUnknown(d, &c.OAuthConfig.IdentityProviders[i].Provider)
    19  		}
    20  	}
    21  	DecodeNestedRawExtensionOrUnknown(d, &c.AuditConfig.PolicyConfiguration)
    22  	return nil
    23  }
    24  
    25  var _ runtime.NestedObjectEncoder = &MasterConfig{}
    26  
    27  // EncodeNestedObjects handles encoding RawExtensions on the MasterConfig, ensuring the
    28  // objects are encoded with the provided encoder.
    29  func (c *MasterConfig) EncodeNestedObjects(e runtime.Encoder) error {
    30  	for k, v := range c.AdmissionConfig.PluginConfig {
    31  		if err := EncodeNestedRawExtension(e, &v.Configuration); err != nil {
    32  			return err
    33  		}
    34  		c.AdmissionConfig.PluginConfig[k] = v
    35  	}
    36  	if c.OAuthConfig != nil {
    37  		for i := range c.OAuthConfig.IdentityProviders {
    38  			if err := EncodeNestedRawExtension(e, &c.OAuthConfig.IdentityProviders[i].Provider); err != nil {
    39  				return err
    40  			}
    41  		}
    42  	}
    43  	if err := EncodeNestedRawExtension(e, &c.AuditConfig.PolicyConfiguration); err != nil {
    44  		return err
    45  	}
    46  	return nil
    47  }
    48  
    49  // DecodeNestedRawExtensionOrUnknown
    50  func DecodeNestedRawExtensionOrUnknown(d runtime.Decoder, ext *runtime.RawExtension) {
    51  	if ext.Raw == nil || ext.Object != nil {
    52  		return
    53  	}
    54  	obj, gvk, err := d.Decode(ext.Raw, nil, nil)
    55  	if err != nil {
    56  		unk := &runtime.Unknown{Raw: ext.Raw}
    57  		if runtime.IsNotRegisteredError(err) {
    58  			if _, gvk, err := d.Decode(ext.Raw, nil, unk); err == nil {
    59  				unk.APIVersion = gvk.GroupVersion().String()
    60  				unk.Kind = gvk.Kind
    61  				ext.Object = unk
    62  				return
    63  			}
    64  		}
    65  		// TODO: record mime-type with the object
    66  		if gvk != nil {
    67  			unk.APIVersion = gvk.GroupVersion().String()
    68  			unk.Kind = gvk.Kind
    69  		}
    70  		obj = unk
    71  	}
    72  	ext.Object = obj
    73  }
    74  
    75  // EncodeNestedRawExtension will encode the object in the RawExtension (if not nil) or
    76  // return an error.
    77  func EncodeNestedRawExtension(e runtime.Encoder, ext *runtime.RawExtension) error {
    78  	if ext.Raw != nil || ext.Object == nil {
    79  		return nil
    80  	}
    81  	data, err := runtime.Encode(e, ext.Object)
    82  	if err != nil {
    83  		return err
    84  	}
    85  	ext.Raw = data
    86  	return nil
    87  }
    88  

View as plain text