@@ -87,6 +87,9 @@ func (r *GitRepositoryReconciler) Reconcile(ctx context.Context, req ctrl.Reques
8787 return ctrl.Result {}, client .IgnoreNotFound (err )
8888 }
8989
90+ // Record suspended status metric
91+ defer r .recordSuspension (ctx , repository )
92+
9093 // Add our finalizer if it does not exist
9194 if ! controllerutil .ContainsFinalizer (& repository , sourcev1 .SourceFinalizer ) {
9295 controllerutil .AddFinalizer (& repository , sourcev1 .SourceFinalizer )
@@ -364,6 +367,25 @@ func (r *GitRepositoryReconciler) recordReadiness(ctx context.Context, repositor
364367 }
365368}
366369
370+ func (r * GitRepositoryReconciler ) recordSuspension (ctx context.Context , gitrepository sourcev1.GitRepository ) {
371+ if r .MetricsRecorder == nil {
372+ return
373+ }
374+ log := logr .FromContext (ctx )
375+
376+ objRef , err := reference .GetReference (r .Scheme , & gitrepository )
377+ if err != nil {
378+ log .Error (err , "unable to record suspended metric" )
379+ return
380+ }
381+
382+ if ! gitrepository .DeletionTimestamp .IsZero () {
383+ r .MetricsRecorder .RecordSuspend (* objRef , false )
384+ } else {
385+ r .MetricsRecorder .RecordSuspend (* objRef , gitrepository .Spec .Suspend )
386+ }
387+ }
388+
367389func (r * GitRepositoryReconciler ) updateStatus (ctx context.Context , req ctrl.Request , newStatus sourcev1.GitRepositoryStatus ) error {
368390 var repository sourcev1.GitRepository
369391 if err := r .Get (ctx , req .NamespacedName , & repository ); err != nil {
0 commit comments