@@ -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 (confirmed bool ) SyncOpt {
134+ return func (ctx * syncContext ) {
135+ ctx .pruneConfirmed = confirmed
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 ) {
@@ -382,6 +389,7 @@ type syncContext struct {
382389 prunePropagationPolicy * metav1.DeletionPropagation
383390 pruneConfirmed bool
384391 requiresPruneConfirmation bool
392+ pruneDisabled bool
385393 clientSideApplyMigrationManager string
386394 enableClientSideApplyMigration bool
387395
@@ -1208,7 +1216,7 @@ func (sc *syncContext) applyObject(t *syncTask, dryRun, validate bool) (common.R
12081216func (sc * syncContext ) pruneObject (liveObj * unstructured.Unstructured , prune , dryRun bool ) (common.ResultCode , string ) {
12091217 if ! prune {
12101218 return common .ResultCodePruneSkipped , "ignored (requires pruning)"
1211- } else if resourceutil .HasAnnotationOption (liveObj , common .AnnotationSyncOptions , common .SyncOptionDisablePrune ) {
1219+ } else if resourceutil .HasAnnotationOption (liveObj , common .AnnotationSyncOptions , common .SyncOptionDisablePrune ) || sc . pruneDisabled {
12121220 return common .ResultCodePruneSkipped , "ignored (no prune)"
12131221 }
12141222 if dryRun {
0 commit comments