diff --git a/plugins/cron/cron.go b/plugins/cron/cron.go index 61a86bfce..dd30c25e8 100644 --- a/plugins/cron/cron.go +++ b/plugins/cron/cron.go @@ -44,6 +44,9 @@ type TemplateCommand struct { // LogFile is the log file to write to LogFile string `json:"-"` + + // Maintenance is whether the cron command is in maintenance mode + Maintenance bool `json:"maintenance"` } // CronCommand returns the command to run for a given cron command @@ -61,9 +64,7 @@ func (t TemplateCommand) CronCommand() string { // FetchCronEntries returns a list of cron commands for a given app func FetchCronEntries(appName string) ([]TemplateCommand, error) { commands := []TemplateCommand{} - if reportComputedMaintenance(appName) == "true" { - return commands, nil - } + isMaintenance := reportComputedMaintenance(appName) == "true" appJSON, err := appjson.GetAppJSON(appName) if err != nil { @@ -82,10 +83,11 @@ func FetchCronEntries(appName string) ([]TemplateCommand, error) { } commands = append(commands, TemplateCommand{ - App: appName, - Command: c.Command, - Schedule: c.Schedule, - ID: GenerateCommandID(appName, c), + App: appName, + Command: c.Command, + Schedule: c.Schedule, + ID: GenerateCommandID(appName, c), + Maintenance: isMaintenance, }) } diff --git a/plugins/cron/subcommands.go b/plugins/cron/subcommands.go index 593f6212a..4e0e56462 100644 --- a/plugins/cron/subcommands.go +++ b/plugins/cron/subcommands.go @@ -32,9 +32,9 @@ func CommandList(appName string, format string) error { } if format == "stdout" { - output := []string{"ID | Schedule | Command"} + output := []string{"ID | Schedule | Maintenance | Command"} for _, entry := range entries { - output = append(output, fmt.Sprintf("%s | %s | %s", entry.ID, entry.Schedule, entry.Command)) + output = append(output, fmt.Sprintf("%s | %s | %t | %s", entry.ID, entry.Schedule, entry.Maintenance, entry.Command)) } result := columnize.SimpleFormat(output) diff --git a/plugins/scheduler-docker-local/functions.go b/plugins/scheduler-docker-local/functions.go index bcf852426..e6ec71eea 100644 --- a/plugins/scheduler-docker-local/functions.go +++ b/plugins/scheduler-docker-local/functions.go @@ -83,9 +83,10 @@ func generateCronEntries() ([]cron.TemplateCommand, error) { id := base36.EncodeToStringLc([]byte(strings.Join(parts, ";;;"))) command := cron.TemplateCommand{ - ID: id, - Schedule: parts[0], - AltCommand: parts[1], + ID: id, + Schedule: parts[0], + AltCommand: parts[1], + Maintenance: false, } if len(parts) == 3 { command.LogFile = parts[2] @@ -106,7 +107,7 @@ func generateCronEntries() ([]cron.TemplateCommand, error) { for result := range results { c := result - if len(c) > 0 { + if len(c) > 0 && !c[0].Maintenance { commands = append(commands, c...) } } diff --git a/plugins/scheduler-k3s/triggers.go b/plugins/scheduler-k3s/triggers.go index cb4c27e49..5fa5e8b62 100644 --- a/plugins/scheduler-k3s/triggers.go +++ b/plugins/scheduler-k3s/triggers.go @@ -266,10 +266,17 @@ func TriggerSchedulerDeploy(scheduler string, appName string, imageTag string) e workingDir := common.GetWorkingDir(appName, image) - cronEntries, err := cron.FetchCronEntries(appName) + allCronEntries, err := cron.FetchCronEntries(appName) if err != nil { return fmt.Errorf("Error fetching cron entries: %w", err) } + // remove maintenance cron entries + cronEntries := []cron.TemplateCommand{} + for _, cronEntry := range allCronEntries { + if !cronEntry.Maintenance { + cronEntries = append(cronEntries, cronEntry) + } + } domains := []string{} if _, ok := processes["web"]; ok {