func()

in pkg/controllers/member/internalmembercluster/v1beta1/controller_v1beta1.go [152:186]


func (r *Reconciler) cleanupMCSRelatedResources(ctx context.Context) error {
	list := &fleetnetv1alpha1.MultiClusterServiceList{}
	if err := r.MemberClient.List(ctx, list); err != nil {
		klog.ErrorS(err, "Failed to list MCS")
		return err
	}
	for i := range list.Items {
		if list.Items[i].ObjectMeta.DeletionTimestamp != nil {
			continue
		}
		deleteFunc := func() error {
			return r.MemberClient.Delete(ctx, &list.Items[i])
		}
		if err := apiretry.Do(deleteFunc); err != nil && !apierrors.IsNotFound(err) {
			klog.ErrorS(err, "Failed to delete MCS", "multiClusterService", klog.KObj(&list.Items[i]))
			return err
		}
	}

	for i := range list.Items {
		name := types.NamespacedName{Namespace: list.Items[i].GetNamespace(), Name: list.Items[i].GetName()}
		mcs := fleetnetv1alpha1.MultiClusterService{}
		getFunc := func() error {
			err := r.MemberClient.Get(ctx, name, &mcs)
			return err
		}
		if err := apiretry.WaitUntilObjectDeleted(ctx, getFunc); err != nil {
			klog.ErrorS(err, "The MCS has not been deleted in time", "multiClusterService", name)
			return err
		}
	}

	klog.V(2).InfoS("Cleanup of MCS related resources has been completed", "objectCounter", len(list.Items))
	return nil
}