Skip to content
This repository was archived by the owner on Oct 14, 2020. It is now read-only.

Commit 2f9913e

Browse files
committed
Mark scan as errored when one or more persistence providers have failed
1 parent 2837174 commit 2f9913e

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

operator/controllers/execution/scan_controller.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -661,13 +661,15 @@ func (r *ScanReconciler) startPersistenceProvider(scan *executionv1.Scan) error
661661
return nil
662662
}
663663

664-
func allJobsCompleted(jobs *batch.JobList) bool {
664+
func allJobsCompleted(jobs *batch.JobList) jobCompletionType {
665665
for _, job := range jobs.Items {
666-
if job.Status.Succeeded == 0 {
667-
return false
666+
if job.Status.Failed > 0 {
667+
return failed
668+
} else if job.Status.Succeeded == 0 {
669+
return incomplete
668670
}
669671
}
670-
return true
672+
return incomplete
671673
}
672674

673675
func (r *ScanReconciler) checkIfPersistingIsCompleted(scan *executionv1.Scan) error {
@@ -690,13 +692,22 @@ func (r *ScanReconciler) checkIfPersistingIsCompleted(scan *executionv1.Scan) er
690692

691693
r.Log.V(9).Info("Got related jobs", "count", len(childPersistenceJobs.Items))
692694

693-
if allJobsCompleted(&childPersistenceJobs) {
694-
r.Log.V(7).Info("Parsing is completed")
695+
persistenceCompletion := allJobsCompleted(&childPersistenceJobs)
696+
if persistenceCompletion == completed {
697+
r.Log.V(7).Info("All PersistenceProviders have completed")
695698
scan.Status.State = "Done"
696699
if err := r.Status().Update(ctx, scan); err != nil {
697700
r.Log.Error(err, "unable to update Scan status")
698701
return err
699702
}
703+
} else if persistenceCompletion == failed {
704+
r.Log.Info("At least one PersistenceProvider failed")
705+
scan.Status.State = "Errored"
706+
scan.Status.ErrorDescription = "At least one PersistenceProvider failed, check the persistence kubernets jobs related to the scan for more details."
707+
if err := r.Status().Update(ctx, scan); err != nil {
708+
r.Log.Error(err, "unable to update Scan status")
709+
return err
710+
}
700711
}
701712

702713
// PersistenceProvider(s) are still running. At least some of them are.

0 commit comments

Comments
 (0)