From f1de364a0e6f48de8b3d55f23bc8e9cfce54520c Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Thu, 17 Sep 2015 22:54:15 -0700 Subject: [PATCH] Make latest.AllGroups public; fix thirdPartyResourceDataCreator.New --- pkg/master/master.go | 11 +++-- pkg/registry/thirdpartyresourcedata/codec.go | 11 +++-- .../thirdpartyresourcedata/codec_test.go | 48 +++++++++++++++++++ 3 files changed, 61 insertions(+), 9 deletions(-) diff --git a/pkg/master/master.go b/pkg/master/master.go index 499279f417c..235ea0aacc7 100644 --- a/pkg/master/master.go +++ b/pkg/master/master.go @@ -939,11 +939,12 @@ func (m *Master) thirdpartyapi(group, kind, version string) *apiserver.APIGroupV Convertor: api.Scheme, Typer: api.Scheme, - Mapper: thirdpartyresourcedata.NewMapper(latest.GroupOrDie("experimental").RESTMapper, kind, version, group), - Codec: thirdpartyresourcedata.NewCodec(latest.GroupOrDie("experimental").Codec, kind), - Linker: latest.GroupOrDie("experimental").SelfLinker, - Storage: storage, - Version: version, + Mapper: thirdpartyresourcedata.NewMapper(latest.GroupOrDie("experimental").RESTMapper, kind, version, group), + Codec: thirdpartyresourcedata.NewCodec(latest.GroupOrDie("experimental").Codec, kind), + Linker: latest.GroupOrDie("experimental").SelfLinker, + Storage: storage, + Version: version, + ServerVersion: latest.GroupOrDie("").GroupVersion, Context: m.requestContextMapper, diff --git a/pkg/registry/thirdpartyresourcedata/codec.go b/pkg/registry/thirdpartyresourcedata/codec.go index a292641eb2c..9d4c968bbbd 100644 --- a/pkg/registry/thirdpartyresourcedata/codec.go +++ b/pkg/registry/thirdpartyresourcedata/codec.go @@ -266,15 +266,18 @@ type thirdPartyResourceDataCreator struct { } func (t *thirdPartyResourceDataCreator) New(version, kind string) (out runtime.Object, err error) { - if t.version != version { - return nil, fmt.Errorf("unknown version %s for kind %s", version, kind) - } switch kind { case "ThirdPartyResourceData": + if t.version != version { + return nil, fmt.Errorf("unknown version %s for kind %s", version, kind) + } return &experimental.ThirdPartyResourceData{}, nil case "ThirdPartyResourceDataList": + if t.version != version { + return nil, fmt.Errorf("unknown version %s for kind %s", version, kind) + } return &experimental.ThirdPartyResourceDataList{}, nil default: - return t.delegate.New(latest.GroupOrDie("experimental").Version, kind) + return t.delegate.New(version, kind) } } diff --git a/pkg/registry/thirdpartyresourcedata/codec_test.go b/pkg/registry/thirdpartyresourcedata/codec_test.go index 1667660a45c..3a6a77a7a35 100644 --- a/pkg/registry/thirdpartyresourcedata/codec_test.go +++ b/pkg/registry/thirdpartyresourcedata/codec_test.go @@ -24,7 +24,9 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/apis/experimental" + "k8s.io/kubernetes/pkg/runtime" ) type Foo struct { @@ -133,3 +135,49 @@ func TestCodec(t *testing.T) { } } } + +func TestCreater(t *testing.T) { + creater := NewObjectCreator("creater version", api.Scheme) + tests := []struct { + name string + version string + kind string + expectedObj runtime.Object + expectErr bool + }{ + { + name: "valid ThirdPartyResourceData creation", + version: "creater version", + kind: "ThirdPartyResourceData", + expectedObj: &experimental.ThirdPartyResourceData{}, + expectErr: false, + }, + { + name: "invalid ThirdPartyResourceData creation", + version: "invalid version", + kind: "ThirdPartyResourceData", + expectedObj: nil, + expectErr: true, + }, + { + name: "valid ListOptions creation", + version: "v1", + kind: "ListOptions", + expectedObj: &v1.ListOptions{}, + expectErr: false, + }, + } + for _, test := range tests { + out, err := creater.New(test.version, test.kind) + if err != nil && !test.expectErr { + t.Errorf("[%s] unexpected error: %v", test.name, err) + } + if err == nil && test.expectErr { + t.Errorf("[%s] unexpected non-error", test.name) + } + if !reflect.DeepEqual(test.expectedObj, out) { + t.Errorf("[%s] unexpected error: expect: %v, got: %v", test.expectedObj, out) + } + + } +}