diff options
author | Julien Dessaux | 2020-01-30 17:44:42 +0100 |
---|---|---|
committer | Julien Dessaux | 2020-01-30 17:44:42 +0100 |
commit | bea8e5aba8fc84dcb0c980c3948ed6d78719dded (patch) | |
tree | f84f2722b98f4c2996b64ce24ac322c9709617ed /job | |
parent | Document where C structures for state file header and job entry come from (diff) | |
download | bareos-zabbix-check-bea8e5aba8fc84dcb0c980c3948ed6d78719dded.tar.gz bareos-zabbix-check-bea8e5aba8fc84dcb0c980c3948ed6d78719dded.tar.bz2 bareos-zabbix-check-bea8e5aba8fc84dcb0c980c3948ed6d78719dded.zip |
Big rafactoring : code split in several modules and some other best practices
Diffstat (limited to 'job')
-rw-r--r-- | job/job.go | 14 | ||||
-rw-r--r-- | job/utils.go | 27 |
2 files changed, 41 insertions, 0 deletions
diff --git a/job/job.go b/job/job.go new file mode 100644 index 0000000..e15b2eb --- /dev/null +++ b/job/job.go @@ -0,0 +1,14 @@ +package job + +import "fmt" + +// Job is a bareos job +type Job struct { + Name string + Timestamp uint64 + Success bool +} + +func (job Job) String() string { + return fmt.Sprintf("Name: \"%s\", Timestamp: \"%d\", Success: \"%t\"", job.Name, job.Timestamp, job.Success) +} diff --git a/job/utils.go b/job/utils.go new file mode 100644 index 0000000..8bbb6eb --- /dev/null +++ b/job/utils.go @@ -0,0 +1,27 @@ +package job + +// KeepOldestOnly filters a job list and keeps only the most recent entry for a job name +func KeepOldestOnly(jobs []Job) []Job { + tmpMap := make(map[string]Job) + for _, elt := range jobs { + prev, exists := tmpMap[elt.Name] + if !exists || (exists && prev.Timestamp < elt.Timestamp) { + tmpMap[elt.Name] = elt + } + } + values := make([]Job, 0, len(tmpMap)) + for _, value := range tmpMap { + values = append(values, value) + } + return values +} + +// KeepSuccessOnly returns only the successful jobs from a job list (suiatble to write a new spool file) +func KeepSuccessOnly(jobs []Job) (result []Job) { + for _, job := range jobs { + if job.Success { + result = append(result, job) + } + } + return +} |