@@ -129,6 +129,13 @@ func WithPruneConfirmed(confirmed bool) SyncOpt {
129129 }
130130}
131131
132+ // WithPruneDisabled specifies if prune is globally disabled for this application
133+ func WithPruneDisabled (disabled bool ) SyncOpt {
134+ return func (ctx * syncContext ) {
135+ ctx .pruneDisabled = disabled
136+ }
137+ }
138+
132139// WithOperationSettings allows to set sync operation settings
133140func WithOperationSettings (dryRun bool , prune bool , force bool , skipHooks bool ) SyncOpt {
134141 return func (ctx * syncContext ) {
@@ -375,6 +382,7 @@ type syncContext struct {
375382 prunePropagationPolicy * metav1.DeletionPropagation
376383 pruneConfirmed bool
377384 requiresPruneConfirmation bool
385+ pruneDisabled bool
378386 clientSideApplyMigrationManager string
379387 enableClientSideApplyMigration bool
380388
@@ -1220,7 +1228,7 @@ func (sc *syncContext) applyObject(t *syncTask, dryRun, validate bool) (common.R
12201228func (sc * syncContext ) pruneObject (liveObj * unstructured.Unstructured , prune , dryRun bool ) (common.ResultCode , string ) {
12211229 if ! prune {
12221230 return common .ResultCodePruneSkipped , "ignored (requires pruning)"
1223- } else if resourceutil .HasAnnotationOption (liveObj , common .AnnotationSyncOptions , common .SyncOptionDisablePrune ) {
1231+ } else if resourceutil .HasAnnotationOption (liveObj , common .AnnotationSyncOptions , common .SyncOptionDisablePrune ) || sc . pruneDisabled {
12241232 return common .ResultCodePruneSkipped , "ignored (no prune)"
12251233 }
12261234 if dryRun {
0 commit comments