@@ -172,7 +172,7 @@ func (r *HelmReleaseReconciler) reconcile(ctx context.Context, log logr.Logger,
172172 return v2 .HelmReleaseNotReady (hr , meta .SuspendedReason , msg ), ctrl.Result {}, nil
173173 }
174174
175- // record reconciliation duration
175+ // Record reconciliation duration
176176 if r .MetricsRecorder != nil {
177177 objRef , err := reference .GetReference (r .Scheme , & hr )
178178 if err != nil {
@@ -182,25 +182,19 @@ func (r *HelmReleaseReconciler) reconcile(ctx context.Context, log logr.Logger,
182182 }
183183
184184 // Reconcile chart based on the HelmChartTemplate
185- hc , ok , reconcileErr := r .reconcileChart (ctx , & hr )
186- if ! ok {
187- var msg string
188- if reconcileErr != nil {
189- msg = fmt .Sprintf ("chart reconciliation failed: %s" , reconcileErr .Error ())
190- r .event (hr , hr .Status .LastAttemptedRevision , events .EventSeverityError , msg )
191- } else {
192- msg = "HelmChart is not ready"
193- r .event (hr , hr .Status .LastAttemptedRevision , events .EventSeverityInfo , msg )
194- }
195- return v2 .HelmReleaseNotReady (hr , v2 .ArtifactFailedReason , msg ), ctrl.Result {}, reconcileErr
185+ hc , reconcileErr := r .reconcileChart (ctx , & hr )
186+ if reconcileErr != nil {
187+ msg := fmt .Sprintf ("chart reconciliation failed: %s" , reconcileErr .Error ())
188+ r .event (hr , hr .Status .LastAttemptedRevision , events .EventSeverityError , msg )
189+ return v2 .HelmReleaseNotReady (hr , v2 .ArtifactFailedReason , msg ), ctrl.Result {Requeue : true }, reconcileErr
196190 }
197191
198- // Check chart artifact readiness
199- if hc .GetArtifact () == nil {
200- msg := "HelmChart is not ready"
192+ // Check chart readiness
193+ if hc .Generation != hc . Status . ObservedGeneration || ! meta . HasReadyCondition ( hc . Status . Conditions ) {
194+ msg := fmt . Sprintf ( "HelmChart '%s/%s' is not ready" , hc . GetNamespace (), hc . GetName ())
201195 r .event (hr , hr .Status .LastAttemptedRevision , events .EventSeverityInfo , msg )
202196 log .Info (msg )
203- return v2 .HelmReleaseNotReady (hr , v2 .ArtifactFailedReason , msg ), ctrl.Result {}, nil
197+ return v2 .HelmReleaseNotReady (hr , v2 .ArtifactFailedReason , msg ), ctrl.Result {Requeue : true }, nil
204198 }
205199
206200 // Check dependencies
@@ -256,7 +250,7 @@ func (r *HelmReleaseReconciler) SetupWithManager(mgr ctrl.Manager, opts HelmRele
256250 Complete (r )
257251}
258252
259- func (r * HelmReleaseReconciler ) reconcileChart (ctx context.Context , hr * v2.HelmRelease ) (* sourcev1.HelmChart , bool , error ) {
253+ func (r * HelmReleaseReconciler ) reconcileChart (ctx context.Context , hr * v2.HelmRelease ) (* sourcev1.HelmChart , error ) {
260254 chartName := types.NamespacedName {
261255 Namespace : hr .Spec .Chart .GetNamespace (hr .Namespace ),
262256 Name : hr .GetHelmChartName (),
@@ -265,35 +259,33 @@ func (r *HelmReleaseReconciler) reconcileChart(ctx context.Context, hr *v2.HelmR
265259 // Garbage collect the previous HelmChart if the namespace named changed.
266260 if hr .Status .HelmChart != "" && hr .Status .HelmChart != chartName .String () {
267261 if err := r .garbageCollectHelmChart (ctx , * hr ); err != nil {
268- return nil , false , err
262+ return nil , err
269263 }
270264 }
271265
272266 // Continue with the reconciliation of the current template.
273267 var helmChart sourcev1.HelmChart
274268 err := r .Client .Get (ctx , chartName , & helmChart )
275269 if err != nil && ! apierrors .IsNotFound (err ) {
276- return nil , false , err
270+ return nil , err
277271 }
278272 hc := helmChartFromTemplate (* hr )
279273 switch {
280274 case apierrors .IsNotFound (err ):
281275 if err = r .Client .Create (ctx , hc ); err != nil {
282- return nil , false , err
276+ return nil , err
283277 }
284278 hr .Status .HelmChart = chartName .String ()
285- return nil , false , nil
279+ return hc , nil
286280 case helmChartRequiresUpdate (* hr , helmChart ):
287281 r .Log .Info ("chart diverged from template" , strings .ToLower (sourcev1 .HelmChartKind ), chartName .String ())
288282 helmChart .Spec = hc .Spec
289283 if err = r .Client .Update (ctx , & helmChart ); err != nil {
290- return nil , false , err
284+ return nil , err
291285 }
292286 hr .Status .HelmChart = chartName .String ()
293- return nil , false , nil
294287 }
295-
296- return & helmChart , true , nil
288+ return & helmChart , nil
297289}
298290
299291func (r * HelmReleaseReconciler ) reconcileRelease (ctx context.Context , log logr.Logger ,
0 commit comments