mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-17 23:57:49 +00:00
Change ConvertToVersion to use GroupVersion
Long delayed refactor, avoids a few more allocations.
This commit is contained in:
parent
a84e62d9e6
commit
51b624103f
@ -50,11 +50,11 @@ func BenchmarkPodConversion(b *testing.B) {
|
|||||||
var result *api.Pod
|
var result *api.Pod
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
pod := &items[i%width]
|
pod := &items[i%width]
|
||||||
versionedObj, err := scheme.ConvertToVersion(pod, testapi.Default.GroupVersion().String())
|
versionedObj, err := scheme.ConvertToVersion(pod, *testapi.Default.GroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatalf("Conversion error: %v", err)
|
b.Fatalf("Conversion error: %v", err)
|
||||||
}
|
}
|
||||||
obj, err := scheme.ConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion().String())
|
obj, err := scheme.ConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatalf("Conversion error: %v", err)
|
b.Fatalf("Conversion error: %v", err)
|
||||||
}
|
}
|
||||||
@ -76,11 +76,11 @@ func BenchmarkNodeConversion(b *testing.B) {
|
|||||||
scheme := api.Scheme
|
scheme := api.Scheme
|
||||||
var result *api.Node
|
var result *api.Node
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
versionedObj, err := scheme.ConvertToVersion(&node, testapi.Default.GroupVersion().String())
|
versionedObj, err := scheme.ConvertToVersion(&node, *testapi.Default.GroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatalf("Conversion error: %v", err)
|
b.Fatalf("Conversion error: %v", err)
|
||||||
}
|
}
|
||||||
obj, err := scheme.ConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion().String())
|
obj, err := scheme.ConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatalf("Conversion error: %v", err)
|
b.Fatalf("Conversion error: %v", err)
|
||||||
}
|
}
|
||||||
@ -104,11 +104,11 @@ func BenchmarkReplicationControllerConversion(b *testing.B) {
|
|||||||
scheme := api.Scheme
|
scheme := api.Scheme
|
||||||
var result *api.ReplicationController
|
var result *api.ReplicationController
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
versionedObj, err := scheme.ConvertToVersion(&replicationController, testapi.Default.GroupVersion().String())
|
versionedObj, err := scheme.ConvertToVersion(&replicationController, *testapi.Default.GroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatalf("Conversion error: %v", err)
|
b.Fatalf("Conversion error: %v", err)
|
||||||
}
|
}
|
||||||
obj, err := scheme.ConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion().String())
|
obj, err := scheme.ConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Fatalf("Conversion error: %v", err)
|
b.Fatalf("Conversion error: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ func (fakeConvertor) Convert(in, out interface{}) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fakeConvertor) ConvertToVersion(in runtime.Object, _ string) (runtime.Object, error) {
|
func (fakeConvertor) ConvertToVersion(in runtime.Object, _ unversioned.GroupVersion) (runtime.Object, error) {
|
||||||
return in, nil
|
return in, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +281,7 @@ func TestObjectWatchFraming(t *testing.T) {
|
|||||||
secret.Data["binary"] = []byte{0x00, 0x10, 0x30, 0x55, 0xff, 0x00}
|
secret.Data["binary"] = []byte{0x00, 0x10, 0x30, 0x55, 0xff, 0x00}
|
||||||
secret.Data["utf8"] = []byte("a string with \u0345 characters")
|
secret.Data["utf8"] = []byte("a string with \u0345 characters")
|
||||||
secret.Data["long"] = bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x00}, 1000)
|
secret.Data["long"] = bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x00}, 1000)
|
||||||
converted, _ := api.Scheme.ConvertToVersion(secret, "v1")
|
converted, _ := api.Scheme.ConvertToVersion(secret, v1.SchemeGroupVersion)
|
||||||
v1secret := converted.(*v1.Secret)
|
v1secret := converted.(*v1.Secret)
|
||||||
for _, streamingMediaType := range api.Codecs.SupportedStreamingMediaTypes() {
|
for _, streamingMediaType := range api.Codecs.SupportedStreamingMediaTypes() {
|
||||||
s, _ := api.Codecs.StreamingSerializerForMediaType(streamingMediaType, nil)
|
s, _ := api.Codecs.StreamingSerializerForMediaType(streamingMediaType, nil)
|
||||||
@ -358,7 +358,7 @@ func benchmarkItems() []v1.Pod {
|
|||||||
for i := range items {
|
for i := range items {
|
||||||
var pod api.Pod
|
var pod api.Pod
|
||||||
apiObjectFuzzer.Fuzz(&pod)
|
apiObjectFuzzer.Fuzz(&pod)
|
||||||
out, err := api.Scheme.ConvertToVersion(&pod, "v1")
|
out, err := api.Scheme.ConvertToVersion(&pod, v1.SchemeGroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -459,7 +459,7 @@ func PatchResource(r rest.Patcher, scope RequestScope, typer runtime.ObjectTyper
|
|||||||
ctx := scope.ContextFunc(req)
|
ctx := scope.ContextFunc(req)
|
||||||
ctx = api.WithNamespace(ctx, namespace)
|
ctx = api.WithNamespace(ctx, namespace)
|
||||||
|
|
||||||
versionedObj, err := converter.ConvertToVersion(r.New(), scope.Kind.GroupVersion().String())
|
versionedObj, err := converter.ConvertToVersion(r.New(), scope.Kind.GroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
scope.err(err, res.ResponseWriter, req.Request)
|
scope.err(err, res.ResponseWriter, req.Request)
|
||||||
return
|
return
|
||||||
|
@ -174,7 +174,7 @@ func (tc *patchTestCase) Run(t *testing.T) {
|
|||||||
|
|
||||||
namer := &testNamer{namespace, name}
|
namer := &testNamer{namespace, name}
|
||||||
|
|
||||||
versionedObj, err := api.Scheme.ConvertToVersion(&api.Pod{}, "v1")
|
versionedObj, err := api.Scheme.ConvertToVersion(&api.Pod{}, unversioned.GroupVersion{Version: "v1"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%s: unexpected error: %v", tc.name, err)
|
t.Errorf("%s: unexpected error: %v", tc.name, err)
|
||||||
return
|
return
|
||||||
|
@ -221,7 +221,7 @@ func (o AnnotateOptions) RunAnnotate() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
obj, err := info.Mapping.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion().String())
|
obj, err := info.Mapping.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -167,7 +167,7 @@ func (o *ConvertOptions) RunConvert() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
infos := []*resource.Info{info}
|
infos := []*resource.Info{info}
|
||||||
objects, err := resource.AsVersionedObject(infos, false, o.outputVersion.String(), o.encoder)
|
objects, err := resource.AsVersionedObject(infos, false, o.outputVersion, o.encoder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ func RunEdit(f *cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
objs, err := resource.AsVersionedObjects(infos, defaultVersion.String(), encoder)
|
objs, err := resource.AsVersionedObjects(infos, defaultVersion, encoder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -246,7 +246,7 @@ func RunGet(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
obj, err := resource.AsVersionedObject(infos, !singular, version.String(), f.JSONEncoder())
|
obj, err := resource.AsVersionedObject(infos, !singular, version, f.JSONEncoder())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -273,7 +273,7 @@ func RunGet(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string
|
|||||||
}
|
}
|
||||||
|
|
||||||
for ix := range infos {
|
for ix := range infos {
|
||||||
objs[ix], err = infos[ix].Mapping.ConvertToVersion(infos[ix].Object, version.String())
|
objs[ix], err = infos[ix].Mapping.ConvertToVersion(infos[ix].Object, version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
allErrs = append(allErrs, err)
|
allErrs = append(allErrs, err)
|
||||||
continue
|
continue
|
||||||
|
@ -246,7 +246,7 @@ func RunLabel(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
|
|||||||
}
|
}
|
||||||
outputObj = info.Object
|
outputObj = info.Object
|
||||||
} else {
|
} else {
|
||||||
obj, err := info.Mapping.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion().String())
|
obj, err := info.Mapping.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ func (r *Result) Watch(resourceVersion string) (watch.Interface, error) {
|
|||||||
// the objects as children, or if only a single Object is present, as that object. The provided
|
// the objects as children, or if only a single Object is present, as that object. The provided
|
||||||
// version will be preferred as the conversion target, but the Object's mapping version will be
|
// version will be preferred as the conversion target, but the Object's mapping version will be
|
||||||
// used if that version is not present.
|
// used if that version is not present.
|
||||||
func AsVersionedObject(infos []*Info, forceList bool, version string, encoder runtime.Encoder) (runtime.Object, error) {
|
func AsVersionedObject(infos []*Info, forceList bool, version unversioned.GroupVersion, encoder runtime.Encoder) (runtime.Object, error) {
|
||||||
objects, err := AsVersionedObjects(infos, version, encoder)
|
objects, err := AsVersionedObjects(infos, version, encoder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -222,7 +222,7 @@ func AsVersionedObject(infos []*Info, forceList bool, version string, encoder ru
|
|||||||
object = objects[0]
|
object = objects[0]
|
||||||
} else {
|
} else {
|
||||||
object = &api.List{Items: objects}
|
object = &api.List{Items: objects}
|
||||||
converted, err := tryConvert(api.Scheme, object, version, registered.GroupOrDie(api.GroupName).GroupVersion.Version)
|
converted, err := tryConvert(api.Scheme, object, version, registered.GroupOrDie(api.GroupName).GroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -234,7 +234,7 @@ func AsVersionedObject(infos []*Info, forceList bool, version string, encoder ru
|
|||||||
// AsVersionedObjects converts a list of infos into versioned objects. The provided
|
// AsVersionedObjects converts a list of infos into versioned objects. The provided
|
||||||
// version will be preferred as the conversion target, but the Object's mapping version will be
|
// version will be preferred as the conversion target, but the Object's mapping version will be
|
||||||
// used if that version is not present.
|
// used if that version is not present.
|
||||||
func AsVersionedObjects(infos []*Info, version string, encoder runtime.Encoder) ([]runtime.Object, error) {
|
func AsVersionedObjects(infos []*Info, version unversioned.GroupVersion, encoder runtime.Encoder) ([]runtime.Object, error) {
|
||||||
objects := []runtime.Object{}
|
objects := []runtime.Object{}
|
||||||
for _, info := range infos {
|
for _, info := range infos {
|
||||||
if info.Object == nil {
|
if info.Object == nil {
|
||||||
@ -250,7 +250,7 @@ func AsVersionedObjects(infos []*Info, version string, encoder runtime.Encoder)
|
|||||||
|
|
||||||
// objects that are not part of api.Scheme must be converted to JSON
|
// objects that are not part of api.Scheme must be converted to JSON
|
||||||
// TODO: convert to map[string]interface{}, attach to runtime.Unknown?
|
// TODO: convert to map[string]interface{}, attach to runtime.Unknown?
|
||||||
if len(version) > 0 {
|
if !version.IsEmpty() {
|
||||||
if _, err := api.Scheme.ObjectKind(info.Object); runtime.IsNotRegisteredError(err) {
|
if _, err := api.Scheme.ObjectKind(info.Object); runtime.IsNotRegisteredError(err) {
|
||||||
// TODO: ideally this would encode to version, but we don't expose multiple codecs here.
|
// TODO: ideally this would encode to version, but we don't expose multiple codecs here.
|
||||||
data, err := runtime.Encode(encoder, info.Object)
|
data, err := runtime.Encode(encoder, info.Object)
|
||||||
@ -263,7 +263,7 @@ func AsVersionedObjects(infos []*Info, version string, encoder runtime.Encoder)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
converted, err := tryConvert(info.Mapping.ObjectConvertor, info.Object, version, info.Mapping.GroupVersionKind.GroupVersion().String())
|
converted, err := tryConvert(info.Mapping.ObjectConvertor, info.Object, version, info.Mapping.GroupVersionKind.GroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -274,10 +274,10 @@ func AsVersionedObjects(infos []*Info, version string, encoder runtime.Encoder)
|
|||||||
|
|
||||||
// tryConvert attempts to convert the given object to the provided versions in order. This function assumes
|
// tryConvert attempts to convert the given object to the provided versions in order. This function assumes
|
||||||
// the object is in internal version.
|
// the object is in internal version.
|
||||||
func tryConvert(convertor runtime.ObjectConvertor, object runtime.Object, versions ...string) (runtime.Object, error) {
|
func tryConvert(convertor runtime.ObjectConvertor, object runtime.Object, versions ...unversioned.GroupVersion) (runtime.Object, error) {
|
||||||
var last error
|
var last error
|
||||||
for _, version := range versions {
|
for _, version := range versions {
|
||||||
if len(version) == 0 {
|
if version.IsEmpty() {
|
||||||
return object, nil
|
return object, nil
|
||||||
}
|
}
|
||||||
obj, err := convertor.ConvertToVersion(object, version)
|
obj, err := convertor.ConvertToVersion(object, version)
|
||||||
|
@ -182,7 +182,7 @@ func (p *VersionedPrinter) PrintObj(obj runtime.Object, w io.Writer) error {
|
|||||||
if version.IsEmpty() {
|
if version.IsEmpty() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
converted, err := p.convertor.ConvertToVersion(obj, version.String())
|
converted, err := p.convertor.ConvertToVersion(obj, version)
|
||||||
if runtime.IsNotRegisteredError(err) {
|
if runtime.IsNotRegisteredError(err) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ func TestPrinter(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
emptyListTest := &api.PodList{}
|
emptyListTest := &api.PodList{}
|
||||||
testapi, err := api.Scheme.ConvertToVersion(podTest, testapi.Default.GroupVersion().String())
|
testapi, err := api.Scheme.ConvertToVersion(podTest, *testapi.Default.GroupVersion())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ type thirdPartyObjectConverter struct {
|
|||||||
converter runtime.ObjectConvertor
|
converter runtime.ObjectConvertor
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *thirdPartyObjectConverter) ConvertToVersion(in runtime.Object, outVersion string) (out runtime.Object, err error) {
|
func (t *thirdPartyObjectConverter) ConvertToVersion(in runtime.Object, outVersion unversioned.GroupVersion) (out runtime.Object, err error) {
|
||||||
switch in.(type) {
|
switch in.(type) {
|
||||||
// This seems weird, but in this case the ThirdPartyResourceData is really just a wrapper on the raw 3rd party data.
|
// This seems weird, but in this case the ThirdPartyResourceData is really just a wrapper on the raw 3rd party data.
|
||||||
// The actual thing printed/sent to server is the actual raw third party resource data, which only has one version.
|
// The actual thing printed/sent to server is the actual raw third party resource data, which only has one version.
|
||||||
|
@ -162,7 +162,7 @@ func (c *parameterCodec) EncodeParameters(obj Object, to unversioned.GroupVersio
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if to != gvk.GroupVersion() {
|
if to != gvk.GroupVersion() {
|
||||||
out, err := c.convertor.ConvertToVersion(obj, to.String())
|
out, err := c.convertor.ConvertToVersion(obj, to)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -161,7 +161,7 @@ type StorageSerializer interface {
|
|||||||
// Non-codec interfaces
|
// Non-codec interfaces
|
||||||
|
|
||||||
type ObjectVersioner interface {
|
type ObjectVersioner interface {
|
||||||
ConvertToVersion(in Object, outVersion string) (out Object, err error)
|
ConvertToVersion(in Object, outVersion unversioned.GroupVersion) (out Object, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ObjectConvertor converts an object to a different version.
|
// ObjectConvertor converts an object to a different version.
|
||||||
@ -171,7 +171,7 @@ type ObjectConvertor interface {
|
|||||||
Convert(in, out interface{}) error
|
Convert(in, out interface{}) error
|
||||||
// ConvertToVersion takes the provided object and converts it the provided version. This
|
// ConvertToVersion takes the provided object and converts it the provided version. This
|
||||||
// method does not guarantee that the in object is not mutated.
|
// method does not guarantee that the in object is not mutated.
|
||||||
ConvertToVersion(in Object, outVersion string) (out Object, err error)
|
ConvertToVersion(in Object, outVersion unversioned.GroupVersion) (out Object, err error)
|
||||||
ConvertFieldLabel(version, kind, label, value string) (string, string, error)
|
ConvertFieldLabel(version, kind, label, value string) (string, string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -473,16 +473,12 @@ func (s *Scheme) ConvertFieldLabel(version, kind, label, value string) (string,
|
|||||||
// contain the inKind (or a mapping by name defined with AddKnownTypeWithName). Will also
|
// contain the inKind (or a mapping by name defined with AddKnownTypeWithName). Will also
|
||||||
// return an error if the conversion does not result in a valid Object being
|
// return an error if the conversion does not result in a valid Object being
|
||||||
// returned. The serializer handles loading/serializing nested objects.
|
// returned. The serializer handles loading/serializing nested objects.
|
||||||
func (s *Scheme) ConvertToVersion(in Object, outVersion string) (Object, error) {
|
func (s *Scheme) ConvertToVersion(in Object, outVersion unversioned.GroupVersion) (Object, error) {
|
||||||
gv, err := unversioned.ParseGroupVersion(outVersion)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
switch in.(type) {
|
switch in.(type) {
|
||||||
case *Unknown, *Unstructured, *UnstructuredList:
|
case *Unknown, *Unstructured, *UnstructuredList:
|
||||||
old := in.GetObjectKind().GroupVersionKind()
|
old := in.GetObjectKind().GroupVersionKind()
|
||||||
defer in.GetObjectKind().SetGroupVersionKind(old)
|
defer in.GetObjectKind().SetGroupVersionKind(old)
|
||||||
setTargetVersion(in, s, gv)
|
setTargetVersion(in, s, outVersion)
|
||||||
return in, nil
|
return in, nil
|
||||||
}
|
}
|
||||||
t := reflect.TypeOf(in)
|
t := reflect.TypeOf(in)
|
||||||
@ -506,7 +502,7 @@ func (s *Scheme) ConvertToVersion(in Object, outVersion string) (Object, error)
|
|||||||
kind = kinds[0]
|
kind = kinds[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
outKind := gv.WithKind(kind.Kind)
|
outKind := outVersion.WithKind(kind.Kind)
|
||||||
|
|
||||||
inKind, err := s.ObjectKind(in)
|
inKind, err := s.ObjectKind(in)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -518,12 +514,12 @@ func (s *Scheme) ConvertToVersion(in Object, outVersion string) (Object, error)
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
flags, meta := s.generateConvertMeta(inKind.GroupVersion(), gv, in)
|
flags, meta := s.generateConvertMeta(inKind.GroupVersion(), outVersion, in)
|
||||||
if err := s.converter.Convert(in, out, flags, meta); err != nil {
|
if err := s.converter.Convert(in, out, flags, meta); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
setTargetVersion(out, s, gv)
|
setTargetVersion(out, s, outVersion)
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -530,7 +530,7 @@ func TestKnownTypes(t *testing.T) {
|
|||||||
func TestConvertToVersion(t *testing.T) {
|
func TestConvertToVersion(t *testing.T) {
|
||||||
s := GetTestScheme()
|
s := GetTestScheme()
|
||||||
tt := &TestType1{A: "I'm not a pointer object"}
|
tt := &TestType1{A: "I'm not a pointer object"}
|
||||||
other, err := s.ConvertToVersion(tt, "v1")
|
other, err := s.ConvertToVersion(tt, unversioned.GroupVersion{Version: "v1"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failure: %v", err)
|
t.Fatalf("Failure: %v", err)
|
||||||
}
|
}
|
||||||
@ -578,12 +578,12 @@ func TestMetaValues(t *testing.T) {
|
|||||||
|
|
||||||
s.Log(t)
|
s.Log(t)
|
||||||
|
|
||||||
out, err := s.ConvertToVersion(simple, externalGV.String())
|
out, err := s.ConvertToVersion(simple, externalGV)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal, err := s.ConvertToVersion(out, internalGV.String())
|
internal, err := s.ConvertToVersion(out, internalGV)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ func (c *codec) Decode(data []byte, defaultGVK *unversioned.GroupVersionKind, in
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Convert if needed.
|
// Convert if needed.
|
||||||
out, err := c.convertor.ConvertToVersion(obj, targetGV.String())
|
out, err := c.convertor.ConvertToVersion(obj, targetGV)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, gvk, err
|
return nil, gvk, err
|
||||||
}
|
}
|
||||||
@ -264,7 +264,7 @@ func (c *codec) EncodeToStream(obj runtime.Object, w io.Writer, overrides ...unv
|
|||||||
|
|
||||||
// Perform a conversion if necessary
|
// Perform a conversion if necessary
|
||||||
if gvk.GroupVersion() != targetGV {
|
if gvk.GroupVersion() != targetGV {
|
||||||
out, err := c.convertor.ConvertToVersion(obj, targetGV.String())
|
out, err := c.convertor.ConvertToVersion(obj, targetGV)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if ok {
|
if ok {
|
||||||
return err
|
return err
|
||||||
|
@ -65,12 +65,12 @@ func TestDecode(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
serializer: &mockSerializer{actual: gvk1},
|
serializer: &mockSerializer{actual: gvk1},
|
||||||
convertor: &checkConvertor{groupVersion: "other/__internal"},
|
convertor: &checkConvertor{groupVersion: unversioned.GroupVersion{Group: "other", Version: "__internal"}},
|
||||||
expectedGVK: gvk1,
|
expectedGVK: gvk1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
serializer: &mockSerializer{actual: gvk1, obj: decodable1},
|
serializer: &mockSerializer{actual: gvk1, obj: decodable1},
|
||||||
convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: "other/__internal"},
|
convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: unversioned.GroupVersion{Group: "other", Version: "__internal"}},
|
||||||
expectedGVK: gvk1,
|
expectedGVK: gvk1,
|
||||||
sameObject: decodable2,
|
sameObject: decodable2,
|
||||||
},
|
},
|
||||||
@ -78,7 +78,7 @@ func TestDecode(t *testing.T) {
|
|||||||
{
|
{
|
||||||
serializer: &mockSerializer{actual: gvk1, obj: decodable1},
|
serializer: &mockSerializer{actual: gvk1, obj: decodable1},
|
||||||
defaultGVK: &unversioned.GroupVersionKind{Group: "force"},
|
defaultGVK: &unversioned.GroupVersionKind{Group: "force"},
|
||||||
convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: "force/__internal"},
|
convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: unversioned.GroupVersion{Group: "force", Version: "__internal"}},
|
||||||
expectedGVK: gvk1,
|
expectedGVK: gvk1,
|
||||||
sameObject: decodable2,
|
sameObject: decodable2,
|
||||||
},
|
},
|
||||||
@ -118,7 +118,7 @@ func TestDecode(t *testing.T) {
|
|||||||
|
|
||||||
serializer: &mockSerializer{actual: gvk1, obj: decodable1},
|
serializer: &mockSerializer{actual: gvk1, obj: decodable1},
|
||||||
copier: &checkCopy{in: decodable1, obj: decodable1},
|
copier: &checkCopy{in: decodable1, obj: decodable1},
|
||||||
convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: "other/__internal"},
|
convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: unversioned.GroupVersion{Group: "other", Version: "__internal"}},
|
||||||
expectedGVK: gvk1,
|
expectedGVK: gvk1,
|
||||||
expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1, decodable2}},
|
expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1, decodable2}},
|
||||||
},
|
},
|
||||||
@ -127,7 +127,7 @@ func TestDecode(t *testing.T) {
|
|||||||
|
|
||||||
serializer: &mockSerializer{actual: gvk1, obj: decodable1},
|
serializer: &mockSerializer{actual: gvk1, obj: decodable1},
|
||||||
copier: &checkCopy{in: decodable1, obj: nil, err: fmt.Errorf("error on copy")},
|
copier: &checkCopy{in: decodable1, obj: nil, err: fmt.Errorf("error on copy")},
|
||||||
convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: "other/__internal"},
|
convertor: &checkConvertor{in: decodable1, obj: decodable2, groupVersion: unversioned.GroupVersion{Group: "other", Version: "__internal"}},
|
||||||
expectedGVK: gvk1,
|
expectedGVK: gvk1,
|
||||||
expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1, decodable2}},
|
expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1, decodable2}},
|
||||||
},
|
},
|
||||||
@ -228,7 +228,7 @@ func (c *checkCopy) Copy(obj runtime.Object) (runtime.Object, error) {
|
|||||||
type checkConvertor struct {
|
type checkConvertor struct {
|
||||||
err error
|
err error
|
||||||
in, obj runtime.Object
|
in, obj runtime.Object
|
||||||
groupVersion string
|
groupVersion unversioned.GroupVersion
|
||||||
directConvert bool
|
directConvert bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,7 +244,7 @@ func (c *checkConvertor) Convert(in, out interface{}) error {
|
|||||||
}
|
}
|
||||||
return c.err
|
return c.err
|
||||||
}
|
}
|
||||||
func (c *checkConvertor) ConvertToVersion(in runtime.Object, outVersion string) (out runtime.Object, err error) {
|
func (c *checkConvertor) ConvertToVersion(in runtime.Object, outVersion unversioned.GroupVersion) (out runtime.Object, err error) {
|
||||||
if c.directConvert {
|
if c.directConvert {
|
||||||
return nil, fmt.Errorf("unexpected call to ConvertToVersion")
|
return nil, fmt.Errorf("unexpected call to ConvertToVersion")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user