Retry finding RBAC version if not found in discovery cache

This commit is contained in:
Jordan Liggitt 2017-06-26 12:45:22 -04:00
parent f505c386d3
commit dc4f46b85a
No known key found for this signature in database
GPG Key ID: 24E7ADF9A3B42012
2 changed files with 19 additions and 2 deletions

View File

@ -24,6 +24,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
"//vendor/k8s.io/client-go/discovery:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd/api:go_default_library",

View File

@ -23,6 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
utilnet "k8s.io/apimachinery/pkg/util/net"
"k8s.io/client-go/discovery"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
@ -263,6 +264,21 @@ func GetVersionedClientForRBACOrFail(hostFactory cmdutil.Factory) (client.Interf
if err != nil {
return nil, err
}
rbacVersion, err := getRBACVersion(discoveryclient)
if err != nil && !discoveryclient.Fresh() {
discoveryclient.Invalidate()
rbacVersion, err = getRBACVersion(discoveryclient)
}
if err != nil {
return nil, err
}
return hostFactory.ClientSetForVersion(rbacVersion)
}
func getRBACVersion(discoveryclient discovery.CachedDiscoveryInterface) (*schema.GroupVersion, error) {
groupList, err := discoveryclient.ServerGroups()
if err != nil {
return nil, fmt.Errorf("Couldn't get clientset to create RBAC roles in the host cluster: %v", err)
@ -275,7 +291,7 @@ func GetVersionedClientForRBACOrFail(hostFactory cmdutil.Factory) (client.Interf
if err != nil {
return nil, err
}
return hostFactory.ClientSetForVersion(&gv)
return &gv, nil
}
for _, version := range g.Versions {
if version.GroupVersion != "" {
@ -283,7 +299,7 @@ func GetVersionedClientForRBACOrFail(hostFactory cmdutil.Factory) (client.Interf
if err != nil {
return nil, err
}
return hostFactory.ClientSetForVersion(&gv)
return &gv, nil
}
}
}