Skip to content

Commit 0e372f7

Browse files
authored
add server resource pruning on instance deletion (open-cluster-management-io#75)
Signed-off-by: mrrr61 <mrrr61@outlook.com>
1 parent efd5162 commit 0e372f7

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

federated-learning-controller/internal/controller/federatedlearning_controller.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ func (r *FederatedLearningReconciler) Reconcile(ctx context.Context, req ctrl.Re
8383

8484
// deleting the instance, clean up the resources with finalizer
8585
if instance.DeletionTimestamp != nil {
86+
if err := r.pruneServerResources(ctx, instance); err != nil {
87+
return ctrl.Result{}, err
88+
}
8689
if err := r.pruneClientResources(ctx, instance); err != nil {
8790
return ctrl.Result{}, err
8891
}

federated-learning-controller/internal/controller/federatedlearning_server.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,27 @@ func getSeverName(instanceName string) string {
149149
return fmt.Sprintf("%s-server", instanceName)
150150
}
151151

152+
// pruneServerResources cleans up server-side Kubernetes resources when the instance is deleted.
153+
func (r *FederatedLearningReconciler) pruneServerResources(ctx context.Context, instance *flv1alpha1.FederatedLearning) error {
154+
svc := &corev1.Service{}
155+
if err := r.Get(ctx, types.NamespacedName{
156+
Namespace: instance.Namespace,
157+
Name: getSeverName(instance.Name),
158+
}, svc); err != nil {
159+
if errors.IsNotFound(err) {
160+
return nil
161+
}
162+
return fmt.Errorf("failed to get service during deletion: %w", err)
163+
}
164+
165+
if err := r.Delete(ctx, svc); err != nil && !errors.IsNotFound(err) {
166+
return fmt.Errorf("failed to delete service during deletion: %w", err)
167+
}
168+
169+
log.Infof("deleted service %s/%s while cleaning up FederatedLearning instance", svc.Namespace, svc.Name)
170+
return nil
171+
}
172+
152173
// get the address by NodePort, LoadBalancer or Route
153174
func (r *FederatedLearningReconciler) updateServerAddress(ctx context.Context, instance *flv1alpha1.FederatedLearning) error {
154175
log.Info("update the server address for the clients")

0 commit comments

Comments
 (0)