@@ -197,26 +197,34 @@ func (r *CachedImageReconciler) Reconcile(ctx context.Context, req ctrl.Request)
197197 }
198198
199199 // Removing forceUpdate annotation
200- forceUpdate := cachedImage .Annotations [cachedImageAnnotationForceUpdateName ]
200+ forceUpdate := cachedImage .Annotations [cachedImageAnnotationForceUpdateName ] == "true"
201201 patch := client .MergeFrom (cachedImage .DeepCopy ())
202- if forceUpdate == "true" {
202+ if forceUpdate {
203203 delete (cachedImage .Annotations , cachedImageAnnotationForceUpdateName )
204204 }
205205 err = r .Patch (context .Background (), & cachedImage , patch )
206206 if err != nil {
207207 return ctrl.Result {}, err
208208 }
209209
210+ isCached , err := registry .ImageIsCached (cachedImage .Spec .SourceImage )
211+ if err != nil {
212+ return ctrl.Result {}, err
213+ }
214+
215+ err = updateStatusRaw (r .Client , & cachedImage , func (status * kuikv1alpha1.CachedImageStatus ) {
216+ cachedImage .Status .IsCached = isCached
217+ })
218+ if err != nil {
219+ return ctrl.Result {}, err
220+ }
221+
210222 // Adding image to registry
211- isCached := false
212- if forceUpdate != "true" {
213- isCached , err = registry .ImageIsCached (cachedImage .Spec .SourceImage )
214- if err != nil {
215- log .Error (err , "could not determine if the image present in cache" )
216- return ctrl.Result {}, err
217- }
223+ putImageInCache := true
224+ if isCached && ! forceUpdate {
225+ putImageInCache = false
218226 }
219- if ! isCached {
227+ if putImageInCache {
220228 r .Recorder .Eventf (& cachedImage , "Normal" , "Caching" , "Start caching image %s" , cachedImage .Spec .SourceImage )
221229 err = r .cacheImage (& cachedImage )
222230 if err != nil {
@@ -261,21 +269,25 @@ func (r *CachedImageReconciler) Reconcile(ctx context.Context, req ctrl.Request)
261269}
262270
263271func updateStatus (c client.Client , cachedImage * kuikv1alpha1.CachedImage , upstreamDescriptor * remote.Descriptor , update func (* kuikv1alpha1.CachedImageStatus )) error {
264- patch := client .MergeFrom (cachedImage .DeepCopy ())
265-
266- cachedImage .Status .AvailableUpstream = upstreamDescriptor != nil
267- cachedImage .Status .LastSync = metav1 .NewTime (time .Now ())
272+ return updateStatusRaw (c , cachedImage , func (status * kuikv1alpha1.CachedImageStatus ) {
273+ cachedImage .Status .AvailableUpstream = upstreamDescriptor != nil
274+ cachedImage .Status .LastSync = metav1 .NewTime (time .Now ())
268275
269- update (& cachedImage .Status )
276+ update (& cachedImage .Status )
270277
271- if upstreamDescriptor != nil {
272- cachedImage .Status .UpstreamDigest = upstreamDescriptor .Digest .Hex
273- cachedImage .Status .UpToDate = cachedImage .Status .Digest == upstreamDescriptor .Digest .Hex
274- } else {
275- cachedImage .Status .UpstreamDigest = ""
276- cachedImage .Status .UpToDate = false
277- }
278+ if upstreamDescriptor != nil {
279+ cachedImage .Status .UpstreamDigest = upstreamDescriptor .Digest .Hex
280+ cachedImage .Status .UpToDate = cachedImage .Status .Digest == upstreamDescriptor .Digest .Hex
281+ } else {
282+ cachedImage .Status .UpstreamDigest = ""
283+ cachedImage .Status .UpToDate = false
284+ }
285+ })
286+ }
278287
288+ func updateStatusRaw (c client.Client , cachedImage * kuikv1alpha1.CachedImage , update func (* kuikv1alpha1.CachedImageStatus )) error {
289+ patch := client .MergeFrom (cachedImage .DeepCopy ())
290+ update (& cachedImage .Status )
279291 return c .Status ().Patch (context .Background (), cachedImage , patch )
280292}
281293
0 commit comments