Commit b1b58c41 authored by k8s-merge-robot's avatar k8s-merge-robot

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
parents 0337f3fb 936421a4
...@@ -69,7 +69,6 @@ var RESTScopeRoot = &restScope{ ...@@ -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{ ...@@ -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 ...@@ -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 ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment