func()

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
			}
		}
	}
}