func()

in pkg/controllers/serviceexport_controller.go [188:215]


func (r *ServiceExportReconciler) handleDelete(ctx context.Context, serviceExport *v1alpha1.ServiceExport) (ctrl.Result, error) {
	if controllerutil.ContainsFinalizer(serviceExport, ServiceExportFinalizer) {
		r.Log.Info("removing service export", "namespace", serviceExport.Namespace, "name", serviceExport.Name)

		cmService, err := r.CloudMap.GetService(ctx, serviceExport.Namespace, serviceExport.Name)
		if err != nil {
			r.Log.Error(err, "error fetching Service from Cloud Map",
				"namespace", serviceExport.Namespace, "name", serviceExport.Name)
			return ctrl.Result{}, err
		}
		if cmService != nil {
			if err := r.CloudMap.DeleteEndpoints(ctx, cmService.Namespace, cmService.Name, cmService.Endpoints); err != nil {
				r.Log.Error(err, "error deleting Endpoints from Cloud Map",
					"namespace", cmService.Namespace, "name", cmService.Name)
				return ctrl.Result{}, err
			}
		}

		// Remove finalizer. Once all finalizers have been
		// removed, the ServiceExport object will be deleted.
		controllerutil.RemoveFinalizer(serviceExport, ServiceExportFinalizer)
		if err := r.Client.Update(ctx, serviceExport); err != nil {
			return ctrl.Result{}, err
		}
	}

	return ctrl.Result{}, nil
}