func()

in controllers/packagebundlecontroller_controller.go [100:158]


func (r *PackageBundleControllerReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
	r.Log.V(6).Info("Reconcile:", "PackageBundleController", req.NamespacedName)

	result := ctrl.Result{
		Requeue:      true,
		RequeueAfter: DefaultUpgradeCheckInterval,
	}

	pbc := &api.PackageBundleController{}
	err := r.Client.Get(ctx, req.NamespacedName, pbc)
	if err != nil {
		if client.IgnoreNotFound(err) != nil {
			return result, fmt.Errorf("retrieving package bundle controller: %s", err)
		}
		r.Log.Info("Bundle controller deleted (ignoring)", "bundle controller", req.NamespacedName)
		return withoutRequeue(result), nil
	}
	if pbc.Spec.UpgradeCheckInterval.Duration > 0 {
		result.RequeueAfter = pbc.Spec.UpgradeCheckInterval.Duration
	}

	if pbc.IsIgnored() {
		if pbc.Status.State != api.BundleControllerStateIgnored {
			pbc.Status.State = api.BundleControllerStateIgnored
			r.Log.V(6).Info("update", "PackageBundleController", pbc.Name, "state", pbc.Status.State)
			err = r.Client.Status().Update(ctx, pbc, &client.SubResourceUpdateOptions{})
			if err != nil {
				r.Log.Error(err, "updating ignored status")
				return withoutRequeue(result), nil
			}
		}
		return withoutRequeue(result), nil
	}

	if !pbc.IsDefaultRegistryDefault() {
		if err := r.certInjector.UpdateIfNeeded(ctx, pbc.Name); err != nil {
			return result, fmt.Errorf("ensuring registry CA cert updated: %v", err)
		}
	}

	err = r.bundleManager.ProcessBundleController(ctx, pbc)
	if err != nil {
		if !r.webhookInitialized {
			r.Log.Info("delaying reconciliation until webhook is initialized")
			result.RequeueAfter = webhookInitializationRequeueInterval
			return result, nil
		}
		r.Log.Error(err, "processing bundle controller")
		if pbc.Spec.UpgradeCheckShortInterval.Duration > 0 {
			result.RequeueAfter = pbc.Spec.UpgradeCheckShortInterval.Duration
		}
		return result, nil
	}

	r.webhookInitialized = true

	r.Log.V(6).Info("Reconciled:", "PackageBundleController", req.NamespacedName)
	return result, nil
}