@@ -79,50 +79,58 @@ type PhaseReconciler struct {
79
79
providerLister ProviderLister
80
80
providerConverter ProviderConverter
81
81
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 )
97
98
98
99
// WithProviderTypeMapper configures the reconciler to use the given clustectlv1 provider type mapper.
99
- func WithProviderTypeMapper (providerTypeMapper ProviderTypeMapper ) PhaseReconcielerOption {
100
+ func WithProviderTypeMapper (providerTypeMapper ProviderTypeMapper ) PhaseReconcilerOption {
100
101
return func (r * PhaseReconciler ) {
101
102
r .providerTypeMapper = providerTypeMapper
102
103
}
103
104
}
104
105
105
106
// WithProviderLister configures the reconciler to use the given provider lister.
106
- func WithProviderLister (providerLister ProviderLister ) PhaseReconcielerOption {
107
+ func WithProviderLister (providerLister ProviderLister ) PhaseReconcilerOption {
107
108
return func (r * PhaseReconciler ) {
108
109
r .providerLister = providerLister
109
110
}
110
111
}
111
112
112
113
// WithProviderConverter configures the reconciler to use the given provider converter.
113
- func WithProviderConverter (providerConverter ProviderConverter ) PhaseReconcielerOption {
114
+ func WithProviderConverter (providerConverter ProviderConverter ) PhaseReconcilerOption {
114
115
return func (r * PhaseReconciler ) {
115
116
r .providerConverter = providerConverter
116
117
}
117
118
}
118
119
119
120
// WithProviderMapper configures the reconciler to use the given provider mapper.
120
- func WithProviderMapper (providerMapper ProviderMapper ) PhaseReconcielerOption {
121
+ func WithProviderMapper (providerMapper ProviderMapper ) PhaseReconcilerOption {
121
122
return func (r * PhaseReconciler ) {
122
123
r .providerMapper = providerMapper
123
124
}
124
125
}
125
126
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
+
126
134
// PhaseFn is a function that represent a phase of the reconciliation.
127
135
type PhaseFn func (context.Context ) (* Result , error )
128
136
@@ -169,7 +177,7 @@ func wrapPhaseError(err error, reason string, condition clusterv1.ConditionType)
169
177
}
170
178
171
179
// 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 {
173
181
rec := & PhaseReconciler {
174
182
ctrlClient : r .Client ,
175
183
ctrlConfig : r .Config ,
@@ -616,6 +624,12 @@ func (p *PhaseReconciler) Fetch(ctx context.Context) (*Result, error) {
616
624
return & Result {}, wrapPhaseError (err , operatorv1 .ComponentsImageOverrideErrorReason , operatorv1 .ProviderInstalledCondition )
617
625
}
618
626
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
+
619
633
return & Result {}, nil
620
634
}
621
635
0 commit comments