Merge pull request #23596 from deads2k/relax-case-in-restmapper

Automatic merge from submit-queue

relax restmapper resource matching

We were matching case insensitive on Kinds, not Resources, thus driving me insane.

@liggitt @caesarxuchao
pull/6/head
k8s-merge-robot 2016-04-02 14:12:32 -07:00
commit b1b58c4165
1 changed files with 16 additions and 6 deletions

View File

@ -69,7 +69,6 @@ var RESTScopeRoot = &restScope{
// //
// TODO: Only accept plural for some operations for increased control? // TODO: Only accept plural for some operations for increased control?
// (`get pod bar` vs `get pods bar`) // (`get pod bar` vs `get pods bar`)
// TODO these maps should be keyed based on GroupVersionKinds
type DefaultRESTMapper struct { type DefaultRESTMapper struct {
defaultGroupVersions []unversioned.GroupVersion defaultGroupVersions []unversioned.GroupVersion
@ -143,6 +142,8 @@ var unpluralizedSuffixes = []string{
} }
// KindToResource converts Kind to a resource name. // KindToResource converts Kind to a resource name.
// Broken. This method only "sort of" works when used outside of this package. It assumes that Kinds and Resources match
// and they aren't guaranteed to do so.
func KindToResource(kind unversioned.GroupVersionKind) ( /*plural*/ unversioned.GroupVersionResource /*singular*/, unversioned.GroupVersionResource) { func KindToResource(kind unversioned.GroupVersionKind) ( /*plural*/ unversioned.GroupVersionResource /*singular*/, unversioned.GroupVersionResource) {
kindName := kind.Kind kindName := kind.Kind
if len(kindName) == 0 { if len(kindName) == 0 {
@ -199,7 +200,19 @@ func (m *DefaultRESTMapper) ResourceSingularizer(resourceType string) (string, e
return singular.Resource, nil return singular.Resource, nil
} }
func (m *DefaultRESTMapper) ResourcesFor(resource unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { // coerceResourceForMatching makes the resource lower case and converts internal versions to unspecified (legacy behavior)
func coerceResourceForMatching(resource unversioned.GroupVersionResource) unversioned.GroupVersionResource {
resource.Resource = strings.ToLower(resource.Resource)
if resource.Version == runtime.APIVersionInternal {
resource.Version = ""
}
return resource
}
func (m *DefaultRESTMapper) ResourcesFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) {
resource := coerceResourceForMatching(input)
hasResource := len(resource.Resource) > 0 hasResource := len(resource.Resource) > 0
hasGroup := len(resource.Group) > 0 hasGroup := len(resource.Group) > 0
hasVersion := len(resource.Version) > 0 hasVersion := len(resource.Version) > 0
@ -276,10 +289,7 @@ func (m *DefaultRESTMapper) ResourceFor(resource unversioned.GroupVersionResourc
} }
func (m *DefaultRESTMapper) KindsFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionKind, error) { func (m *DefaultRESTMapper) KindsFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionKind, error) {
resource := input.GroupVersion().WithResource(strings.ToLower(input.Resource)) resource := coerceResourceForMatching(input)
if resource.Version == runtime.APIVersionInternal {
resource.Version = ""
}
hasResource := len(resource.Resource) > 0 hasResource := len(resource.Resource) > 0
hasGroup := len(resource.Group) > 0 hasGroup := len(resource.Group) > 0