Extend Job Hooks and add unit tests

Add job tagger control
This commit is contained in:
2025-05-19 13:25:39 +02:00
parent 99f8187092
commit 14bad81b9f
9 changed files with 150 additions and 31 deletions

View File

@@ -4,31 +4,54 @@
// license that can be found in the LICENSE file.
package repository
import (
"sync"
"github.com/ClusterCockpit/cc-backend/pkg/schema"
)
type JobHook interface {
jobStartCallback()
jobStopCallback()
JobStartCallback(job *schema.Job)
JobStopCallback(job *schema.Job)
}
var hooks []JobHook
var (
initOnce sync.Once
hooks []JobHook
)
func RegisterJobJook(hook JobHook) {
initOnce.Do(func() {
hooks = make([]JobHook, 0)
})
if hook != nil {
hooks = append(hooks, hook)
}
}
func CallJobStartHooks() {
func CallJobStartHooks(jobs []*schema.Job) {
if hooks == nil {
return
}
for _, hook := range hooks {
if hook != nil {
hook.jobStartCallback()
for _, job := range jobs {
hook.JobStartCallback(job)
}
}
}
}
func CallJobStopHooks() {
func CallJobStopHooks(job *schema.Job) {
if hooks == nil {
return
}
for _, hook := range hooks {
if hook != nil {
hook.jobStopCallback()
hook.JobStopCallback(job)
}
}
}