Skip to content

Commit

Permalink
feat: add function to delete obsolete service if exists
Browse files Browse the repository at this point in the history
Signed-off-by: mishraprafful <mishraprafful@gmail.com>
  • Loading branch information
mishraprafful committed Nov 17, 2024
1 parent 49c30f8 commit 1816a25
Showing 1 changed file with 49 additions and 6 deletions.
55 changes: 49 additions & 6 deletions components/notebook-controller/controllers/notebook_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,18 +106,18 @@ func (r *NotebookReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
return ctrl.Result{}, err
}

// Make sure the prefix doesn't cause the derived resource names to get too long
if len(nbName)+len(namePrefix) > maxNameLength {
return reconcile.Result{},
fmt.Errorf("notebook name must not be longer than %d characters", maxNameLength-len(namePrefix))
}

involvedNotebookKey := types.NamespacedName{Name: nbName, Namespace: req.Namespace}
if err := r.Get(ctx, involvedNotebookKey, involvedNotebook); err != nil {
log.Error(err, "unable to fetch Notebook by looking at event")
return ctrl.Result{}, ignoreNotFound(err)
}

// Make sure the prefix doesn't cause the derived resource names to get too long
if len(nbName)+len(involvedNotebookKey.Namespace)+len(namePrefix) > maxNameLength {
return reconcile.Result{},
fmt.Errorf("notebook name must not be longer than %d characters as notebook resources are prefixed with %s%s", maxNameLength-len(namePrefix), namePrefix, involvedNotebookKey.Namespace)
}

// re-emit the event in the Notebook CR
log.Info("Emitting Notebook Event.", "Event", event)
r.EventRecorder.Eventf(involvedNotebook, event.Type, event.Reason,
Expand Down Expand Up @@ -181,6 +181,7 @@ func (r *NotebookReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
if err := ctrl.SetControllerReference(instance, service, r.Scheme); err != nil {
return ctrl.Result{}, err
}

// Check if the Service already exists
foundService := &corev1.Service{}
justCreated = false
Expand All @@ -206,6 +207,12 @@ func (r *NotebookReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
return ctrl.Result{}, err
}
}

err = deleteObsoleteService(ctx, r, instance)
if err != nil {
log.Error(err, "unable to delete obsolete Service")
return ctrl.Result{}, err
}

// Reconcile virtual service if we use ISTIO.
if os.Getenv("USE_ISTIO") == "true" {
Expand Down Expand Up @@ -619,6 +626,42 @@ func (r *NotebookReconciler) reconcileVirtualService(instance *v1beta1.Notebook)
return nil
}

func deleteObsoleteService(ctx context.Context, r *NotebookReconciler, instance *v1beta1.Notebook) error {
log := r.Log.WithValues("notebook", instance.Namespace)
obsoleteServiceName := instance.Name
obsoleteService := &corev1.Service{}

err := r.Get(ctx, client.ObjectKey{Name: obsoleteServiceName, Namespace: instance.Namespace}, obsoleteService)
if apierrs.IsNotFound(err) {
log.Info("Obsolete Service not found; nothing to delete", "namespace", instance.Namespace, "name", obsoleteServiceName)
return nil
} else if err != nil {
log.Error(err, "error getting obsolete service", "namespace", instance.Namespace, "name", obsoleteServiceName)
return err
}

log.Info("Found obsolete Service", "namespace", obsoleteService.Namespace, "name", obsoleteService.Name)

// Remove owner references
obsoleteService.OwnerReferences = []metav1.OwnerReference{}
err = r.Update(ctx, obsoleteService)
if err != nil {
log.Error(err, "unable to update owner reference for obsolete Service", "namespace", obsoleteService.Namespace, "name", obsoleteService.Name)
return err
}

// Delete the obsolete service
err = r.Delete(ctx, obsoleteService)
if err != nil {
log.Error(err, "unable to delete obsolete Service", "namespace", obsoleteService.Namespace, "name", obsoleteService.Name)
return err
}

log.Info("Deleted obsolete Service", "namespace", obsoleteService.Namespace, "name", obsoleteService.Name)
return nil

}

func isStsOrPodEvent(event *corev1.Event) bool {
return event.InvolvedObject.Kind == "Pod" || event.InvolvedObject.Kind == "StatefulSet"
}
Expand Down

0 comments on commit 1816a25

Please sign in to comment.