// Convert_runtime_Object_To_runtime_RawExtension attempts to convert runtime.Objects to the appropriate target, returning an error // if there is insufficient information on the conversion scope to determine the target version. func Convert_runtime_Object_To_runtime_RawExtension(c runtime.ObjectConvertor, in *runtime.Object, out *runtime.RawExtension, s conversion.Scope) error { if *in == nil { return nil } obj := *in switch obj.(type) { case *runtime.Unknown, *runtime.Unstructured: out.Raw = nil out.Object = obj return nil } switch t := s.Meta().Context.(type) { case runtime.GroupVersioner: converted, err := c.ConvertToVersion(obj, t) if err != nil { return err } out.Raw = nil out.Object = converted default: return fmt.Errorf("unrecognized conversion context for versioning: %#v", t) } return nil }
// Convert_runtime_Object_To_runtime_RawExtension is conversion function that assumes that the runtime.Object you've embedded is in // the same GroupVersion that your containing type is in. This is signficantly better than simply breaking. // Given an ordered list of preferred external versions for a given encode or conversion call, the behavior of this function could be // made generic, predictable, and controllable. func convert_runtime_Object_To_runtime_RawExtension(in runtime.Object, out *runtime.RawExtension, s conversion.Scope) error { if in == nil { return nil } externalObject, err := internal.Scheme.ConvertToVersion(in, s.Meta().DestVersion) if runtime.IsNotRegisteredError(err) { switch cast := in.(type) { case *runtime.Unknown: out.Raw = cast.Raw return nil case *runtime.Unstructured: bytes, err := runtime.Encode(runtime.UnstructuredJSONScheme, externalObject) if err != nil { return err } out.Raw = bytes return nil } } if err != nil { return err } bytes, err := runtime.Encode(codec, externalObject) if err != nil { return err } out.Raw = bytes out.Object = externalObject return nil }
// Convert_runtime_RawExtension_To_runtime_Object well, this is the reason why there was runtime.Embedded. The `out` here is hopeless. // The caller doesn't know the type ahead of time and that means this method can't communicate the return value. This sucks really badly. // I'm going to set the `in.Object` field can have callers to this function do magic to pull it back out. I'm also going to bitch about it. func Convert_runtime_RawExtension_To_runtime_Object(in *runtime.RawExtension, out runtime.Object, s conversion.Scope) error { if in == nil || len(in.Raw) == 0 || in.Object != nil { return nil } // the scheme knows all available group versions, so its possible to build the decoder properly, but it would require some refactoring srcVersion, err := unversioned.ParseGroupVersion(s.Meta().SrcVersion) if err != nil { return err } decodedObject, err := runtime.Decode(kapi.Codecs.UniversalDecoder(srcVersion), in.Raw) if err != nil { return err } internalObject, err := kapi.Scheme.ConvertToVersion(decodedObject, s.Meta().DestVersion) if err != nil { return err } in.Object = internalObject return nil }
// Convert_runtime_RawExtension_To_runtime_Object well, this is the reason why there was runtime.Embedded. The `out` here is hopeless. // The caller doesn't know the type ahead of time and that means this method can't communicate the return value. This sucks really badly. // I'm going to set the `in.Object` field can have callers to this function do magic to pull it back out. I'm also going to bitch about it. func convert_runtime_RawExtension_To_runtime_Object(in *runtime.RawExtension, out runtime.Object, s conversion.Scope) error { if in == nil || len(in.Raw) == 0 || in.Object != nil { return nil } decodedObject, err := runtime.Decode(codec, in.Raw) if err != nil { in.Object = &runtime.Unknown{Raw: in.Raw} return nil } internalObject, err := internal.Scheme.ConvertToVersion(decodedObject, s.Meta().DestVersion) if err != nil { return err } in.Object = internalObject return nil }
// DecodeNestedRawExtensionOrUnknown func DecodeNestedRawExtensionOrUnknown(d runtime.Decoder, ext *runtime.RawExtension) { if ext.Raw == nil || ext.Object != nil { return } obj, gvk, err := d.Decode(ext.Raw, nil, nil) if err != nil { unk := &runtime.Unknown{Raw: ext.Raw} if runtime.IsNotRegisteredError(err) { if _, gvk, err := d.Decode(ext.Raw, nil, unk); err == nil { unk.APIVersion = gvk.GroupVersion().String() unk.Kind = gvk.Kind ext.Object = unk return } } // TODO: record mime-type with the object if gvk != nil { unk.APIVersion = gvk.GroupVersion().String() unk.Kind = gvk.Kind } obj = unk } ext.Object = obj }
// Convert_runtime_Object_To_runtime_RawExtension is conversion function that assumes that the runtime.Object you've embedded is in // the same GroupVersion that your containing type is in. This is signficantly better than simply breaking. // Given an ordered list of preferred external versions for a given encode or conversion call, the behavior of this function could be // made generic, predictable, and controllable. func convert_runtime_Object_To_runtime_RawExtension(in runtime.Object, out *runtime.RawExtension, s conversion.Scope) error { if in == nil { return nil } externalObject, err := internal.Scheme.ConvertToVersion(in, s.Meta().DestVersion) if err != nil { return err } bytes, err := runtime.Encode(codec, externalObject) if err != nil { return err } out.RawJSON = bytes out.Object = externalObject return nil }
// Convert_runtime_Object_To_runtime_RawExtension is conversion function that assumes that the runtime.Object you've embedded is in // the same GroupVersion that your containing type is in. This is signficantly better than simply breaking. // Given an ordered list of preferred external versions for a given encode or conversion call, the behavior of this function could be // made generic, predictable, and controllable. func Convert_runtime_Object_To_runtime_RawExtension(in runtime.Object, out *runtime.RawExtension, s conversion.Scope) error { if in == nil { return nil } externalObject, err := kapi.Scheme.ConvertToVersion(in, s.Meta().DestVersion) if err != nil { return err } targetVersion, err := unversioned.ParseGroupVersion(s.Meta().DestVersion) if err != nil { return err } bytes, err := runtime.Encode(kapi.Codecs.LegacyCodec(targetVersion), externalObject) if err != nil { return err } out.Raw = bytes out.Object = externalObject return nil }
// Convert_runtime_RawExtension_To_runtime_Object attempts to convert an incoming object into the // appropriate output type. func Convert_runtime_RawExtension_To_runtime_Object(c runtime.ObjectConvertor, in *runtime.RawExtension, out *runtime.Object, s conversion.Scope) error { if in == nil || in.Object == nil { return nil } switch in.Object.(type) { case *runtime.Unknown, *runtime.Unstructured: *out = in.Object return nil } switch t := s.Meta().Context.(type) { case runtime.GroupVersioner: converted, err := c.ConvertToVersion(in.Object, t) if err != nil { return err } in.Object = converted *out = converted default: return fmt.Errorf("unrecognized conversion context for conversion to internal: %#v (%T)", t, t) } return nil }