mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 19:23:40 +00:00
make DefaultRESTMapper methods type correct
This commit is contained in:
parent
94ad6aa0c4
commit
c40dd0335a
@ -30,6 +30,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
)
|
||||
@ -47,6 +48,9 @@ func init() {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
worstToBestGroupVersions := []unversioned.GroupVersion{}
|
||||
|
||||
// Use the first API version in the list of registered versions as the latest.
|
||||
registeredGroupVersions := registered.GroupVersionsForGroup("")
|
||||
groupVersion := registeredGroupVersions[0]
|
||||
@ -61,6 +65,7 @@ func init() {
|
||||
for i := len(registeredGroupVersions) - 1; i >= 0; i-- {
|
||||
versions = append(versions, registeredGroupVersions[i].Version)
|
||||
groupVersions = append(groupVersions, registeredGroupVersions[i].String())
|
||||
worstToBestGroupVersions = append(worstToBestGroupVersions, registeredGroupVersions[i])
|
||||
}
|
||||
groupMeta.Versions = versions
|
||||
groupMeta.GroupVersions = groupVersions
|
||||
@ -89,7 +94,7 @@ func init() {
|
||||
"ThirdPartyResourceData",
|
||||
"ThirdPartyResourceList")
|
||||
|
||||
mapper := api.NewDefaultRESTMapper("", versions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
|
||||
mapper := api.NewDefaultRESTMapper(worstToBestGroupVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
|
||||
// setup aliases for groups of resources
|
||||
mapper.AddResourceAlias("all", userResources...)
|
||||
groupMeta.RESTMapper = mapper
|
||||
|
@ -17,7 +17,6 @@ limitations under the License.
|
||||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
@ -35,23 +34,16 @@ func RegisterRESTMapper(m meta.RESTMapper) {
|
||||
RESTMapper = append(RESTMapper.(meta.MultiRESTMapper), m)
|
||||
}
|
||||
|
||||
func NewDefaultRESTMapper(group string, groupVersionStrings []string, interfacesFunc meta.VersionInterfacesFunc,
|
||||
func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, interfacesFunc meta.VersionInterfacesFunc,
|
||||
importPathPrefix string, ignoredKinds, rootScoped sets.String) *meta.DefaultRESTMapper {
|
||||
|
||||
mapper := meta.NewDefaultRESTMapper(group, groupVersionStrings, interfacesFunc)
|
||||
mapper := meta.NewDefaultRESTMapper(defaultGroupVersions, interfacesFunc)
|
||||
// enumerate all supported versions, get the kinds, and register with the mapper how to address
|
||||
// our resources.
|
||||
for _, gvString := range groupVersionStrings {
|
||||
gv, err := unversioned.ParseGroupVersion(gvString)
|
||||
// TODO stop panicing when the types are fixed
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if gv.Group != group {
|
||||
panic(fmt.Sprintf("%q does not match the expect %q", gv.Group, group))
|
||||
}
|
||||
|
||||
for _, gv := range defaultGroupVersions {
|
||||
for kind, oType := range Scheme.KnownTypes(gv.String()) {
|
||||
gvk := gv.WithKind(kind)
|
||||
|
||||
// TODO: Remove import path prefix check.
|
||||
// We check the import path prefix because we currently stuff both "api" and "extensions" objects
|
||||
// into the same group within Scheme since Scheme has no notion of groups yet.
|
||||
@ -62,7 +54,7 @@ func NewDefaultRESTMapper(group string, groupVersionStrings []string, interfaces
|
||||
if rootScoped.Has(kind) {
|
||||
scope = meta.RESTScopeRoot
|
||||
}
|
||||
mapper.Add(scope, kind, gv.String(), false)
|
||||
mapper.Add(gvk, scope, false)
|
||||
}
|
||||
}
|
||||
return mapper
|
||||
|
@ -69,7 +69,7 @@ var RESTScopeRoot = &restScope{
|
||||
// (`get pod bar` vs `get pods bar`)
|
||||
// TODO these maps should be keyed based on GroupVersionKinds
|
||||
type DefaultRESTMapper struct {
|
||||
groupVersions []unversioned.GroupVersion
|
||||
defaultGroupVersions []unversioned.GroupVersion
|
||||
|
||||
resourceToKind map[string]unversioned.GroupVersionKind
|
||||
kindToPluralResource map[unversioned.GroupVersionKind]string
|
||||
@ -89,12 +89,7 @@ type VersionInterfacesFunc func(apiVersion string) (*VersionInterfaces, error)
|
||||
// and the Kubernetes API conventions. Takes a group name, a priority list of the versions
|
||||
// to search when an object has no default version (set empty to return an error),
|
||||
// and a function that retrieves the correct codec and metadata for a given version.
|
||||
// TODO remove group when this API is fixed. It is no longer used.
|
||||
// The external API for a RESTMapper is cross-version and this is currently called using
|
||||
// group/version tuples. In the end, the structure may be easier to understand with
|
||||
// a GroupRESTMapper and CrossGroupRESTMapper, but for now, this one is constructed and
|
||||
// used a CrossGroupRESTMapper.
|
||||
func NewDefaultRESTMapper(group string, gvStrings []string, f VersionInterfacesFunc) *DefaultRESTMapper {
|
||||
func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, f VersionInterfacesFunc) *DefaultRESTMapper {
|
||||
resourceToKind := make(map[string]unversioned.GroupVersionKind)
|
||||
kindToPluralResource := make(map[unversioned.GroupVersionKind]string)
|
||||
kindToScope := make(map[unversioned.GroupVersionKind]RESTScope)
|
||||
@ -102,27 +97,19 @@ func NewDefaultRESTMapper(group string, gvStrings []string, f VersionInterfacesF
|
||||
pluralToSingular := make(map[string]string)
|
||||
// TODO: verify name mappings work correctly when versions differ
|
||||
|
||||
gvs := []unversioned.GroupVersion{}
|
||||
for _, gvString := range gvStrings {
|
||||
gvs = append(gvs, unversioned.ParseGroupVersionOrDie(gvString))
|
||||
}
|
||||
|
||||
return &DefaultRESTMapper{
|
||||
resourceToKind: resourceToKind,
|
||||
kindToPluralResource: kindToPluralResource,
|
||||
kindToScope: kindToScope,
|
||||
groupVersions: gvs,
|
||||
defaultGroupVersions: defaultGroupVersions,
|
||||
singularToPlural: singularToPlural,
|
||||
pluralToSingular: pluralToSingular,
|
||||
interfacesFunc: f,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *DefaultRESTMapper) Add(scope RESTScope, kind string, gvString string, mixedCase bool) {
|
||||
gv := unversioned.ParseGroupVersionOrDie(gvString)
|
||||
gvk := gv.WithKind(kind)
|
||||
|
||||
plural, singular := KindToResource(kind, mixedCase)
|
||||
func (m *DefaultRESTMapper) Add(gvk unversioned.GroupVersionKind, scope RESTScope, mixedCase bool) {
|
||||
plural, singular := KindToResource(gvk.Kind, mixedCase)
|
||||
m.singularToPlural[singular] = plural
|
||||
m.pluralToSingular[plural] = singular
|
||||
_, ok1 := m.resourceToKind[plural]
|
||||
@ -223,7 +210,7 @@ func (m *DefaultRESTMapper) RESTMapping(kind string, versions ...string) (*RESTM
|
||||
}
|
||||
// Use the default preferred versions
|
||||
if !hadVersion && (groupVersion == nil) {
|
||||
for _, currGroupVersion := range m.groupVersions {
|
||||
for _, currGroupVersion := range m.defaultGroupVersions {
|
||||
currGVK := currGroupVersion.WithKind(kind)
|
||||
if _, ok := m.kindToPluralResource[currGVK]; ok {
|
||||
groupVersion = &currGroupVersion
|
||||
@ -241,7 +228,7 @@ func (m *DefaultRESTMapper) RESTMapping(kind string, versions ...string) (*RESTM
|
||||
resource, ok := m.kindToPluralResource[gvk]
|
||||
if !ok {
|
||||
found := []unversioned.GroupVersion{}
|
||||
for _, gv := range m.groupVersions {
|
||||
for _, gv := range m.defaultGroupVersions {
|
||||
if _, ok := m.kindToPluralResource[gvk]; ok {
|
||||
found = append(found, gv)
|
||||
}
|
||||
|
@ -96,21 +96,23 @@ func TestRESTMapperVersionAndKindForResource(t *testing.T) {
|
||||
MixedCase bool
|
||||
Err bool
|
||||
}{
|
||||
{Resource: "internalobjec", Err: true, GroupVersionToRegister: testGroupVersion},
|
||||
{Resource: "internalObjec", Err: true, GroupVersionToRegister: testGroupVersion},
|
||||
{Resource: "internalobjec", Err: true},
|
||||
{Resource: "internalObjec", Err: true},
|
||||
|
||||
{Resource: "internalobject", GroupVersionToRegister: testGroupVersion, ExpectedGVK: unversioned.NewGroupVersionKind(testGroupVersion, "InternalObject")},
|
||||
{Resource: "internalobjects", GroupVersionToRegister: testGroupVersion, ExpectedGVK: unversioned.NewGroupVersionKind(testGroupVersion, "InternalObject")},
|
||||
{Resource: "internalobject", ExpectedGVK: testGroupVersion.WithKind("InternalObject")},
|
||||
{Resource: "internalobjects", ExpectedGVK: testGroupVersion.WithKind("InternalObject")},
|
||||
|
||||
{Resource: "internalobject", GroupVersionToRegister: testGroupVersion, MixedCase: true, ExpectedGVK: unversioned.NewGroupVersionKind(testGroupVersion, "InternalObject")},
|
||||
{Resource: "internalobjects", GroupVersionToRegister: testGroupVersion, MixedCase: true, ExpectedGVK: unversioned.NewGroupVersionKind(testGroupVersion, "InternalObject")},
|
||||
{Resource: "internalobject", MixedCase: true, ExpectedGVK: testGroupVersion.WithKind("InternalObject")},
|
||||
{Resource: "internalobjects", MixedCase: true, ExpectedGVK: testGroupVersion.WithKind("InternalObject")},
|
||||
|
||||
{Resource: "internalObject", GroupVersionToRegister: testGroupVersion, MixedCase: true, ExpectedGVK: unversioned.NewGroupVersionKind(testGroupVersion, "InternalObject")},
|
||||
{Resource: "internalObjects", GroupVersionToRegister: testGroupVersion, MixedCase: true, ExpectedGVK: unversioned.NewGroupVersionKind(testGroupVersion, "InternalObject")},
|
||||
{Resource: "internalObject", MixedCase: true, ExpectedGVK: testGroupVersion.WithKind("InternalObject")},
|
||||
{Resource: "internalObjects", MixedCase: true, ExpectedGVK: testGroupVersion.WithKind("InternalObject")},
|
||||
}
|
||||
for i, testCase := range testCases {
|
||||
mapper := NewDefaultRESTMapper(testGroup, []string{testGroupVersion.String()}, fakeInterfaces)
|
||||
mapper.Add(RESTScopeNamespace, testCase.ExpectedGVK.Kind, testCase.GroupVersionToRegister.String(), testCase.MixedCase)
|
||||
mapper := NewDefaultRESTMapper([]unversioned.GroupVersion{testGroupVersion}, fakeInterfaces)
|
||||
if len(testCase.ExpectedGVK.Kind) != 0 {
|
||||
mapper.Add(testCase.ExpectedGVK, RESTScopeNamespace, testCase.MixedCase)
|
||||
}
|
||||
v, k, err := mapper.VersionAndKindForResource(testCase.Resource)
|
||||
|
||||
hasErr := err != nil
|
||||
@ -137,19 +139,18 @@ func TestRESTMapperVersionAndKindForResource(t *testing.T) {
|
||||
|
||||
func TestRESTMapperGroupForResource(t *testing.T) {
|
||||
testCases := []struct {
|
||||
Resource string
|
||||
Kind string
|
||||
GroupVersion unversioned.GroupVersion
|
||||
Err bool
|
||||
Resource string
|
||||
GroupVersionKind unversioned.GroupVersionKind
|
||||
Err bool
|
||||
}{
|
||||
{Resource: "myObject", Kind: "MyObject", GroupVersion: unversioned.GroupVersion{Group: "testapi", Version: "test"}},
|
||||
{Resource: "myobject", Kind: "MyObject", GroupVersion: unversioned.GroupVersion{Group: "testapi2", Version: "test"}},
|
||||
{Resource: "myObje", Err: true, Kind: "MyObject", GroupVersion: unversioned.GroupVersion{Group: "testapi", Version: "test"}},
|
||||
{Resource: "myobje", Err: true, Kind: "MyObject", GroupVersion: unversioned.GroupVersion{Group: "testapi", Version: "test"}},
|
||||
{Resource: "myObject", GroupVersionKind: unversioned.GroupVersionKind{Group: "testapi", Version: "test", Kind: "MyObject"}},
|
||||
{Resource: "myobject", GroupVersionKind: unversioned.GroupVersionKind{Group: "testapi2", Version: "test", Kind: "MyObject"}},
|
||||
{Resource: "myObje", Err: true, GroupVersionKind: unversioned.GroupVersionKind{Group: "testapi", Version: "test", Kind: "MyObject"}},
|
||||
{Resource: "myobje", Err: true, GroupVersionKind: unversioned.GroupVersionKind{Group: "testapi", Version: "test", Kind: "MyObject"}},
|
||||
}
|
||||
for i, testCase := range testCases {
|
||||
mapper := NewDefaultRESTMapper(testCase.GroupVersion.Group, []string{testCase.GroupVersion.String()}, fakeInterfaces)
|
||||
mapper.Add(RESTScopeNamespace, testCase.Kind, testCase.GroupVersion.String(), false)
|
||||
mapper := NewDefaultRESTMapper([]unversioned.GroupVersion{testCase.GroupVersionKind.GroupVersion()}, fakeInterfaces)
|
||||
mapper.Add(testCase.GroupVersionKind, RESTScopeNamespace, false)
|
||||
g, err := mapper.GroupForResource(testCase.Resource)
|
||||
if testCase.Err {
|
||||
if err == nil {
|
||||
@ -157,8 +158,8 @@ func TestRESTMapperGroupForResource(t *testing.T) {
|
||||
}
|
||||
} else if err != nil {
|
||||
t.Errorf("%d: unexpected error: %v", i, err)
|
||||
} else if g != testCase.GroupVersion.Group {
|
||||
t.Errorf("%d: expected group %q, got %q", i, testCase.GroupVersion.Group, g)
|
||||
} else if g != testCase.GroupVersionKind.Group {
|
||||
t.Errorf("%d: expected group %q, got %q", i, testCase.GroupVersionKind.Group, g)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -193,6 +194,8 @@ func TestKindToResource(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestRESTMapperResourceSingularizer(t *testing.T) {
|
||||
testGroupVersion := unversioned.GroupVersion{Group: "tgroup", Version: "test"}
|
||||
|
||||
testCases := []struct {
|
||||
Kind string
|
||||
MixedCase bool
|
||||
@ -216,11 +219,9 @@ func TestRESTMapperResourceSingularizer(t *testing.T) {
|
||||
{Kind: "lowercases", MixedCase: false, Plural: "lowercases", Singular: "lowercases"},
|
||||
}
|
||||
for i, testCase := range testCases {
|
||||
testGroupVersion := unversioned.GroupVersion{Group: "tgroup", Version: "test"}
|
||||
|
||||
mapper := NewDefaultRESTMapper(testGroupVersion.Group, []string{testGroupVersion.String()}, fakeInterfaces)
|
||||
mapper := NewDefaultRESTMapper([]unversioned.GroupVersion{testGroupVersion}, fakeInterfaces)
|
||||
// create singular/plural mapping
|
||||
mapper.Add(RESTScopeNamespace, testCase.Kind, testGroupVersion.String(), testCase.MixedCase)
|
||||
mapper.Add(testGroupVersion.WithKind(testCase.Kind), RESTScopeNamespace, testCase.MixedCase)
|
||||
|
||||
singular, _ := mapper.ResourceSingularizer(testCase.Plural)
|
||||
if singular != testCase.Singular {
|
||||
@ -232,12 +233,13 @@ func TestRESTMapperResourceSingularizer(t *testing.T) {
|
||||
func TestRESTMapperRESTMapping(t *testing.T) {
|
||||
testGroup := "tgroup"
|
||||
testGroupVersion := unversioned.GroupVersion{Group: testGroup, Version: "test"}
|
||||
internalGroupVersion := unversioned.GroupVersion{Group: testGroup, Version: "test"}
|
||||
|
||||
testCases := []struct {
|
||||
Kind string
|
||||
APIGroupVersions []unversioned.GroupVersion
|
||||
MixedCase bool
|
||||
DefaultVersions []string
|
||||
DefaultVersions []unversioned.GroupVersion
|
||||
|
||||
Resource string
|
||||
ExpectedGroupVersion *unversioned.GroupVersion
|
||||
@ -246,25 +248,23 @@ func TestRESTMapperRESTMapping(t *testing.T) {
|
||||
{Kind: "Unknown", Err: true},
|
||||
{Kind: "InternalObject", Err: true},
|
||||
|
||||
{DefaultVersions: []string{testGroupVersion.String()}, Kind: "Unknown", Err: true},
|
||||
{DefaultVersions: []unversioned.GroupVersion{testGroupVersion}, Kind: "Unknown", Err: true},
|
||||
|
||||
{DefaultVersions: []string{testGroupVersion.String()}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"},
|
||||
{DefaultVersions: []string{testGroupVersion.String()}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"},
|
||||
{DefaultVersions: []unversioned.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"},
|
||||
{DefaultVersions: []unversioned.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"},
|
||||
|
||||
{DefaultVersions: []string{testGroupVersion.String()}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"},
|
||||
{DefaultVersions: []unversioned.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"},
|
||||
|
||||
{DefaultVersions: []string{testGroupVersion.String()}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{}, Resource: "internalobjects", ExpectedGroupVersion: &unversioned.GroupVersion{Group: testGroup, Version: "test"}},
|
||||
{DefaultVersions: []unversioned.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{}, Resource: "internalobjects", ExpectedGroupVersion: &unversioned.GroupVersion{Group: testGroup, Version: "test"}},
|
||||
|
||||
{DefaultVersions: []string{testGroupVersion.String()}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"},
|
||||
{DefaultVersions: []string{testGroupVersion.String()}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, MixedCase: true, Resource: "internalObjects"},
|
||||
{DefaultVersions: []unversioned.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, Resource: "internalobjects"},
|
||||
{DefaultVersions: []unversioned.GroupVersion{testGroupVersion}, Kind: "InternalObject", APIGroupVersions: []unversioned.GroupVersion{{Group: testGroup, Version: "test"}}, MixedCase: true, Resource: "internalObjects"},
|
||||
|
||||
// TODO: add test for a resource that exists in one version but not another
|
||||
}
|
||||
for i, testCase := range testCases {
|
||||
internalGroupVersion := unversioned.GroupVersion{Group: testGroup, Version: "test"}
|
||||
|
||||
mapper := NewDefaultRESTMapper(testGroup, testCase.DefaultVersions, fakeInterfaces)
|
||||
mapper.Add(RESTScopeNamespace, "InternalObject", internalGroupVersion.String(), testCase.MixedCase)
|
||||
mapper := NewDefaultRESTMapper(testCase.DefaultVersions, fakeInterfaces)
|
||||
mapper.Add(internalGroupVersion.WithKind("InternalObject"), RESTScopeNamespace, testCase.MixedCase)
|
||||
|
||||
deprecatedGroupVersionStrings := []string{}
|
||||
for _, gv := range testCase.APIGroupVersions {
|
||||
@ -303,9 +303,9 @@ func TestRESTMapperRESTMappingSelectsVersion(t *testing.T) {
|
||||
expectedGroupVersion2 := unversioned.GroupVersion{Group: "tgroup", Version: "test2"}
|
||||
expectedGroupVersion3 := unversioned.GroupVersion{Group: "tgroup", Version: "test3"}
|
||||
|
||||
mapper := NewDefaultRESTMapper("tgroup", []string{expectedGroupVersion1.String(), expectedGroupVersion2.String()}, fakeInterfaces)
|
||||
mapper.Add(RESTScopeNamespace, "InternalObject", expectedGroupVersion1.String(), false)
|
||||
mapper.Add(RESTScopeNamespace, "OtherObject", expectedGroupVersion2.String(), false)
|
||||
mapper := NewDefaultRESTMapper([]unversioned.GroupVersion{expectedGroupVersion1, expectedGroupVersion2}, fakeInterfaces)
|
||||
mapper.Add(expectedGroupVersion1.WithKind("InternalObject"), RESTScopeNamespace, false)
|
||||
mapper.Add(expectedGroupVersion2.WithKind("OtherObject"), RESTScopeNamespace, false)
|
||||
|
||||
// pick default matching object kind based on search order
|
||||
mapping, err := mapper.RESTMapping("OtherObject")
|
||||
@ -359,8 +359,8 @@ func TestRESTMapperReportsErrorOnBadVersion(t *testing.T) {
|
||||
expectedGroupVersion1 := unversioned.GroupVersion{Group: "tgroup", Version: "test1"}
|
||||
expectedGroupVersion2 := unversioned.GroupVersion{Group: "tgroup", Version: "test2"}
|
||||
|
||||
mapper := NewDefaultRESTMapper("tgroup", []string{expectedGroupVersion1.String(), expectedGroupVersion2.String()}, unmatchedVersionInterfaces)
|
||||
mapper.Add(RESTScopeNamespace, "InternalObject", expectedGroupVersion1.String(), false)
|
||||
mapper := NewDefaultRESTMapper([]unversioned.GroupVersion{expectedGroupVersion1, expectedGroupVersion2}, unmatchedVersionInterfaces)
|
||||
mapper.Add(expectedGroupVersion1.WithKind("InternalObject"), RESTScopeNamespace, false)
|
||||
_, err := mapper.RESTMapping("InternalObject", expectedGroupVersion1.String())
|
||||
if err == nil {
|
||||
t.Errorf("unexpected non-error")
|
||||
|
@ -28,6 +28,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api/latest"
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
@ -44,6 +45,9 @@ func init() {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
worstToBestGroupVersions := []unversioned.GroupVersion{}
|
||||
|
||||
registeredGroupVersions := registered.GroupVersionsForGroup("componentconfig")
|
||||
groupVersion := registeredGroupVersions[0]
|
||||
*groupMeta = latest.GroupMeta{
|
||||
@ -57,6 +61,7 @@ func init() {
|
||||
for i := len(registeredGroupVersions) - 1; i >= 0; i-- {
|
||||
versions = append(versions, registeredGroupVersions[i].Version)
|
||||
groupVersions = append(groupVersions, registeredGroupVersions[i].String())
|
||||
worstToBestGroupVersions = append(worstToBestGroupVersions, registeredGroupVersions[i])
|
||||
}
|
||||
groupMeta.Versions = versions
|
||||
groupMeta.GroupVersions = groupVersions
|
||||
@ -69,7 +74,7 @@ func init() {
|
||||
|
||||
ignoredKinds := sets.NewString()
|
||||
|
||||
groupMeta.RESTMapper = api.NewDefaultRESTMapper("componentconfig", groupVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
|
||||
groupMeta.RESTMapper = api.NewDefaultRESTMapper(worstToBestGroupVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
|
||||
api.RegisterRESTMapper(groupMeta.RESTMapper)
|
||||
groupMeta.InterfacesFor = interfacesFor
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api/latest"
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
@ -44,6 +45,9 @@ func init() {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
worstToBestGroupVersions := []unversioned.GroupVersion{}
|
||||
|
||||
registeredGroupVersions := registered.GroupVersionsForGroup("extensions")
|
||||
groupVersion := registeredGroupVersions[0]
|
||||
*groupMeta = latest.GroupMeta{
|
||||
@ -57,6 +61,7 @@ func init() {
|
||||
for i := len(registeredGroupVersions) - 1; i >= 0; i-- {
|
||||
versions = append(versions, registeredGroupVersions[i].Version)
|
||||
groupVersions = append(groupVersions, registeredGroupVersions[i].String())
|
||||
worstToBestGroupVersions = append(worstToBestGroupVersions, registeredGroupVersions[i])
|
||||
}
|
||||
groupMeta.Versions = versions
|
||||
groupMeta.GroupVersions = groupVersions
|
||||
@ -69,7 +74,7 @@ func init() {
|
||||
|
||||
ignoredKinds := sets.NewString()
|
||||
|
||||
groupMeta.RESTMapper = api.NewDefaultRESTMapper("extensions", groupVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
|
||||
groupMeta.RESTMapper = api.NewDefaultRESTMapper(worstToBestGroupVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
|
||||
api.RegisterRESTMapper(groupMeta.RESTMapper)
|
||||
groupMeta.InterfacesFor = interfacesFor
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/api/latest"
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
_ "k8s.io/kubernetes/pkg/apis/metrics"
|
||||
"k8s.io/kubernetes/pkg/apis/metrics/v1alpha1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
@ -44,6 +45,9 @@ func init() {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
worstToBestGroupVersions := []unversioned.GroupVersion{}
|
||||
|
||||
registeredGroupVersions := registered.GroupVersionsForGroup("metrics")
|
||||
groupVersion := registeredGroupVersions[0]
|
||||
*groupMeta = latest.GroupMeta{
|
||||
@ -57,6 +61,7 @@ func init() {
|
||||
for i := len(registeredGroupVersions) - 1; i >= 0; i-- {
|
||||
versions = append(versions, registeredGroupVersions[i].Version)
|
||||
groupVersions = append(groupVersions, registeredGroupVersions[i].String())
|
||||
worstToBestGroupVersions = append(worstToBestGroupVersions, registeredGroupVersions[i])
|
||||
}
|
||||
groupMeta.Versions = versions
|
||||
groupMeta.GroupVersions = groupVersions
|
||||
@ -69,7 +74,7 @@ func init() {
|
||||
|
||||
ignoredKinds := sets.NewString()
|
||||
|
||||
groupMeta.RESTMapper = api.NewDefaultRESTMapper("metrics", groupVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
|
||||
groupMeta.RESTMapper = api.NewDefaultRESTMapper(worstToBestGroupVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
|
||||
api.RegisterRESTMapper(groupMeta.RESTMapper)
|
||||
groupMeta.InterfacesFor = interfacesFor
|
||||
}
|
||||
|
@ -107,8 +107,7 @@ func interfacesFor(version string) (*meta.VersionInterfaces, error) {
|
||||
}
|
||||
|
||||
func newMapper() *meta.DefaultRESTMapper {
|
||||
gvStrings := []string{testGroupVersion.String(), newGroupVersion.String()}
|
||||
return meta.NewDefaultRESTMapper(testAPIGroup, gvStrings, interfacesFor)
|
||||
return meta.NewDefaultRESTMapper([]unversioned.GroupVersion{testGroupVersion, newGroupVersion}, interfacesFor)
|
||||
}
|
||||
|
||||
func addGrouplessTypes() {
|
||||
@ -176,11 +175,13 @@ func init() {
|
||||
// the mapper how to address our resources
|
||||
for _, gv := range groupVersions {
|
||||
for kind := range api.Scheme.KnownTypes(gv.String()) {
|
||||
gvk := gv.WithKind(kind)
|
||||
|
||||
root := bool(kind == "SimpleRoot")
|
||||
if root {
|
||||
nsMapper.Add(meta.RESTScopeRoot, kind, gv.String(), false)
|
||||
nsMapper.Add(gvk, meta.RESTScopeRoot, false)
|
||||
} else {
|
||||
nsMapper.Add(meta.RESTScopeNamespace, kind, gv.String(), false)
|
||||
nsMapper.Add(gvk, meta.RESTScopeNamespace, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -90,18 +90,20 @@ func newExternalScheme() (*runtime.Scheme, meta.RESTMapper, runtime.Codec) {
|
||||
scheme.AddKnownTypeWithName(validVersionGV.String(), "Type", &ExternalType2{})
|
||||
|
||||
codec := runtime.CodecFor(scheme, unlikelyGV.String())
|
||||
mapper := meta.NewDefaultRESTMapper("apitest", []string{unlikelyGV.String(), validVersionGV.String()}, func(version string) (*meta.VersionInterfaces, error) {
|
||||
mapper := meta.NewDefaultRESTMapper([]unversioned.GroupVersion{unlikelyGV, validVersionGV}, func(version string) (*meta.VersionInterfaces, error) {
|
||||
return &meta.VersionInterfaces{
|
||||
Codec: runtime.CodecFor(scheme, version),
|
||||
ObjectConvertor: scheme,
|
||||
MetadataAccessor: meta.NewAccessor(),
|
||||
}, versionErrIfFalse(version == validVersionGV.String() || version == unlikelyGV.String())
|
||||
})
|
||||
for _, version := range []string{unlikelyGV.String(), validVersionGV.String()} {
|
||||
for kind := range scheme.KnownTypes(version) {
|
||||
for _, gv := range []unversioned.GroupVersion{unlikelyGV, validVersionGV} {
|
||||
for kind := range scheme.KnownTypes(gv.String()) {
|
||||
gvk := gv.WithKind(kind)
|
||||
|
||||
mixedCase := false
|
||||
scope := meta.RESTScopeNamespace
|
||||
mapper.Add(scope, kind, version, mixedCase)
|
||||
mapper.Add(gvk, scope, mixedCase)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user