in controllers/manager/gatewaylbconfiguration_controller.go [172:228]
func (r *GatewayLBConfigurationReconciler) ensureDeleted(
ctx context.Context,
lbConfig *egressgatewayv1alpha1.GatewayLBConfiguration,
) (ctrl.Result, error) {
log := log.FromContext(ctx)
log.Info(fmt.Sprintf("Reconciling gatewayLBConfiguration deletion %s/%s", lbConfig.Namespace, lbConfig.Name))
if !controllerutil.ContainsFinalizer(lbConfig, consts.LBConfigFinalizerName) {
log.Info("lbConfig does not have finalizer, no additional cleanup needed")
return ctrl.Result{}, nil
}
mc := metrics.NewMetricsContext(
os.Getenv(consts.PodNamespaceEnvKey),
"delete_gateway_lb_configuration",
r.SubscriptionID(),
r.LoadBalancerResourceGroup,
strings.ToLower(fmt.Sprintf("%s/%s", lbConfig.Namespace, lbConfig.Name)),
)
succeeded := false
defer func() { mc.ObserveControllerReconcileMetrics(succeeded) }()
log.Info("Deleting VMConfig")
vmConfig := &egressgatewayv1alpha1.GatewayVMConfiguration{
ObjectMeta: metav1.ObjectMeta{
Name: lbConfig.Name,
Namespace: lbConfig.Namespace,
},
}
if err := r.Delete(ctx, vmConfig); err == nil {
// deleting vmConfig, skip reconciling lb
log.Info("Waiting gateway vmss to be cleaned first")
succeeded = true
return ctrl.Result{}, nil
} else if !apierrors.IsNotFound(err) {
log.Error(err, "failed to delete existing gateway VM configuration")
return ctrl.Result{}, err
} // vmConfig is already deleted, continue to clean up lb
// delete LB rule
_, _, err := r.reconcileLBRule(ctx, lbConfig, false)
if err != nil {
log.Error(err, "failed to reconcile LB rules")
return ctrl.Result{}, err
}
log.Info("Removing finalizer")
controllerutil.RemoveFinalizer(lbConfig, consts.LBConfigFinalizerName)
if err := r.Update(ctx, lbConfig); err != nil {
log.Error(err, "failed to remove finalizer")
return ctrl.Result{}, err
}
log.Info("GatewayLBConfiguration deletion reconciled")
succeeded = true
return ctrl.Result{}, nil
}