From 5373cf29895ca34341f872ae253f9fcce03d244f Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Fri, 10 May 2019 17:02:26 -0400 Subject: [PATCH] refactor: allow the scheduler to decide if an app is deployed Without moving this to the scheduler, all applications are assumed to not be deployed unless the scheduler is set to docker-local. Closes #3531 --- docs/development/plugin-triggers.md | 18 +++++++++++++++ plugins/common/functions | 12 ++++------ .../scheduler-is-deployed | 23 +++++++++++++++++++ 3 files changed, 45 insertions(+), 8 deletions(-) create mode 100755 plugins/scheduler-docker-local/scheduler-is-deployed diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index 253e2921f..7142cd3b5 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -1320,6 +1320,24 @@ DOKKU_SCHEDULER="$1"; APP="$2"; # TODO ``` +### `scheduler-is-deployed` + +> Warning: The scheduler plugin trigger apis are under development and may change +> between minor releases until the 1.0 release. + +- Description: Allows you to check if an app has been deployed +- Invoked by: `dokku ps:rebuild` +- Arguments: `$DOKKU_SCHEDULER $APP` +- Example: + +```shell +#!/usr/bin/env bash + +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +DOKKU_SCHEDULER="$1"; APP="$2"; + +# TODO +``` ### `scheduler-logs` > Warning: The scheduler plugin trigger apis are under development and may change diff --git a/plugins/common/functions b/plugins/common/functions index 5ab5f2f11..a5e7eaf19 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -450,14 +450,10 @@ get_app_running_container_types() { is_deployed() { declare desc="return 0 if given app has a running container" local APP="$1" - if [[ -f "$DOKKU_ROOT/$APP/CONTAINER" ]] || [[ $( - ls "$DOKKU_ROOT/$APP"/CONTAINER.* &>/dev/null - echo $? - ) -eq 0 ]]; then - return 0 - else - return 1 - fi + source "$PLUGIN_AVAILABLE_PATH/config/functions" + + local DOKKU_SCHEDULER=$(get_app_scheduler "$APP") + plugn trigger scheduler-is-deployed "$DOKKU_SCHEDULER" "$APP" } is_container_running() { diff --git a/plugins/scheduler-docker-local/scheduler-is-deployed b/plugins/scheduler-docker-local/scheduler-is-deployed new file mode 100755 index 000000000..c86f34f98 --- /dev/null +++ b/plugins/scheduler-docker-local/scheduler-is-deployed @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -eo pipefail +[[ $DOKKU_TRACE ]] && set -x + +scheduler-docker-local-scheduler-is-deployed() { + declare desc="checks if an app is deployed" + declare DOKKU_SCHEDULER="$1" APP="$2" + + if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then + return + fi + + if [[ -f "$DOKKU_ROOT/$APP/CONTAINER" ]] || [[ $( + ls "$DOKKU_ROOT/$APP"/CONTAINER.* &>/dev/null + echo $? + ) -eq 0 ]]; then + return 0 + fi + + return 1 +} + +scheduler-docker-local-scheduler-is-deployed "$@"