From 51b624103f1bc76a03928cb8d7f3c3db38fab5f8 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Sat, 30 Apr 2016 20:43:30 -0400 Subject: [PATCH] Change ConvertToVersion to use GroupVersion Long delayed refactor, avoids a few more allocations. --- pkg/api/conversion_test.go | 12 ++++++------ pkg/api/meta/restmapper_test.go | 2 +- pkg/api/serialization_test.go | 4 ++-- pkg/apiserver/resthandler.go | 2 +- pkg/apiserver/resthandler_test.go | 2 +- pkg/kubectl/cmd/annotate.go | 2 +- pkg/kubectl/cmd/convert.go | 2 +- pkg/kubectl/cmd/edit.go | 2 +- pkg/kubectl/cmd/get.go | 4 ++-- pkg/kubectl/cmd/label.go | 2 +- pkg/kubectl/resource/result.go | 14 +++++++------- pkg/kubectl/resource_printer.go | 2 +- pkg/kubectl/resource_printer_test.go | 2 +- pkg/registry/thirdpartyresourcedata/codec.go | 2 +- pkg/runtime/codec.go | 2 +- pkg/runtime/interfaces.go | 4 ++-- pkg/runtime/scheme.go | 14 +++++--------- pkg/runtime/scheme_test.go | 6 +++--- pkg/runtime/serializer/versioning/versioning.go | 4 ++-- .../serializer/versioning/versioning_test.go | 14 +++++++------- 20 files changed, 47 insertions(+), 51 deletions(-) diff --git a/pkg/api/conversion_test.go b/pkg/api/conversion_test.go index 2a91f0aec5e..0b20f98fdd9 100644 --- a/pkg/api/conversion_test.go +++ b/pkg/api/conversion_test.go @@ -50,11 +50,11 @@ func BenchmarkPodConversion(b *testing.B) { var result *api.Pod for i := 0; i < b.N; i++ { pod := &items[i%width] - versionedObj, err := scheme.ConvertToVersion(pod, testapi.Default.GroupVersion().String()) + versionedObj, err := scheme.ConvertToVersion(pod, *testapi.Default.GroupVersion()) if err != nil { 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 { b.Fatalf("Conversion error: %v", err) } @@ -76,11 +76,11 @@ func BenchmarkNodeConversion(b *testing.B) { scheme := api.Scheme var result *api.Node 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 { 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 { b.Fatalf("Conversion error: %v", err) } @@ -104,11 +104,11 @@ func BenchmarkReplicationControllerConversion(b *testing.B) { scheme := api.Scheme var result *api.ReplicationController 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 { 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 { b.Fatalf("Conversion error: %v", err) } diff --git a/pkg/api/meta/restmapper_test.go b/pkg/api/meta/restmapper_test.go index 8f494d0a617..5baad6e6223 100644 --- a/pkg/api/meta/restmapper_test.go +++ b/pkg/api/meta/restmapper_test.go @@ -32,7 +32,7 @@ func (fakeConvertor) Convert(in, out interface{}) error { 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 } diff --git a/pkg/api/serialization_test.go b/pkg/api/serialization_test.go index e52e965bd11..555d3ab44fb 100644 --- a/pkg/api/serialization_test.go +++ b/pkg/api/serialization_test.go @@ -281,7 +281,7 @@ func TestObjectWatchFraming(t *testing.T) { secret.Data["binary"] = []byte{0x00, 0x10, 0x30, 0x55, 0xff, 0x00} secret.Data["utf8"] = []byte("a string with \u0345 characters") 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) for _, streamingMediaType := range api.Codecs.SupportedStreamingMediaTypes() { s, _ := api.Codecs.StreamingSerializerForMediaType(streamingMediaType, nil) @@ -358,7 +358,7 @@ func benchmarkItems() []v1.Pod { for i := range items { var pod api.Pod apiObjectFuzzer.Fuzz(&pod) - out, err := api.Scheme.ConvertToVersion(&pod, "v1") + out, err := api.Scheme.ConvertToVersion(&pod, v1.SchemeGroupVersion) if err != nil { panic(err) } diff --git a/pkg/apiserver/resthandler.go b/pkg/apiserver/resthandler.go index f42ea04d1bb..8bf9f4e7d2c 100644 --- a/pkg/apiserver/resthandler.go +++ b/pkg/apiserver/resthandler.go @@ -459,7 +459,7 @@ func PatchResource(r rest.Patcher, scope RequestScope, typer runtime.ObjectTyper ctx := scope.ContextFunc(req) 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 { scope.err(err, res.ResponseWriter, req.Request) return diff --git a/pkg/apiserver/resthandler_test.go b/pkg/apiserver/resthandler_test.go index 30e8b9c2c42..7eb64f29177 100644 --- a/pkg/apiserver/resthandler_test.go +++ b/pkg/apiserver/resthandler_test.go @@ -174,7 +174,7 @@ func (tc *patchTestCase) Run(t *testing.T) { 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 { t.Errorf("%s: unexpected error: %v", tc.name, err) return diff --git a/pkg/kubectl/cmd/annotate.go b/pkg/kubectl/cmd/annotate.go index 3a081ad2d43..bb0266ddfed 100644 --- a/pkg/kubectl/cmd/annotate.go +++ b/pkg/kubectl/cmd/annotate.go @@ -221,7 +221,7 @@ func (o AnnotateOptions) RunAnnotate() error { 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 { return err } diff --git a/pkg/kubectl/cmd/convert.go b/pkg/kubectl/cmd/convert.go index 103bb96481b..e6810aa21fd 100644 --- a/pkg/kubectl/cmd/convert.go +++ b/pkg/kubectl/cmd/convert.go @@ -167,7 +167,7 @@ func (o *ConvertOptions) RunConvert() error { } 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 { return err } diff --git a/pkg/kubectl/cmd/edit.go b/pkg/kubectl/cmd/edit.go index 78f613a8670..f806e489ed0 100644 --- a/pkg/kubectl/cmd/edit.go +++ b/pkg/kubectl/cmd/edit.go @@ -182,7 +182,7 @@ func RunEdit(f *cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args if err != nil { return err } - objs, err := resource.AsVersionedObjects(infos, defaultVersion.String(), encoder) + objs, err := resource.AsVersionedObjects(infos, defaultVersion, encoder) if err != nil { return err } diff --git a/pkg/kubectl/cmd/get.go b/pkg/kubectl/cmd/get.go index 286cdf27781..c09563fb3f1 100644 --- a/pkg/kubectl/cmd/get.go +++ b/pkg/kubectl/cmd/get.go @@ -246,7 +246,7 @@ func RunGet(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string if err != nil { return err } - obj, err := resource.AsVersionedObject(infos, !singular, version.String(), f.JSONEncoder()) + obj, err := resource.AsVersionedObject(infos, !singular, version, f.JSONEncoder()) if err != nil { return err } @@ -273,7 +273,7 @@ func RunGet(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string } 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 { allErrs = append(allErrs, err) continue diff --git a/pkg/kubectl/cmd/label.go b/pkg/kubectl/cmd/label.go index b6a28d0888a..b39f7e4cfcc 100644 --- a/pkg/kubectl/cmd/label.go +++ b/pkg/kubectl/cmd/label.go @@ -246,7 +246,7 @@ func RunLabel(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri } outputObj = info.Object } 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 { return err } diff --git a/pkg/kubectl/resource/result.go b/pkg/kubectl/resource/result.go index f382da0d7a3..f37fcf1c6ae 100644 --- a/pkg/kubectl/resource/result.go +++ b/pkg/kubectl/resource/result.go @@ -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 // version will be preferred as the conversion target, but the Object's mapping version will be // 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) if err != nil { return nil, err @@ -222,7 +222,7 @@ func AsVersionedObject(infos []*Info, forceList bool, version string, encoder ru object = objects[0] } else { 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 { 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 // version will be preferred as the conversion target, but the Object's mapping version will be // 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{} for _, info := range infos { 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 // 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) { // TODO: ideally this would encode to version, but we don't expose multiple codecs here. 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 { 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 // 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 for _, version := range versions { - if len(version) == 0 { + if version.IsEmpty() { return object, nil } obj, err := convertor.ConvertToVersion(object, version) diff --git a/pkg/kubectl/resource_printer.go b/pkg/kubectl/resource_printer.go index a649ac861a6..cc336a0ce22 100644 --- a/pkg/kubectl/resource_printer.go +++ b/pkg/kubectl/resource_printer.go @@ -182,7 +182,7 @@ func (p *VersionedPrinter) PrintObj(obj runtime.Object, w io.Writer) error { if version.IsEmpty() { continue } - converted, err := p.convertor.ConvertToVersion(obj, version.String()) + converted, err := p.convertor.ConvertToVersion(obj, version) if runtime.IsNotRegisteredError(err) { continue } diff --git a/pkg/kubectl/resource_printer_test.go b/pkg/kubectl/resource_printer_test.go index f0a30edeeb8..c6c709085fe 100644 --- a/pkg/kubectl/resource_printer_test.go +++ b/pkg/kubectl/resource_printer_test.go @@ -105,7 +105,7 @@ func TestPrinter(t *testing.T) { }, } 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 { t.Fatalf("unexpected error: %v", err) } diff --git a/pkg/registry/thirdpartyresourcedata/codec.go b/pkg/registry/thirdpartyresourcedata/codec.go index 947957a9498..377cdf88b02 100644 --- a/pkg/registry/thirdpartyresourcedata/codec.go +++ b/pkg/registry/thirdpartyresourcedata/codec.go @@ -40,7 +40,7 @@ type thirdPartyObjectConverter struct { 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) { // 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. diff --git a/pkg/runtime/codec.go b/pkg/runtime/codec.go index 6379e71f5ba..c9dee29123d 100644 --- a/pkg/runtime/codec.go +++ b/pkg/runtime/codec.go @@ -162,7 +162,7 @@ func (c *parameterCodec) EncodeParameters(obj Object, to unversioned.GroupVersio return nil, err } if to != gvk.GroupVersion() { - out, err := c.convertor.ConvertToVersion(obj, to.String()) + out, err := c.convertor.ConvertToVersion(obj, to) if err != nil { return nil, err } diff --git a/pkg/runtime/interfaces.go b/pkg/runtime/interfaces.go index c388a12fe5f..04f0af29715 100644 --- a/pkg/runtime/interfaces.go +++ b/pkg/runtime/interfaces.go @@ -161,7 +161,7 @@ type StorageSerializer interface { // Non-codec interfaces 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. @@ -171,7 +171,7 @@ type ObjectConvertor interface { Convert(in, out interface{}) error // ConvertToVersion takes the provided object and converts it the provided version. This // 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) } diff --git a/pkg/runtime/scheme.go b/pkg/runtime/scheme.go index f763d15f67a..61537f06046 100644 --- a/pkg/runtime/scheme.go +++ b/pkg/runtime/scheme.go @@ -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 // return an error if the conversion does not result in a valid Object being // returned. The serializer handles loading/serializing nested objects. -func (s *Scheme) ConvertToVersion(in Object, outVersion string) (Object, error) { - gv, err := unversioned.ParseGroupVersion(outVersion) - if err != nil { - return nil, err - } +func (s *Scheme) ConvertToVersion(in Object, outVersion unversioned.GroupVersion) (Object, error) { switch in.(type) { case *Unknown, *Unstructured, *UnstructuredList: old := in.GetObjectKind().GroupVersionKind() defer in.GetObjectKind().SetGroupVersionKind(old) - setTargetVersion(in, s, gv) + setTargetVersion(in, s, outVersion) return in, nil } t := reflect.TypeOf(in) @@ -506,7 +502,7 @@ func (s *Scheme) ConvertToVersion(in Object, outVersion string) (Object, error) kind = kinds[0] } - outKind := gv.WithKind(kind.Kind) + outKind := outVersion.WithKind(kind.Kind) inKind, err := s.ObjectKind(in) if err != nil { @@ -518,12 +514,12 @@ func (s *Scheme) ConvertToVersion(in Object, outVersion string) (Object, error) 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 { return nil, err } - setTargetVersion(out, s, gv) + setTargetVersion(out, s, outVersion) return out, nil } diff --git a/pkg/runtime/scheme_test.go b/pkg/runtime/scheme_test.go index cb5d15c04d2..8f922f34a4c 100644 --- a/pkg/runtime/scheme_test.go +++ b/pkg/runtime/scheme_test.go @@ -530,7 +530,7 @@ func TestKnownTypes(t *testing.T) { func TestConvertToVersion(t *testing.T) { s := GetTestScheme() 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 { t.Fatalf("Failure: %v", err) } @@ -578,12 +578,12 @@ func TestMetaValues(t *testing.T) { s.Log(t) - out, err := s.ConvertToVersion(simple, externalGV.String()) + out, err := s.ConvertToVersion(simple, externalGV) if err != nil { t.Fatalf("unexpected error: %v", err) } - internal, err := s.ConvertToVersion(out, internalGV.String()) + internal, err := s.ConvertToVersion(out, internalGV) if err != nil { t.Fatalf("unexpected error: %v", err) } diff --git a/pkg/runtime/serializer/versioning/versioning.go b/pkg/runtime/serializer/versioning/versioning.go index 6d3405669fe..1d0c076d1d5 100644 --- a/pkg/runtime/serializer/versioning/versioning.go +++ b/pkg/runtime/serializer/versioning/versioning.go @@ -204,7 +204,7 @@ func (c *codec) Decode(data []byte, defaultGVK *unversioned.GroupVersionKind, in } // Convert if needed. - out, err := c.convertor.ConvertToVersion(obj, targetGV.String()) + out, err := c.convertor.ConvertToVersion(obj, targetGV) if err != nil { 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 if gvk.GroupVersion() != targetGV { - out, err := c.convertor.ConvertToVersion(obj, targetGV.String()) + out, err := c.convertor.ConvertToVersion(obj, targetGV) if err != nil { if ok { return err diff --git a/pkg/runtime/serializer/versioning/versioning_test.go b/pkg/runtime/serializer/versioning/versioning_test.go index 40e466cce73..4bb6469bf29 100644 --- a/pkg/runtime/serializer/versioning/versioning_test.go +++ b/pkg/runtime/serializer/versioning/versioning_test.go @@ -65,12 +65,12 @@ func TestDecode(t *testing.T) { }{ { serializer: &mockSerializer{actual: gvk1}, - convertor: &checkConvertor{groupVersion: "other/__internal"}, + convertor: &checkConvertor{groupVersion: unversioned.GroupVersion{Group: "other", Version: "__internal"}}, expectedGVK: gvk1, }, { 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, sameObject: decodable2, }, @@ -78,7 +78,7 @@ func TestDecode(t *testing.T) { { serializer: &mockSerializer{actual: gvk1, obj: decodable1}, 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, sameObject: decodable2, }, @@ -118,7 +118,7 @@ func TestDecode(t *testing.T) { serializer: &mockSerializer{actual: gvk1, 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, expectedObject: &runtime.VersionedObjects{Objects: []runtime.Object{decodable1, decodable2}}, }, @@ -127,7 +127,7 @@ func TestDecode(t *testing.T) { serializer: &mockSerializer{actual: gvk1, obj: decodable1}, 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, 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 { err error in, obj runtime.Object - groupVersion string + groupVersion unversioned.GroupVersion directConvert bool } @@ -244,7 +244,7 @@ func (c *checkConvertor) Convert(in, out interface{}) error { } 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 { return nil, fmt.Errorf("unexpected call to ConvertToVersion") }