From cecfce38a7e1464b5ce3143778a5e073f23601b3 Mon Sep 17 00:00:00 2001 From: Kubernetes Publisher Date: Fri, 22 Sep 2017 11:22:07 +0000 Subject: [PATCH] use specified discovery information if possible Kubernetes-commit: 1c8a9e406054e4163b8c81176f14478272ebf767 --- discovery/restmapper.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/discovery/restmapper.go b/discovery/restmapper.go index 9651716b..6d1de8c1 100644 --- a/discovery/restmapper.go +++ b/discovery/restmapper.go @@ -96,8 +96,19 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V if !resource.Namespaced { scope = meta.RESTScopeRoot } - versionMapper.Add(gv.WithKind(resource.Kind), scope) - // TODO only do this if it supports listing + + // this is for legacy resources and servers which don't list singular forms. For those we must still guess. + if len(resource.SingularName) == 0 { + versionMapper.Add(gv.WithKind(resource.Kind), scope) + // TODO this is producing unsafe guesses that don't actually work, but it matches previous behavior + versionMapper.Add(gv.WithKind(resource.Kind+"List"), scope) + continue + } + + plural := gv.WithResource(resource.Name) + singular := gv.WithResource(resource.SingularName) + versionMapper.AddSpecific(gv.WithKind(resource.Kind), plural, singular, scope) + // TODO this is producing unsafe guesses that don't actually work, but it matches previous behavior versionMapper.Add(gv.WithKind(resource.Kind+"List"), scope) } // TODO why is this type not in discovery (at least for "v1")