From 194371c4c0ed63b7ca5e7eb84bd6123dbb58fe13 Mon Sep 17 00:00:00 2001 From: Hidde Beydals Date: Mon, 13 Apr 2020 12:29:13 +0200 Subject: [PATCH] Set owner ref to HelmRepository on HelmChart --- controllers/helmchart_controller.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/controllers/helmchart_controller.go b/controllers/helmchart_controller.go index 258a170a..218f31e0 100644 --- a/controllers/helmchart_controller.go +++ b/controllers/helmchart_controller.go @@ -86,6 +86,10 @@ func (r *HelmChartReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { return ctrl.Result{Requeue: true}, err } + // set ownership reference so chart is garbage collected on + // repository removal + r.setOwnerRef(ctx, &chart, repository) + // try to pull chart pulledChart, err := r.sync(repository, *chart.DeepCopy()) if err != nil { @@ -282,3 +286,14 @@ func (r *HelmChartReconciler) gc(chart sourcev1.HelmChart) { } } } + +func (r *HelmChartReconciler) setOwnerRef(ctx context.Context, chart *sourcev1.HelmChart, repository sourcev1.HelmRepository) { + if metav1.IsControlledBy(chart.GetObjectMeta(), repository.GetObjectMeta()) { + return + } + chart.SetOwnerReferences(append(chart.GetOwnerReferences(), + *metav1.NewControllerRef(repository.GetObjectMeta(), repository.GroupVersionKind()))) + if err := r.Update(ctx, chart); err != nil { + r.Log.Error(err, fmt.Sprintf("failed to set owner reference to HelmRepository '%s'", repository.Name)) + } +}