From 398a78b2f6d92b0fb54f4c7bc63812f617fd12c9 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 9 Mar 2025 05:39:55 -0400 Subject: [PATCH] refactor: move cron-write to scheduler-cron-write --- .../schedulers/scheduler-management.md | 6 ++-- docs/development/plugin-triggers.md | 36 ++++++++++--------- plugins/cron/subcommands.go | 4 ++- plugins/scheduler-docker-local/Makefile | 2 +- plugins/scheduler-docker-local/post-delete | 2 +- plugins/scheduler-docker-local/post-deploy | 2 +- .../src/triggers/triggers.go | 2 +- tests/unit/cron.bats | 8 ++--- 8 files changed, 35 insertions(+), 27 deletions(-) diff --git a/docs/deployment/schedulers/scheduler-management.md b/docs/deployment/schedulers/scheduler-management.md index 0189092bf..4fac3ce0f 100644 --- a/docs/deployment/schedulers/scheduler-management.md +++ b/docs/deployment/schedulers/scheduler-management.md @@ -98,7 +98,7 @@ At this time, the following dokku commands are used to implement a complete sche - `apps:clone`: handles app cloning - triggers: post-app-clone-setup - `cron`: generates cron tasks for the app - - triggers: cron-write + - triggers: scheduler-cron-write - `deploy`: deploys app proceses and checks the status of a deploy - triggers: scheduler-app-status, scheduler-deploy, scheduler-is-deployed, scheduler-logs-failed - `enter`: enters a running container @@ -112,7 +112,9 @@ At this time, the following dokku commands are used to implement a complete sche - `run:logs`: fetches running container logs - triggers: scheduler-run-logs - `ps:stop`: stops app processes - - triggers: scheduler-stop + - triggers: scheduler-stop, scheduler-cron-write +- `ps:start`: starts app processes + - triggers: scheduler-deploy, scheduler-cron-write - `ps:inspect`: outputs inspect output for processes in an app - triggers: scheduler-inspect diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index a8551d54e..e37e22c90 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -583,22 +583,6 @@ DOKKU_SCHEDULER="$1" # TODO ``` -### `cron-write` - -- Description: Force triggers writing out cron entries -- Invoked by: -- Arguments: -- Example: - -```shell -#!/usr/bin/env bash - -set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x -source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" - -# TODO -``` - ### `dependencies` - Description: Used to install system-level dependencies. @@ -2445,6 +2429,26 @@ DOKKU_SCHEDULER="$1"; APP="$2"; # TODO ``` +### `scheduler-cron-write` + +> [!WARNING] +> The scheduler plugin trigger apis are under development and may change +> between minor releases until the 1.0 release. + +- Description: Force triggers writing out cron entries. Arguments are optional. +- Invoked by: `ps:start`, `ps:stop`, `cron:set` +- Arguments: `$DOKKU_SCHEDULER $APP` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" + +# TODO +``` + ### `scheduler-deploy` > [!WARNING] diff --git a/plugins/cron/subcommands.go b/plugins/cron/subcommands.go index 4e0e56462..aede7d39b 100644 --- a/plugins/cron/subcommands.go +++ b/plugins/cron/subcommands.go @@ -130,8 +130,10 @@ func CommandSet(appName string, property string, value string) error { } common.CommandPropertySet("cron", appName, property, value, DefaultProperties, GlobalProperties) + scheduler := common.GetAppScheduler(appName) _, err := common.CallPlugnTrigger(common.PlugnTriggerInput{ - Trigger: "cron-write", + Trigger: "scheduler-cron-write", + Args: []string{scheduler, appName}, StreamStdio: true, }) return err diff --git a/plugins/scheduler-docker-local/Makefile b/plugins/scheduler-docker-local/Makefile index 09f04eabb..bd7c75ae1 100644 --- a/plugins/scheduler-docker-local/Makefile +++ b/plugins/scheduler-docker-local/Makefile @@ -1,4 +1,4 @@ -TRIGGERS = triggers/cron-write +TRIGGERS = triggers/scheduler-cron-write BUILD = triggers PLUGIN_NAME = scheduler-docker-local diff --git a/plugins/scheduler-docker-local/post-delete b/plugins/scheduler-docker-local/post-delete index 472643544..703343f15 100755 --- a/plugins/scheduler-docker-local/post-delete +++ b/plugins/scheduler-docker-local/post-delete @@ -15,7 +15,7 @@ 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 - plugn trigger cron-write + plugn trigger scheduler-cron-write } trigger-scheduler-docker-local-post-delete "$@" diff --git a/plugins/scheduler-docker-local/post-deploy b/plugins/scheduler-docker-local/post-deploy index 3c19037f1..9541385ce 100755 --- a/plugins/scheduler-docker-local/post-deploy +++ b/plugins/scheduler-docker-local/post-deploy @@ -7,7 +7,7 @@ trigger-scheduler-docker-local-post-deploy() { declare trigger="post-deploy" declare APP="$1" - plugn trigger cron-write + plugn trigger scheduler-cron-write } trigger-scheduler-docker-local-post-deploy "$@" diff --git a/plugins/scheduler-docker-local/src/triggers/triggers.go b/plugins/scheduler-docker-local/src/triggers/triggers.go index 86b030d9d..d3ce7aa11 100644 --- a/plugins/scheduler-docker-local/src/triggers/triggers.go +++ b/plugins/scheduler-docker-local/src/triggers/triggers.go @@ -18,7 +18,7 @@ func main() { var err error switch trigger { - case "cron-write": + case "scheduler-cron-write": err = schedulerdockerlocal.TriggerCronWrite() default: err = fmt.Errorf("Invalid plugin trigger call: %s", trigger) diff --git a/tests/unit/cron.bats b/tests/unit/cron.bats index 097104af9..e22145aa7 100644 --- a/tests/unit/cron.bats +++ b/tests/unit/cron.bats @@ -121,7 +121,7 @@ teardown() { echo "echo '@daily;/bin/true'" >/var/lib/dokku/plugins/enabled/cron-entries/cron-entries chmod +x /var/lib/dokku/plugins/enabled/cron-entries/cron-entries - run /bin/bash -c "dokku plugin:trigger cron-write" + run /bin/bash -c "dokku plugin:trigger scheduler-cron-write" echo "output: $output" echo "status: $status" assert_success @@ -136,7 +136,7 @@ teardown() { echo "echo '@daily;/bin/true;/var/log/dokku/log.log'" >/var/lib/dokku/plugins/enabled/cron-entries/cron-entries chmod +x /var/lib/dokku/plugins/enabled/cron-entries/cron-entries - run /bin/bash -c "dokku plugin:trigger cron-write" + run /bin/bash -c "dokku plugin:trigger scheduler-cron-write" echo "output: $output" echo "status: $status" assert_success @@ -151,7 +151,7 @@ teardown() { echo "[[ \$1 == 'docker-local' ]] && echo '@daily;/bin/true'" >/var/lib/dokku/plugins/enabled/cron-entries/cron-entries chmod +x /var/lib/dokku/plugins/enabled/cron-entries/cron-entries - run /bin/bash -c "dokku plugin:trigger cron-write" + run /bin/bash -c "dokku plugin:trigger scheduler-cron-write" echo "output: $output" echo "status: $status" assert_success @@ -166,7 +166,7 @@ teardown() { echo "[[ \$1 == 'kubernetes' ]] && echo '@daily;/bin/true'" >/var/lib/dokku/plugins/enabled/cron-entries/cron-entries chmod +x /var/lib/dokku/plugins/enabled/cron-entries/cron-entries - run /bin/bash -c "dokku plugin:trigger cron-write" + run /bin/bash -c "dokku plugin:trigger scheduler-cron-write" echo "output: $output" echo "status: $status" assert_success