mirror of
https://github.com/kubernetes/client-go.git
synced 2025-06-26 15:12:06 +00:00
discovery: speedup cache miss by a two digit factor
Kubernetes-commit: 2cdddd8d4ec0c16df9b3667a11dfc07fa7bf49e2
This commit is contained in:
parent
2cc261d78b
commit
42ebdc32c2
@ -145,27 +145,26 @@ func NewDiscoveryRESTMapper(groupResources []*APIGroupResources) meta.RESTMapper
|
|||||||
// GetAPIGroupResources uses the provided discovery client to gather
|
// GetAPIGroupResources uses the provided discovery client to gather
|
||||||
// discovery information and populate a slice of APIGroupResources.
|
// discovery information and populate a slice of APIGroupResources.
|
||||||
func GetAPIGroupResources(cl discovery.DiscoveryInterface) ([]*APIGroupResources, error) {
|
func GetAPIGroupResources(cl discovery.DiscoveryInterface) ([]*APIGroupResources, error) {
|
||||||
apiGroups, err := cl.ServerGroups()
|
gs, rs, err := cl.ServerGroupsAndResources()
|
||||||
if err != nil {
|
if rs == nil || gs == nil {
|
||||||
if apiGroups == nil || len(apiGroups.Groups) == 0 {
|
return nil, err
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
// TODO track the errors and update callers to handle partial errors.
|
// TODO track the errors and update callers to handle partial errors.
|
||||||
}
|
}
|
||||||
|
rsm := map[string]*metav1.APIResourceList{}
|
||||||
|
for _, r := range rs {
|
||||||
|
rsm[r.GroupVersion] = r
|
||||||
|
}
|
||||||
|
|
||||||
var result []*APIGroupResources
|
var result []*APIGroupResources
|
||||||
for _, group := range apiGroups.Groups {
|
for _, group := range gs {
|
||||||
groupResources := &APIGroupResources{
|
groupResources := &APIGroupResources{
|
||||||
Group: group,
|
Group: *group,
|
||||||
VersionedResources: make(map[string][]metav1.APIResource),
|
VersionedResources: make(map[string][]metav1.APIResource),
|
||||||
}
|
}
|
||||||
for _, version := range group.Versions {
|
for _, version := range group.Versions {
|
||||||
resources, err := cl.ServerResourcesForGroupVersion(version.GroupVersion)
|
resources, ok := rsm[version.GroupVersion]
|
||||||
if err != nil {
|
if !ok {
|
||||||
// continue as best we can
|
continue
|
||||||
// TODO track the errors and update callers to handle partial errors.
|
|
||||||
if resources == nil || len(resources.APIResources) == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
groupResources.VersionedResources[version.Version] = resources.APIResources
|
groupResources.VersionedResources[version.Version] = resources.APIResources
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user