func()

in pkg/operator/operator.go [369:431]


func (o *Operator) cleanupOldResources(ctx context.Context) error {
	// Delete old ValidatingWebhookConfiguration that was installed directly by the operator.
	// in previous versions.
	validatingWebhookConfig := arv1.ValidatingWebhookConfiguration{
		ObjectMeta: metav1.ObjectMeta{Name: "gmp-operator"},
	}
	if err := o.client.Delete(ctx, &validatingWebhookConfig); err != nil {
		switch {
		case apierrors.IsForbidden(err):
			o.logger.Info("delete legacy ValidatingWebHookConfiguration was not allowed. Please remove it manually")
		case !apierrors.IsNotFound(err):
			return fmt.Errorf("delete legacy ValidatingWebHookConfiguration failed: %w", err)
		}
	}

	// If cleanup annotations are not provided, do not clean up any further.
	if o.opts.CleanupAnnotKey == "" {
		return nil
	}

	// Cleanup resources without the provided annotation.
	// Check the collector DaemonSet.
	dsKey := client.ObjectKey{
		Name:      NameCollector,
		Namespace: o.opts.OperatorNamespace,
	}
	var ds appsv1.DaemonSet
	if err := o.client.Get(ctx, dsKey, &ds); apierrors.IsNotFound(err) {
		return fmt.Errorf("get collector DaemonSet: %w", err)
	}
	if _, ok := ds.Annotations[o.opts.CleanupAnnotKey]; !ok {
		if err := o.client.Delete(ctx, &ds); err != nil {
			switch {
			case apierrors.IsForbidden(err):
				o.logger.Info("delete collector was not allowed. Please remove it manually", "err", err)
			case !apierrors.IsNotFound(err):
				return fmt.Errorf("cleanup collector failed: %w", err)
			}
		}
	}

	// Check the rule-evaluator Deployment.
	deployKey := client.ObjectKey{
		Name:      NameRuleEvaluator,
		Namespace: o.opts.OperatorNamespace,
	}
	var deploy appsv1.Deployment
	if err := o.client.Get(ctx, deployKey, &deploy); apierrors.IsNotFound(err) {
		return fmt.Errorf("get rule-evaluator Deployment: %w", err)
	}
	if _, ok := deploy.Annotations[o.opts.CleanupAnnotKey]; !ok {
		if err := o.client.Delete(ctx, &deploy); err != nil {
			switch {
			case apierrors.IsForbidden(err):
				o.logger.Info("delete rule-evaluator was not allowed. Please remove it manually", "err", err)
			case !apierrors.IsNotFound(err):
				return fmt.Errorf("cleanup rule-evaluator failed: %w", err)
			}
		}
	}

	return nil
}