mirror of
https://github.com/rancher/norman.git
synced 2025-09-26 07:12:30 +00:00
34 lines
569 B
Go
34 lines
569 B
Go
![]() |
package k8scheck
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"time"
|
||
|
|
||
|
"github.com/sirupsen/logrus"
|
||
|
"k8s.io/client-go/kubernetes"
|
||
|
"k8s.io/client-go/rest"
|
||
|
)
|
||
|
|
||
|
func Wait(ctx context.Context, config rest.Config) error {
|
||
|
client, err := kubernetes.NewForConfig(&config)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
for {
|
||
|
_, err := client.Discovery().ServerVersion()
|
||
|
if err == nil {
|
||
|
break
|
||
|
}
|
||
|
logrus.Infof("Waiting for server to become available: %v", err)
|
||
|
select {
|
||
|
case <-ctx.Done():
|
||
|
return fmt.Errorf("startup canceled")
|
||
|
case <-time.After(2 * time.Second):
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|