func()

in internal/controller/generic_controller.go [286:316]


func (r *genericReconciler[O]) cleanUp(acrBinding O,
	serviceAccount *corev1.ServiceAccount, pullSecrets []corev1.Secret, log logr.Logger) *action[O] {
	if slices.Contains(acrBinding.GetFinalizers(), msiAcrPullFinalizerName) {
		// our finalizer is present, so need to clean up ImagePullSecret reference
		if serviceAccount == nil {
			log.Info("service account not found, continuing to remove finalizer")
		} else {
			updated := serviceAccount.DeepCopy()
			updated.ImagePullSecrets = slices.DeleteFunc(updated.ImagePullSecrets, func(reference corev1.LocalObjectReference) bool {
				return reference.Name == r.GetPullSecretName(acrBinding)
			})
			if len(updated.ImagePullSecrets) != len(serviceAccount.ImagePullSecrets) {
				log.WithValues("serviceAccount", crclient.ObjectKeyFromObject(serviceAccount).String()).Info("updating service account to remove image pull secret")
				return &action[O]{updateServiceAccount: updated}
			}
		}

		// remove the secrets
		for _, pullSecret := range pullSecrets {
			deleted := pullSecret.DeepCopy()
			log.WithValues("secret", crclient.ObjectKeyFromObject(deleted).String()).Info("cleaning up pull credential")
			return &action[O]{deleteSecret: deleted}
		}

		// remove our finalizer from the list and update it.
		log.Info("removing finalizer from pull binding")
		return &action[O]{updatePullBinding: r.RemoveFinalizer(acrBinding, msiAcrPullFinalizerName)}
	}
	log.Info("no finalizer present, nothing to do")
	return nil
}