Make latest.AllGroups public; fix thirdPartyResourceDataCreator.New

pull/6/head
Chao Xu 2015-09-17 22:54:15 -07:00
parent 8cab671261
commit f1de364a0e
3 changed files with 61 additions and 9 deletions

View File

@ -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,

View File

@ -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)
}
}

View File

@ -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)
}
}
}