in pkg/cni/overlay.go [150:192]
func (r *Reconciler) checkOverlayExtensionConfigStatus(ctx context.Context) error {
ctx, cancel := context.WithTimeout(ctx, OverlayConfigReconcileTimeout)
defer cancel()
checkStatus := func() (bool, error) {
var config overlayextensionconfig_v1alpha1.OverlayExtensionConfig
if err := r.client.Get(ctx, client.ObjectKey{
Name: OverlayExtensionConfigName,
Namespace: r.namespace,
}, &config); err != nil {
return false, errors.Wrap(err, "failed to get overlay extension config")
}
switch config.Status.State {
case overlayextensionconfig_v1alpha1.Succeeded:
klog.Infof("Overlay extension config is ready")
return true, nil
case overlayextensionconfig_v1alpha1.Failed:
return true, fmt.Errorf("overlay extension config failed with error: %s", config.Status.Message)
}
klog.Infof("Waiting for overlay extension config to be ready")
return false, nil
}
// Initial check
done, err := checkStatus()
if done {
return err
}
for {
select {
case <-ctx.Done():
return errors.New("timed out waiting for overlay extension config to be ready")
case <-time.After(OverlayConfigReconcilePollInterval):
done, err := checkStatus()
if done {
return err
}
}
}
}