mirror of
https://github.com/rancher/norman.git
synced 2025-09-23 20:18:51 +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
|
|
}
|