Files
dokku/plugins/scheduler/triggers.go
Jose Diaz-Gonzalez 129691eb6e fix: ensure we continue on with logic if the error returned from fetching all apps is NoAppsExist
This makes it so we don't accidentally skip logic that happens after iterate over the apps.
2025-12-05 20:16:15 -05:00

113 lines
2.9 KiB
Go

package scheduler
import (
"errors"
"fmt"
"github.com/dokku/dokku/plugins/common"
)
// TriggerSchedulerDetect outputs a manually selected scheduler for the app
func TriggerSchedulerDetect(appName string) error {
if appName != "--global" {
if scheduler := common.PropertyGet("scheduler", appName, "selected"); scheduler != "" {
fmt.Println(scheduler)
return nil
}
}
if scheduler := common.PropertyGet("scheduler", "--global", "selected"); scheduler != "" {
fmt.Println(scheduler)
return nil
}
fmt.Println("docker-local")
return nil
}
// TriggerInstall runs the install step for the scheduler plugin
func TriggerInstall() error {
if err := common.PropertySetup("scheduler"); err != nil {
return fmt.Errorf("Unable to install the scheduler plugin: %s", err.Error())
}
apps, err := common.UnfilteredDokkuApps()
if err != nil && !errors.Is(err, common.NoAppsExist) {
return nil
}
results, _ := common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "config-get-global",
Args: []string{"DOKKU_SCHEDULER"},
})
globalScheduler := results.StdoutContents()
if globalScheduler != "" {
common.LogVerboseQuiet(fmt.Sprintf("Setting scheduler property 'selected' to %v", globalScheduler))
if err := common.PropertyWrite("scheduler", "--global", "selected", globalScheduler); err != nil {
return err
}
_, err := common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "config-unset",
Args: []string{"--global", "DOKKU_SCHEDULER"},
})
if err != nil {
common.LogWarn(err.Error())
}
}
for _, appName := range apps {
results, _ := common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "config-get",
Args: []string{appName, "DOKKU_SCHEDULER"},
})
scheduler := results.StdoutContents()
if scheduler == "" {
continue
}
common.LogVerboseQuiet(fmt.Sprintf("Setting %s scheduler property 'selected' to %v", appName, scheduler))
if err := common.PropertyWrite("scheduler", appName, "selected", scheduler); err != nil {
return err
}
_, err := common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "config-unset",
Args: []string{appName, "DOKKU_SCHEDULER"},
})
if err != nil {
common.LogWarn(err.Error())
}
}
return nil
}
// TriggerPostAppCloneSetup creates new scheduler files
func TriggerPostAppCloneSetup(oldAppName string, newAppName string) error {
err := common.PropertyClone("scheduler", oldAppName, newAppName)
if err != nil {
return err
}
return nil
}
// TriggerPostAppRenameSetup renames scheduler files
func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error {
if err := common.PropertyClone("scheduler", oldAppName, newAppName); err != nil {
return err
}
if err := common.PropertyDestroy("scheduler", oldAppName); err != nil {
return err
}
return nil
}
// TriggerPostDelete destroys the scheduler property for a given app container
func TriggerPostDelete(appName string) error {
return common.PropertyDestroy("scheduler", appName)
}