@@ -70,7 +70,6 @@ import (
7070
7171 kustomizev1 "github.com/fluxcd/kustomize-controller/api/v1"
7272 "github.com/fluxcd/kustomize-controller/internal/decryptor"
73- "github.com/fluxcd/kustomize-controller/internal/features"
7473 "github.com/fluxcd/kustomize-controller/internal/inventory"
7574)
7675
@@ -118,6 +117,7 @@ type KustomizationReconciler struct {
118117
119118 AdditiveCELDependencyCheck bool
120119 AllowExternalArtifact bool
120+ DirectSourceFetch bool
121121 FailFast bool
122122 GroupChangeLog bool
123123 StrictSubstitutions bool
@@ -686,13 +686,19 @@ func (r *KustomizationReconciler) getSource(ctx context.Context,
686686 if obj .Spec .SourceRef .Kind == sourcev1 .ExternalArtifactKind && ! r .AllowExternalArtifact {
687687 return src , acl .AccessDeniedError (
688688 fmt .Sprintf ("can't access '%s/%s', %s feature gate is disabled" ,
689- obj .Spec .SourceRef .Kind , namespacedName , features .ExternalArtifact ))
689+ obj .Spec .SourceRef .Kind , namespacedName , runtimeCtrl .FeatureGateExternalArtifact ))
690+ }
691+
692+ // Use APIReader to bypass the cache when DirectSourceFetch is enabled.
693+ var reader client.Reader = r .Client
694+ if r .DirectSourceFetch {
695+ reader = r .APIReader
690696 }
691697
692698 switch obj .Spec .SourceRef .Kind {
693699 case sourcev1 .OCIRepositoryKind :
694700 var repository sourcev1.OCIRepository
695- err := r . Client .Get (ctx , namespacedName , & repository )
701+ err := reader .Get (ctx , namespacedName , & repository )
696702 if err != nil {
697703 if apierrors .IsNotFound (err ) {
698704 return src , err
@@ -702,7 +708,7 @@ func (r *KustomizationReconciler) getSource(ctx context.Context,
702708 src = & repository
703709 case sourcev1 .GitRepositoryKind :
704710 var repository sourcev1.GitRepository
705- err := r . Client .Get (ctx , namespacedName , & repository )
711+ err := reader .Get (ctx , namespacedName , & repository )
706712 if err != nil {
707713 if apierrors .IsNotFound (err ) {
708714 return src , err
@@ -712,7 +718,7 @@ func (r *KustomizationReconciler) getSource(ctx context.Context,
712718 src = & repository
713719 case sourcev1 .BucketKind :
714720 var bucket sourcev1.Bucket
715- err := r . Client .Get (ctx , namespacedName , & bucket )
721+ err := reader .Get (ctx , namespacedName , & bucket )
716722 if err != nil {
717723 if apierrors .IsNotFound (err ) {
718724 return src , err
@@ -722,7 +728,7 @@ func (r *KustomizationReconciler) getSource(ctx context.Context,
722728 src = & bucket
723729 case sourcev1 .ExternalArtifactKind :
724730 var ea sourcev1.ExternalArtifact
725- err := r . Client .Get (ctx , namespacedName , & ea )
731+ err := reader .Get (ctx , namespacedName , & ea )
726732 if err != nil {
727733 if apierrors .IsNotFound (err ) {
728734 return src , err
0 commit comments