// 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(resource unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { resource.Resource = strings.ToLower(resource.Resource) if resource.Version == runtime.APIVersionInternal { resource.Version = "" } hasResource := len(resource.Resource) > 0 hasGroup := len(resource.Group) > 0 hasVersion := len(resource.Version) > 0 if !hasResource { return nil, fmt.Errorf("a resource must be present, got: %v", resource) } ret := []unversioned.GroupVersionResource{} switch { // fully qualified. Find the exact match case hasGroup && hasVersion: for plural, singular := range m.pluralToSingular { if singular == resource { ret = append(ret, plural) break } if plural == resource { ret = append(ret, plural) break } } case hasGroup: requestedGroupResource := resource.GroupResource() for plural, singular := range m.pluralToSingular { if singular.GroupResource() == requestedGroupResource { ret = append(ret, plural) } if plural.GroupResource() == requestedGroupResource { ret = append(ret, plural) } } case hasVersion: for plural, singular := range m.pluralToSingular { if singular.Version == resource.Version && singular.Resource == resource.Resource { ret = append(ret, plural) } if plural.Version == resource.Version && plural.Resource == resource.Resource { ret = append(ret, plural) } } default: for plural, singular := range m.pluralToSingular { if singular.Resource == resource.Resource { ret = append(ret, plural) } if plural.Resource == resource.Resource { ret = append(ret, plural) } } } if len(ret) == 0 { return nil, &NoResourceMatchError{PartialResource: resource} } sort.Sort(resourceByPreferredGroupVersion{ret, m.defaultGroupVersions}) return ret, nil }