Skip to content

Commit 5286064

Browse files
add option to configure cascading strategy
1 parent 3c5b71b commit 5286064

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

pkg/patterns/declarative/options.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package declarative
1919
import (
2020
"context"
2121

22+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23+
2224
"k8s.io/apimachinery/pkg/runtime"
2325
"sigs.k8s.io/controller-runtime/pkg/metrics"
2426
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/applier"
@@ -48,6 +50,7 @@ type reconcilerParams struct {
4850

4951
applier applier.Applier
5052

53+
cascadingStrategy metav1.DeletionPropagation
5154
prune bool
5255
preserveNamespace bool
5356
kustomize bool
@@ -187,6 +190,14 @@ func WithApplier(applier applier.Applier) ReconcilerOption {
187190
}
188191
}
189192

193+
// WithCascadingStrategy allows us to select a different CascadingStrategy, which ultimately sets the PropagationPolicy
194+
func WithCascadingStrategy(cs metav1.DeletionPropagation) ReconcilerOption {
195+
return func(p reconcilerParams) reconcilerParams {
196+
p.cascadingStrategy = cs
197+
return p
198+
}
199+
}
200+
190201
// WithReconcileMetrics enables metrics of declarative reconciler.
191202
// If metricsDuration is positive, metrics will be removed from
192203
// Prometheus registry when metricsDuration times reconciliation

pkg/patterns/declarative/reconciler.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -294,15 +294,14 @@ func (r *Reconciler) reconcileExists(ctx context.Context, name types.NamespacedN
294294
}
295295

296296
applierOpt := applier.ApplierOptions{
297-
RESTConfig: r.config,
298-
RESTMapper: r.restMapper,
299-
Namespace: ns,
300-
Objects: objects.GetItems(),
301-
Validate: r.options.validate,
302-
ExtraArgs: extraArgs,
303-
Force: true,
304-
// TODO Make this configurable
305-
CascadingStrategy: "Foreground",
297+
RESTConfig: r.config,
298+
RESTMapper: r.restMapper,
299+
Namespace: ns,
300+
Objects: objects.GetItems(),
301+
Validate: r.options.validate,
302+
ExtraArgs: extraArgs,
303+
Force: true,
304+
CascadingStrategy: r.options.cascadingStrategy,
306305
}
307306

308307
applier := r.options.applier
@@ -484,6 +483,10 @@ func (r *Reconciler) applyOptions(opts ...ReconcilerOption) error {
484483
params.manifestController = loader
485484
}
486485

486+
if params.cascadingStrategy == "" {
487+
params.cascadingStrategy = "Foreground"
488+
}
489+
487490
r.options = params
488491
return nil
489492
}

0 commit comments

Comments
 (0)