@@ -50,6 +50,7 @@ func ForResource(ctx context.Context, kind, identifier, condition, namespace str
5050 // Wait for the cluster to become available by polling for a successful REST config.
5151 var restConfig * rest.Config
5252 var clientCfg clientcmd.ClientConfig
53+ var discoveryClient * discovery.DiscoveryClient
5354 err := wait .PollUntilContextTimeout (ctx , waitInterval , timeout , true , func (_ context.Context ) (bool , error ) {
5455 var err error
5556 loader := clientcmd .NewDefaultClientConfigLoadingRules ()
@@ -59,24 +60,28 @@ func ForResource(ctx context.Context, kind, identifier, condition, namespace str
5960 l .Debug ("failed to get REST config, retrying" , "error" , err )
6061 return false , nil
6162 }
63+ discoveryClient , err = discovery .NewDiscoveryClientForConfig (restConfig )
64+ if err != nil {
65+ l .Debug ("failed to get discovery client, retrying" , "error" , err )
66+ return false , nil
67+ }
68+ _ , err = discoveryClient .ServerVersion ()
69+ if err != nil {
70+ l .Debug ("cluster not reachable, retrying" , "error" , err )
71+ return false , nil
72+ }
6273 return true , nil
6374 })
6475 if err != nil {
6576 return fmt .Errorf ("timed out waiting for REST config: %w" , err )
6677 }
6778
68- discoveryClient , err := discovery .NewDiscoveryClientForConfig (restConfig )
69- if err != nil {
70- return fmt .Errorf ("failed to create discovery client: %w" , err )
71- }
72-
7379 // Wait for the resource kind to be resolvable (e.g. CRDs may not be registered yet).
7480 var mapping * meta.RESTMapping
7581 err = wait .PollUntilContextTimeout (ctx , waitInterval , time .Until (deadline ), true , func (_ context.Context ) (bool , error ) {
7682 groupResources , err := restmapper .GetAPIGroupResources (discoveryClient )
7783 if err != nil {
78- l .Debug ("failed to get API group resources, retrying" , "error" , err )
79- return false , nil
84+ return true , fmt .Errorf ("failed to get API group resources: %w" , err )
8085 }
8186 restMapper := restmapper .NewShortcutExpander (restmapper .NewDiscoveryRESTMapper (groupResources ), discoveryClient , nil )
8287 mapping , err = resolveResourceKind (restMapper , kind )
0 commit comments