@@ -79,50 +79,58 @@ type PhaseReconciler struct {
7979 providerLister ProviderLister
8080 providerConverter ProviderConverter
8181
82- ctrlClient client.Client
83- ctrlConfig * rest.Config
84- repo repository.Repository
85- contract string
86- options repository.ComponentsOptions
87- providerConfig configclient.Provider
88- configClient configclient.Client
89- overridesClient configclient.Client
90- components repository.Components
91- clusterctlProvider * clusterctlv1.Provider
92- needsCompression bool
93- }
94-
95- // PhaseReconcielerOption is a function that configures the reconciler.
96- type PhaseReconcielerOption func (* PhaseReconciler )
82+ ctrlClient client.Client
83+ ctrlConfig * rest.Config
84+ repo repository.Repository
85+ contract string
86+ options repository.ComponentsOptions
87+ providerConfig configclient.Provider
88+ configClient configclient.Client
89+ overridesClient configclient.Client
90+ components repository.Components
91+ clusterctlProvider * clusterctlv1.Provider
92+ needsCompression bool
93+ customAlterComponentsFuncs []repository.ComponentsAlterFn
94+ }
95+
96+ // PhaseReconcilerOption is a function that configures the reconciler.
97+ type PhaseReconcilerOption func (* PhaseReconciler )
9798
9899// WithProviderTypeMapper configures the reconciler to use the given clustectlv1 provider type mapper.
99- func WithProviderTypeMapper (providerTypeMapper ProviderTypeMapper ) PhaseReconcielerOption {
100+ func WithProviderTypeMapper (providerTypeMapper ProviderTypeMapper ) PhaseReconcilerOption {
100101 return func (r * PhaseReconciler ) {
101102 r .providerTypeMapper = providerTypeMapper
102103 }
103104}
104105
105106// WithProviderLister configures the reconciler to use the given provider lister.
106- func WithProviderLister (providerLister ProviderLister ) PhaseReconcielerOption {
107+ func WithProviderLister (providerLister ProviderLister ) PhaseReconcilerOption {
107108 return func (r * PhaseReconciler ) {
108109 r .providerLister = providerLister
109110 }
110111}
111112
112113// WithProviderConverter configures the reconciler to use the given provider converter.
113- func WithProviderConverter (providerConverter ProviderConverter ) PhaseReconcielerOption {
114+ func WithProviderConverter (providerConverter ProviderConverter ) PhaseReconcilerOption {
114115 return func (r * PhaseReconciler ) {
115116 r .providerConverter = providerConverter
116117 }
117118}
118119
119120// WithProviderMapper configures the reconciler to use the given provider mapper.
120- func WithProviderMapper (providerMapper ProviderMapper ) PhaseReconcielerOption {
121+ func WithProviderMapper (providerMapper ProviderMapper ) PhaseReconcilerOption {
121122 return func (r * PhaseReconciler ) {
122123 r .providerMapper = providerMapper
123124 }
124125}
125126
127+ // WithCustomAlterComponentsFuncs configures the reconciler to use the given custom alter components functions.
128+ func WithCustomAlterComponentsFuncs (fns []repository.ComponentsAlterFn ) PhaseReconcilerOption {
129+ return func (r * PhaseReconciler ) {
130+ r .customAlterComponentsFuncs = fns
131+ }
132+ }
133+
126134// PhaseFn is a function that represent a phase of the reconciliation.
127135type PhaseFn func (context.Context ) (* Result , error )
128136
@@ -169,7 +177,7 @@ func wrapPhaseError(err error, reason string, condition clusterv1.ConditionType)
169177}
170178
171179// NewPhaseReconciler returns phase reconciler for the given provider.
172- func NewPhaseReconciler (r GenericProviderReconciler , provider genericprovider.GenericProvider , providerList genericprovider.GenericProviderList , options ... PhaseReconcielerOption ) * PhaseReconciler {
180+ func NewPhaseReconciler (r GenericProviderReconciler , provider genericprovider.GenericProvider , providerList genericprovider.GenericProviderList , options ... PhaseReconcilerOption ) * PhaseReconciler {
173181 rec := & PhaseReconciler {
174182 ctrlClient : r .Client ,
175183 ctrlConfig : r .Config ,
@@ -616,6 +624,12 @@ func (p *PhaseReconciler) Fetch(ctx context.Context) (*Result, error) {
616624 return & Result {}, wrapPhaseError (err , operatorv1 .ComponentsImageOverrideErrorReason , operatorv1 .ProviderInstalledCondition )
617625 }
618626
627+ for _ , fn := range p .customAlterComponentsFuncs {
628+ if err := repository .AlterComponents (p .components , fn ); err != nil {
629+ return & Result {}, wrapPhaseError (err , operatorv1 .ComponentsCustomizationErrorReason , operatorv1 .ProviderInstalledCondition )
630+ }
631+ }
632+
619633 return & Result {}, nil
620634}
621635
0 commit comments