fix: always remove the robot after scan job finished

1. Register task status change function for the scan job triggered by
scan all.
2. Always to delete the robot account for the scan job after the job is
finished because the job does not retry again when it's failed.

Closes #14000

Signed-off-by: He Weiwei <hweiwei@vmware.com>
This commit is contained in:
He Weiwei 2021-01-18 06:29:06 +00:00
parent 42559479e6
commit 59a0e321ed

View File

@ -46,11 +46,15 @@ func init() {
log.Fatalf("failed to register the callback for the scan all schedule, error %v", err)
}
// NOTE: the vendor type of execution for the scan job trigger by the scan all is job.ImageScanAllJob
// NOTE: the vendor type of execution for the scan job trigger by the scan all is VendorTypeScanAll
if err := task.RegisterCheckInProcessor(VendorTypeScanAll, scanTaskCheckInProcessor); err != nil {
log.Fatalf("failed to register the checkin processor for the scan all job, error %v", err)
}
if err := task.RegisterTaskStatusChangePostFunc(VendorTypeScanAll, scanTaskStatusChange); err != nil {
log.Fatalf("failed to register the task status change post for the scan all job, error %v", err)
}
if err := task.RegisterCheckInProcessor(job.ImageScanJob, scanTaskCheckInProcessor); err != nil {
log.Fatalf("failed to register the checkin processor for the scan job, error %v", err)
}
@ -76,15 +80,13 @@ func scanTaskStatusChange(ctx context.Context, taskID int64, status string) (err
return err
}
if js == job.SuccessStatus {
robotID := getRobotID(t.ExtraAttrs)
if robotID > 0 {
if err := robotCtl.Delete(ctx, robotID); err != nil {
// Should not block the main flow, just logged
logger.WithFields(log.Fields{"robot_id": robotID, "error": err}).Error("delete robot account failed")
} else {
logger.WithField("robot_id", robotID).Debug("Robot account for the scan task is removed")
}
robotID := getRobotID(t.ExtraAttrs)
if robotID > 0 {
if err := robotCtl.Delete(ctx, robotID); err != nil {
// Should not block the main flow, just logged
logger.WithFields(log.Fields{"robot_id": robotID, "error": err}).Error("delete robot account failed")
} else {
logger.WithField("robot_id", robotID).Debug("Robot account for the scan task is removed")
}
}