Skip to content

Commit 16e2f06

Browse files
authored
Merge pull request #65 from cvaroqui/main
more oc3 scheduler tasks
2 parents 7d048da + 127607c commit 16e2f06

2 files changed

Lines changed: 90 additions & 0 deletions

File tree

scheduler/task.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ var (
5050
TaskUpdateVirtualAssets,
5151
TaskTrim,
5252
TaskScrubMinutely,
53+
TaskScrubHourly,
5354
TaskScrubDaily,
5455
TaskStatDaily,
5556
TaskAlertHourly,

scheduler/task_scrub.go

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import (
44
"context"
55
"fmt"
66
"log/slog"
7+
"os"
8+
"path/filepath"
79
"time"
810

911
"github.com/opensvc/oc3/cdb"
12+
"github.com/spf13/viper"
1013
)
1114

1215
// TaskScrubObjects marks services status "undef" if all instances have outdated or absent data.
@@ -80,6 +83,18 @@ var TaskScrubSvcdisks = Task{
8083
timeout: time.Minute,
8184
}
8285

86+
var TaskScrubTempviz = Task{
87+
name: "scrub_tempviz",
88+
fn: taskScrubTempviz,
89+
timeout: time.Minute,
90+
}
91+
92+
var TaskScrubPdf = Task{
93+
name: "scrub_pdf",
94+
fn: taskScrubPdf,
95+
timeout: time.Minute,
96+
}
97+
8398
var TaskScrubCompModulesetsNodes = Task{
8499
name: "scrub_comp_modulesets_nodes",
85100
fn: taskScrubCompModulesetsNodes,
@@ -144,6 +159,7 @@ var TaskScrubDaily = Task{
144159
TaskScrubNodeHBA,
145160
TaskScrubPackages,
146161
TaskScrubPatches,
162+
TaskScrubPdf,
147163
TaskScrubResmon,
148164
TaskScrubStorArray,
149165
TaskScrubSvcdisks,
@@ -152,6 +168,15 @@ var TaskScrubDaily = Task{
152168
timeout: 5 * time.Minute,
153169
}
154170

171+
var TaskScrubHourly = Task{
172+
name: "scrub_hourly",
173+
period: time.Minute,
174+
children: TaskList{
175+
TaskScrubTempviz,
176+
},
177+
timeout: time.Minute,
178+
}
179+
155180
var TaskScrubMinutely = Task{
156181
name: "scrub_minutely",
157182
period: time.Minute,
@@ -579,3 +604,67 @@ func taskUpdateStorArrayDGQuota(ctx context.Context, task *Task) error {
579604
}
580605
return odb.Commit()
581606
}
607+
608+
func taskScrubTempviz(ctx context.Context, task *Task) error {
609+
threshold := time.Now().Add(-1 * time.Hour)
610+
directories := viper.GetStringSlice("scheduler.task.scrub_tempviz.directories")
611+
if len(directories) == 0 {
612+
slog.Warn("skip: define scheduler.task.scrub_tempviz.directories")
613+
return nil
614+
}
615+
var matches []string
616+
for _, directory := range directories {
617+
pattern := filepath.Join(directory, "tempviz*")
618+
if m, err := filepath.Glob(pattern); err != nil {
619+
return fmt.Errorf("failed to glob files: %w", err)
620+
} else {
621+
matches = append(matches, m...)
622+
}
623+
}
624+
for _, fpath := range matches {
625+
fileInfo, err := os.Stat(fpath)
626+
if err != nil {
627+
return err
628+
}
629+
mtime := fileInfo.ModTime()
630+
if mtime.Before(threshold) {
631+
slog.Info(fmt.Sprintf("rm %s mtime %s", fpath, mtime))
632+
if err := os.Remove(fpath); err != nil {
633+
return fmt.Errorf("failed to rm %s: %w", fpath, err)
634+
}
635+
}
636+
}
637+
return nil
638+
}
639+
640+
func taskScrubPdf(ctx context.Context, task *Task) error {
641+
threshold := time.Now().Add(-24 * time.Hour)
642+
directories := viper.GetStringSlice("scheduler.task.scrub_pdf.directories")
643+
if len(directories) == 0 {
644+
slog.Warn("skip: define scheduler.task.scrub_pdf.directories")
645+
return nil
646+
}
647+
var matches []string
648+
for _, directory := range directories {
649+
pattern := filepath.Join(directory, "*-*-*-*-*.pdf")
650+
if m, err := filepath.Glob(pattern); err != nil {
651+
return fmt.Errorf("failed to glob files: %w", err)
652+
} else {
653+
matches = append(matches, m...)
654+
}
655+
}
656+
for _, fpath := range matches {
657+
fileInfo, err := os.Stat(fpath)
658+
if err != nil {
659+
return err
660+
}
661+
mtime := fileInfo.ModTime()
662+
if mtime.Before(threshold) {
663+
slog.Info(fmt.Sprintf("rm %s mtime %s", fpath, mtime))
664+
if err := os.Remove(fpath); err != nil {
665+
return fmt.Errorf("failed to rm %s: %w", fpath, err)
666+
}
667+
}
668+
}
669+
return nil
670+
}

0 commit comments

Comments
 (0)