diff --git a/plugins/cron/Makefile b/plugins/cron/Makefile index 920941136..20ddf156e 100644 --- a/plugins/cron/Makefile +++ b/plugins/cron/Makefile @@ -1,5 +1,5 @@ SUBCOMMANDS = subcommands/list subcommands/report subcommands/run subcommands/set -TRIGGERS = triggers/cron-get-property triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/post-delete triggers/scheduler-stop +TRIGGERS = triggers/cron-get-property triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/pre-delete triggers/post-delete triggers/scheduler-stop BUILD = commands subcommands triggers PLUGIN_NAME = cron diff --git a/plugins/cron/src/triggers/triggers.go b/plugins/cron/src/triggers/triggers.go index 6e0de5e7a..a5a5ed98d 100644 --- a/plugins/cron/src/triggers/triggers.go +++ b/plugins/cron/src/triggers/triggers.go @@ -40,6 +40,9 @@ func main() { case "post-delete": appName := flag.Arg(0) err = cron.TriggerPostDelete(appName) + case "pre-delete": + appName := flag.Arg(0) + err = cron.TriggerPreDelete(appName) case "report": appName := flag.Arg(0) err = cron.ReportSingleApp(appName, "", "") diff --git a/plugins/cron/triggers.go b/plugins/cron/triggers.go index 321e2b8a9..3b5c5d929 100644 --- a/plugins/cron/triggers.go +++ b/plugins/cron/triggers.go @@ -55,9 +55,24 @@ func TriggerPostAppRenameSetup(oldAppName string, newAppName string) error { return nil } +// TriggerPreDelete stops cron for a given app +func TriggerPreDelete(appName string) error { + scheduler := common.GetAppScheduler(appName) + _, err := common.CallPlugnTrigger(common.PlugnTriggerInput{ + Trigger: "scheduler-cron-write", + Args: []string{scheduler, appName}, + StreamStdio: true, + }) + return err +} + // TriggerPostDelete destroys the cron property for a given app container func TriggerPostDelete(appName string) error { - return common.PropertyDestroy("cron", appName) + if err := common.PropertyDestroy("cron", appName); err != nil { + return err + } + + return nil } // TriggerSchedulerStop stops the scheduler for a given app container diff --git a/plugins/scheduler-docker-local/post-delete b/plugins/scheduler-docker-local/post-delete index cd8480f80..109b07748 100755 --- a/plugins/scheduler-docker-local/post-delete +++ b/plugins/scheduler-docker-local/post-delete @@ -14,9 +14,6 @@ trigger-scheduler-docker-local-post-delete() { # remove all application containers "$DOCKER_BIN" container ls --filter "label=com.dokku.app-name=${APP}" -q | xargs -n1 -I {} "$DOCKER_BIN" container rm --force {} &>/dev/null || true - - local DOKKU_SCHEDULER="$(get_app_scheduler "$APP")" - plugn trigger scheduler-cron-write "$DOKKU_SCHEDULER" "$APP" } trigger-scheduler-docker-local-post-delete "$@"