1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-06-08 06:41:56 +00:00
YAO-scheduler/src/history_logger.go

63 lines
1.4 KiB
Go
Raw Normal View History

2019-04-29 09:05:15 +00:00
package main
2020-03-29 13:12:44 +00:00
import (
log "github.com/sirupsen/logrus"
"sync"
)
type JobHistoryLogger struct {
scheduler Scheduler
jobs map[string]Job
tasks map[string][]TaskStatus
jobStatus JobStatus
resources []NodeStatus
killedFlag bool
}
var jobHistoryLoggerInstance *JobHistoryLogger
var jobHistoryLoggerInstanceLock sync.Mutex
func InstanceJobHistoryLogger() *JobHistoryLogger {
defer jobHistoryLoggerInstanceLock.Unlock()
jobHistoryLoggerInstanceLock.Lock()
if jobHistoryLoggerInstance == nil {
jobHistoryLoggerInstance = &JobHistoryLogger{}
}
return jobHistoryLoggerInstance
}
func (jhl *JobHistoryLogger) init() {
log.Info("jhl init")
jhl.jobs = map[string]Job{}
jhl.tasks = map[string][]TaskStatus{}
/* retrieve list */
}
func (jhl *JobHistoryLogger) submitJob(job Job) {
2020-04-12 10:42:55 +00:00
log.Debug("submit job", job.Name)
2020-03-29 13:12:44 +00:00
jhl.jobs[job.Name] = job
jhl.tasks[job.Name] = []TaskStatus{}
}
func (jhl *JobHistoryLogger) updateJobStatus(jobName string, state State) {
2020-04-13 10:26:40 +00:00
log.Debug("update job status", jobName)
2020-03-29 13:12:44 +00:00
if job, ok := jhl.jobs[jobName]; ok {
job.Status = state
}
}
func (jhl *JobHistoryLogger) submitTaskStatus(jobName string, task TaskStatus) {
2020-04-13 10:26:40 +00:00
log.Debug("submit job task status", jobName)
2020-03-29 13:12:44 +00:00
if tasks, ok := jhl.tasks[jobName]; ok {
jhl.tasks[jobName] = append(tasks, task)
}
}
2020-04-10 10:55:51 +00:00
func (jhl *JobHistoryLogger) getTaskStatus(jobName string) []TaskStatus {
if _, ok := jhl.tasks[jobName]; ok {
return jhl.tasks[jobName]
}
return []TaskStatus{}
}