// CodecForVersions creates a codec with the provided serializer. If an object is decoded and its group is not in the list, // it will default to runtime.APIVersionInternal. If encode is not specified for an object's group, the object is not // converted. If encode or decode are nil, no conversion is performed. func (f CodecFactory) CodecForVersions(encoder runtime.Encoder, decoder runtime.Decoder, encode runtime.GroupVersioner, decode runtime.GroupVersioner) runtime.Codec { // TODO: these are for backcompat, remove them in the future if encode == nil { encode = runtime.DisabledGroupVersioner } if decode == nil { decode = runtime.InternalGroupVersioner } return versioning.NewCodecForScheme(f.scheme, encoder, decoder, encode, decode) }
func init() { Scheme = runtime.NewScheme() if err := api.AddToScheme(Scheme); err != nil { // Programmer error, detect immediately panic(err) } if err := v1.AddToScheme(Scheme); err != nil { // Programmer error, detect immediately panic(err) } yamlSerializer := json.NewYAMLSerializer(json.DefaultMetaFactory, Scheme, Scheme) Codec = versioning.NewCodecForScheme( Scheme, yamlSerializer, yamlSerializer, unversioned.GroupVersion{Version: Version}, runtime.InternalGroupVersioner, ) }
// LegacyCodec encodes output to a given API versions, and decodes output into the internal form from // any recognized source. The returned codec will always encode output to JSON. If a type is not // found in the list of versions an error will be returned. // // This method is deprecated - clients and servers should negotiate a serializer by mime-type and // invoke CodecForVersions. Callers that need only to read data should use UniversalDecoder(). // // TODO: make this call exist only in pkg/api, and initialize it with the set of default versions. // All other callers will be forced to request a Codec directly. func (f CodecFactory) LegacyCodec(version ...unversioned.GroupVersion) runtime.Codec { return versioning.NewCodecForScheme(f.scheme, f.legacySerializer, f.universal, unversioned.GroupVersions(version), runtime.InternalGroupVersioner) }