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
}