tests: run mvdan/shfmt on test runs

While I do not agree with _every_ style change, this will force Dokku to have consistent formatting across all shell scripts, which is arguably a Good Thing™.

The command used to reprocess everything is:

```shell
shfmt -l -bn -ci -i 2 -w .
```
This commit is contained in:
Jose Diaz-Gonzalez
2019-01-07 01:04:17 -05:00
parent fb7c73a7e3
commit 86795ddacc
283 changed files with 1536 additions and 1018 deletions

View File

@@ -33,7 +33,8 @@
# TIMEOUT=60 # Timeout after a minute
# ATTEMPTS=10 # retry checks 10 times
#
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/checks/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
@@ -41,7 +42,11 @@ source "$PLUGIN_AVAILABLE_PATH/config/functions"
scheduler-docker-local-check-deploy() {
declare desc="scheduler-docker-local check-deploy plugin trigger"
local trigger="scheduler-docker-local-check-deploy"
local APP="$1"; local DOKKU_APP_CONTAINER_ID="$2"; local DOKKU_APP_CONTAINER_TYPE="$3"; local DOKKU_APP_LISTEN_PORT="$4"; local DOKKU_APP_LISTEN_IP="$5"
local APP="$1"
local DOKKU_APP_CONTAINER_ID="$2"
local DOKKU_APP_CONTAINER_TYPE="$3"
local DOKKU_APP_LISTEN_PORT="$4"
local DOKKU_APP_LISTEN_IP="$5"
local DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then
@@ -49,13 +54,13 @@ scheduler-docker-local-check-deploy() {
fi
if [[ -z "$DOKKU_APP_LISTEN_PORT" ]] && [[ -f "$DOKKU_ROOT/$APP/PORT" ]]; then
local DOKKU_APP_LISTEN_PORT=$(< "$DOKKU_ROOT/$APP/PORT")
local DOKKU_APP_LISTEN_PORT=$(<"$DOKKU_ROOT/$APP/PORT")
fi
if [[ -z "$DOKKU_APP_LISTEN_IP" ]] && [[ -f "$DOKKU_ROOT/$APP/IP" ]]; then
local DOKKU_APP_LISTEN_IP=$(< "$DOKKU_ROOT/$APP/IP")
local DOKKU_APP_LISTEN_IP=$(<"$DOKKU_ROOT/$APP/IP")
fi
if [[ -z "$DOKKU_APP_CONTAINER_ID" ]]; then
local DOKKU_APP_CIDS=( $(get_app_container_ids "$APP") )
local DOKKU_APP_CIDS=($(get_app_container_ids "$APP"))
local DOKKU_APP_CONTAINER_ID=${DOKKU_APP_CIDS[0]}
fi
@@ -80,18 +85,18 @@ scheduler-docker-local-check-deploy() {
# after successfully copying the file. Thus, we suppress stderr.
# ref: https://github.com/dotcloud/docker/issues/3986
local CHECK_DEPLOY_TMP_WORK_DIR=$(mktemp -d /tmp/dokku_CHECKS.XXXXX)
docker cp "$DOKKU_APP_CONTAINER_ID:/app/CHECKS" "$CHECK_DEPLOY_TMP_WORK_DIR" 2> /dev/null || true
docker cp "$DOKKU_APP_CONTAINER_ID:/app/CHECKS" "$CHECK_DEPLOY_TMP_WORK_DIR" 2>/dev/null || true
local FILENAME=${CHECK_DEPLOY_TMP_WORK_DIR}/CHECKS
checks_check_deploy_cleanup() {
declare desc="cleans up CHECK_DEPLOY_TMP_WORK_DIR and print container output"
local id="$1"
rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &> /dev/null || true
rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &>/dev/null || true
if [[ $id ]]; then
dokku_log_info2_quiet "$APP $DOKKU_APP_CONTAINER_TYPE container output:"
dokku_log_info2_quiet "$APP $DOKKU_APP_CONTAINER_TYPE container output:"
dokku_container_log_verbose_quiet "$id"
dokku_log_info2_quiet "end $APP $DOKKU_APP_CONTAINER_TYPE container output"
dokku_log_info2_quiet "end $APP $DOKKU_APP_CONTAINER_TYPE container output"
fi
}
trap 'checks_check_deploy_cleanup $DOKKU_APP_CONTAINER_ID' RETURN INT TERM EXIT
@@ -106,7 +111,7 @@ scheduler-docker-local-check-deploy() {
dokku_log_verbose "Non web container detected: Running default container check..."
fi
rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &> /dev/null || true
rm -rf "$CHECK_DEPLOY_TMP_WORK_DIR" &>/dev/null || true
# simple default check to see if the container stuck around
local DOKKU_DEFAULT_CHECKS_WAIT="${DOKKU_DEFAULT_CHECKS_WAIT:-10}"
@@ -126,34 +131,34 @@ scheduler-docker-local-check-deploy() {
# ensure CHECKS file has trailing newline
if [[ "$(tail -c1 "$FILENAME")" != "" ]]; then
echo "" >> "$FILENAME"
echo "" >>"$FILENAME"
fi
# Reads name/value pairs, sets the WAIT and TIMEOUT variables
exec < "$FILENAME"
local line; local NAME; local VALUE
exec <"$FILENAME"
local line
local NAME
local VALUE
while read -r line; do
line=$(strip_inline_comments "$line")
# Name/value pair
if [[ "$line" =~ ^.+= ]]; then
NAME=${line%=*}
VALUE=${line#*=}
[[ "$NAME" = "WAIT" ]] && local WAIT=$VALUE
[[ "$NAME" = "TIMEOUT" ]] && local TIMEOUT=$VALUE
[[ "$NAME" = "ATTEMPTS" ]] && local ATTEMPTS=$VALUE
[[ "$NAME" == "WAIT" ]] && local WAIT=$VALUE
[[ "$NAME" == "TIMEOUT" ]] && local TIMEOUT=$VALUE
[[ "$NAME" == "ATTEMPTS" ]] && local ATTEMPTS=$VALUE
fi
done
local ATTEMPT=0
until [[ $SUCCESS == 1 || $ATTEMPT -ge $ATTEMPTS ]]
do
until [[ $SUCCESS == 1 || $ATTEMPT -ge $ATTEMPTS ]]; do
local FAILEDCHECKS=0
local ATTEMPT=$(( ATTEMPT + 1 ))
local ATTEMPT=$((ATTEMPT + 1))
dokku_log_info1 "Attempt $ATTEMPT/$ATTEMPTS Waiting for $WAIT seconds ..."
sleep "$WAIT"
# -q Do not use .curlrc (must come first)
# --compressed Test compression handled correctly
# --fail Fail on server errors (4xx, 5xx)
@@ -167,7 +172,7 @@ scheduler-docker-local-check-deploy() {
local CURL_OPTIONS+=" -H X-Forwarded-Proto:https"
fi
exec < "$FILENAME"
exec <"$FILENAME"
local CHECK_URL
local EXPECTED
while read -r CHECK_URL EXPECTED; do
@@ -216,26 +221,26 @@ scheduler-docker-local-check-deploy() {
# OUTPUT contains the HTTP response
if [[ ! "$OUTPUT" =~ $EXPECTED ]]; then
dokku_log_warn "$LOG_URL: expected to but did not find: \"$EXPECTED\""
local FAILEDCHECKS=$(( FAILEDCHECKS + 1 ))
local FAILEDCHECKS=$((FAILEDCHECKS + 1))
fi
else
# Failed to connect/no response, OUTPUT contains error message
dokku_log_warn "$OUTPUT"
local FAILEDCHECKS=$(( FAILEDCHECKS + 1 ))
local FAILEDCHECKS=$((FAILEDCHECKS + 1))
fi
done
if [[ $FAILEDCHECKS -gt 0 ]]; then
dokku_log_warn "Check attempt $ATTEMPT/$ATTEMPTS failed."
local SUCCESS=0
dokku_log_warn "Check attempt $ATTEMPT/$ATTEMPTS failed."
local SUCCESS=0
else
local SUCCESS=1
local SUCCESS=1
fi
done
if [[ $FAILEDCHECKS -gt 0 ]]; then
dokku_log_fail "Could not start due to $FAILEDCHECKS failed checks."
exit 1
dokku_log_fail "Could not start due to $FAILEDCHECKS failed checks."
exit 1
fi
trap - EXIT

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
case "$1" in

View File

@@ -1,12 +1,13 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
scheduler-docker-local-core-post-deploy() {
declare desc="scheduler-docker-local core-post-deploy state cleanup"
declare trigger="scheduler-docker-local core-post-deploy"
declare APP="$1";
declare APP="$1"
local APP_ROOT="$DOKKU_ROOT/$APP"
local DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
@@ -19,7 +20,7 @@ scheduler-docker-local-core-post-deploy() {
local CONTAINER_FILE
for CONTAINER_FILE in $CONTAINER_FILES; do
local CONTAINER_TYPE="$(awk -F '.' '{ print $2 }' <<< "$CONTAINER_FILE")"
local CONTAINER_TYPE="$(awk -F '.' '{ print $2 }' <<<"$CONTAINER_FILE")"
if [[ "$(is_val_in_list "$CONTAINER_TYPE" "$PROCTYPES" " ")" == "false" ]]; then
dokku_log_info1 "Container type ($CONTAINER_TYPE) is no longer defined. Removing state"
local IP_FILE="${CONTAINER_FILE//CONTAINER/IP}"
@@ -33,7 +34,7 @@ scheduler-docker-local-core-post-deploy() {
for container in $APP_ROOT/CONTAINER.*; do
local DYNO=$(echo "$container" | sed -r 's/.*CONTAINER\.(.*)/\1/') || true
local NAME="$APP.$DYNO"
local CURRENT_CONTAINER_ID="$(< "$container")"
local CURRENT_CONTAINER_ID="$(<"$container")"
# TODO: Ensure these are from the current service
local PREVIOUS_CIDS=$(docker ps -a -q -f name="^.?$NAME\$" | xargs) || true
if [[ -n $PREVIOUS_CIDS ]]; then
@@ -46,7 +47,7 @@ scheduler-docker-local-core-post-deploy() {
if [[ "$PREVIOUS_CONTAINER_STATUS" != "dead" ]]; then
local CONTAINER_DATE_NAME="$NAME.$(date +%s)"
dokku_log_info2_quiet "Renaming container ($cid) ${NAME} to $CONTAINER_DATE_NAME"
docker rename "$NAME" "$CONTAINER_DATE_NAME" > /dev/null 2>&1 || dokku_log_warn "Unable to rename container"
docker rename "$NAME" "$CONTAINER_DATE_NAME" >/dev/null 2>&1 || dokku_log_warn "Unable to rename container"
fi
done
fi
@@ -54,7 +55,7 @@ scheduler-docker-local-core-post-deploy() {
local CURRENT_NAME=$(docker inspect -f '{{.Name}}' "$ID" | tr -d /)
if [[ -n "$CURRENT_NAME" ]]; then
dokku_log_info2_quiet "Renaming container (${ID:0:12}) $CURRENT_NAME to $NAME"
docker rename "$CURRENT_NAME" "$NAME" > /dev/null
docker rename "$CURRENT_NAME" "$NAME" >/dev/null
fi
done
shopt -u nullglob

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
@@ -15,8 +16,8 @@ scheduler-docker-local-install() {
DOKKU_PATH="$(which dokku)"
if [[ $(systemctl 2> /dev/null) =~ -\.mount ]]; then
cat<<EOF > /etc/systemd/system/dokku-retire.service
if [[ $(systemctl 2>/dev/null) =~ -\.mount ]]; then
cat <<EOF >/etc/systemd/system/dokku-retire.service
[Unit]
Description=Dokku retire service
Requires=docker.service
@@ -31,24 +32,24 @@ ExecStart=$DOKKU_PATH ps:restore
WantedBy=docker.service
EOF
cat<<EOF > /etc/systemd/system/dokku-retire.timer
cat <<EOF >/etc/systemd/system/dokku-retire.timer
[Unit]
Description=Run dokku-retire.service every 5 minutes
[Timer]
OnCalendar=*:0/5
EOF
if command -v systemctl &>/dev/null; then
systemctl reenable dokku-redeploy
fi
else
cat<<EOF > /etc/cron.d/dokku-retire
if command -v systemctl &>/dev/null; then
systemctl reenable dokku-redeploy
fi
else
cat <<EOF >/etc/cron.d/dokku-retire
PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash
*/5 * * * * $DOKKU_SYSTEM_USER $DOKKU_PATH ps:retire >> /var/log/dokku/retire.log 2>&1
EOF
fi
fi
}
scheduler-docker-local-install "$@"

View File

@@ -2,7 +2,8 @@
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
cmd-scheduler-docker-local-report() {
declare desc="displays a scheduler-docker-local report for one or more apps"
@@ -45,7 +46,8 @@ cmd-scheduler-docker-local-report-single() {
dokku_log_verbose "$(printf "%-30s %-25s" "${key^}" "${flag#*: }")"
done
else
local match=false; local value_exists=false
local match=false
local value_exists=false
for flag in "${flag_map[@]}"; do
valid_flags="${valid_flags} $(echo "$flag" | cut -d':' -f1)"
if [[ "$flag" == "${INFO_FLAG}:"* ]]; then
@@ -65,14 +67,14 @@ cmd-scheduler-docker-local-report-single() {
scheduler_docker_local_help_content_func() {
declare desc="return scheduler-docker-local plugin help content"
cat<<help_content
cat <<help_content
scheduler-docker-local:report [<app>] [<flag>], Displays a scheduler-docker-local report for one or more apps
scheduler-docker-local:set <app> <property> (<value>), Set or clear a scheduler-docker-local property for an app
help_content
}
cmd-scheduler-docker-local-help() {
if [[ $1 = "scheduler-docker-local:help" ]] ; then
if [[ $1 == "scheduler-docker-local:help" ]]; then
echo -e 'Usage: dokku scheduler-docker-local[:COMMAND]'
echo ''
echo 'Manages the scheduler-docker-local integration for an app.'
@@ -83,7 +85,7 @@ cmd-scheduler-docker-local-help() {
elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then
scheduler_docker_local_help_content_func
else
cat<<help_desc
cat <<help_desc
scheduler-docker-local, Manages the scheduler-docker-local integration for an app
help_desc
fi
@@ -92,7 +94,7 @@ help_desc
fn-scheduler-docker-local-retire-container() {
declare APP="$1" CID="$2" DEAD_TIME="$3"
if ! docker inspect "${CID}" > /dev/null; then
if ! docker inspect "${CID}" >/dev/null; then
return
fi
@@ -104,8 +106,8 @@ fn-scheduler-docker-local-retire-container() {
# on to the next.
# shellcheck disable=SC2086
docker stop $DOCKER_STOP_TIME_ARG "$CID" \
|| docker kill "$CID" \
|| dokku_log_warn "Unable to kill container ${CID}"
|| docker kill "$CID" \
|| dokku_log_warn "Unable to kill container ${CID}"
if ! docker kill "$CID"; then
dokku_log_warn "Unable to kill container ${CID}"
@@ -119,5 +121,5 @@ fn-scheduler-docker-local-register-retired-container() {
CURRENT_TIME="$(date +%s)"
DEAD_TIME=$((CURRENT_TIME + WAIT))
echo "${APP} ${CID} ${DEAD_TIME}" >> "${DEAD_CONTAINER_FILE}"
echo "${APP} ${CID} ${DEAD_TIME}" >>"${DEAD_CONTAINER_FILE}"
}

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
scheduler-docker-local-post-app-clone-setup() {
declare desc="removes docker-local files when setting up a clone"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
scheduler-docker-local-post-create() {
declare desc="scheduler-docker-local post-create plugin trigger"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
@@ -20,7 +21,7 @@ scheduler-docker-local-post-delete() {
local DOKKU_APP_CIDS=$(docker ps -a --no-trunc | egrep "dokku/${APP}:" | awk '{ print $1 }' | xargs)
if [[ -n "$DOKKU_APP_CIDS" ]]; then
# shellcheck disable=SC2086
docker rm -f $DOKKU_APP_CIDS > /dev/null 2>&1 || true
docker rm -f $DOKKU_APP_CIDS >/dev/null 2>&1 || true
fi
# shellcheck disable=SC2046

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
@@ -27,7 +28,7 @@ scheduler-docker-local-pre-deploy() {
CONTAINER_PATHS=$(echo "$APP_PATHS" | awk -F ':' '{ print $2 }' | xargs)
DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG")
# strip --restart args from DOCKER_ARGS
DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<< "$DOCKER_ARGS")
DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<<"$DOCKER_ARGS")
eval "ARG_ARRAY=($DOCKER_ARGS)"
fi

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
scheduler-docker-local-pre-restore() {
@@ -13,7 +14,7 @@ scheduler-docker-local-pre-restore() {
# delete all "old" containers
# shellcheck disable=SC2046
docker rm $(docker ps --format "{{.Names}}" -a -f "label=$DOKKU_CONTAINER_LABEL" -q | grep -E '(.+\..+\.[0-9]+\.[0-9]+$)') &> /dev/null || true
docker rm $(docker ps --format "{{.Names}}" -a -f "label=$DOKKU_CONTAINER_LABEL" -q | grep -E '(.+\..+\.[0-9]+\.[0-9]+$)') &>/dev/null || true
}
scheduler-docker-local-pre-restore "$@"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
cmd-scheduler-docker-local-report-single "$@"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/checks/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
@@ -31,7 +32,10 @@ scheduler-docker-local-scheduler-deploy() {
DOKKU_DOCKER_STOP_TIMEOUT="$(config_get "$APP" DOKKU_DOCKER_STOP_TIMEOUT || true)"
[[ $DOKKU_DOCKER_STOP_TIMEOUT ]] && DOCKER_STOP_TIME_ARG="--time=${DOKKU_DOCKER_STOP_TIMEOUT}"
local line; local PROC_TYPE; local PROC_COUNT; local CONTAINER_INDEX
local line
local PROC_TYPE
local PROC_COUNT
local CONTAINER_INDEX
while read -r line || [[ -n "$line" ]]; do
[[ "$line" =~ ^#.* ]] && continue
line="$(strip_inline_comments "$line")"
@@ -45,14 +49,16 @@ scheduler-docker-local-scheduler-deploy() {
for cid in $proctype_oldids; do
dokku_log_info2 "stopping $APP.$PROC_TYPE ($cid)"
# shellcheck disable=SC2086
docker stop $DOCKER_STOP_TIME_ARG "$cid" &> /dev/null
docker stop $DOCKER_STOP_TIME_ARG "$cid" &>/dev/null
# remove cid from oldids to skip the old container finish processing
oldids="$(remove_val_from_list "$cid" "$oldids" " ")"
done
fi
while [[ $CONTAINER_INDEX -le $PROC_COUNT ]]; do
local cid=""; local port=""; local ipaddr=""
local cid=""
local port=""
local ipaddr=""
local DOKKU_CONTAINER_ID_FILE="$DOKKU_ROOT/$APP/CONTAINER.$PROC_TYPE.$CONTAINER_INDEX"
# start the app
@@ -100,8 +106,8 @@ scheduler-docker-local-scheduler-deploy() {
declare desc="wrapper function to kill newly started app container"
declare CID="$1" PROC_TYPE="$2" CONTAINER_INDEX="$3"
mkdir -p "${DOKKU_LIB_ROOT}/data/scheduler-docker-local/$APP"
echo "${CID} ${PROC_TYPE}.${CONTAINER_INDEX}" >> "${DOKKU_LIB_ROOT}/data/scheduler-docker-local/$APP/failed-containers"
docker inspect "$CID" &> /dev/null && docker stop "$CID" > /dev/null && docker kill "$CID" &> /dev/null
echo "${CID} ${PROC_TYPE}.${CONTAINER_INDEX}" >>"${DOKKU_LIB_ROOT}/data/scheduler-docker-local/$APP/failed-containers"
docker inspect "$CID" &>/dev/null && docker stop "$CID" >/dev/null && docker kill "$CID" &>/dev/null
trap - INT TERM EXIT
kill -9 $$
}
@@ -112,17 +118,17 @@ scheduler-docker-local-scheduler-deploy() {
dokku_log_info1 "Attempting pre-flight checks"
plugn trigger check-deploy "$APP" "$cid" "$PROC_TYPE" "$port" "$ipaddr"
fi
trap - INT TERM EXIT
trap - INT TERM EXIT
# now using the new container
[[ -n "$cid" ]] && echo "$cid" > "$DOKKU_CONTAINER_ID_FILE"
[[ -n "$cid" ]] && echo "$cid" >"$DOKKU_CONTAINER_ID_FILE"
[[ -n "$ipaddr" ]] && plugn trigger network-write-ipaddr "$APP" "$PROC_TYPE" "$CONTAINER_INDEX" "$ipaddr"
[[ -n "$port" ]] && plugn trigger network-write-port "$APP" "$PROC_TYPE" "$CONTAINER_INDEX" "$port"
# cleanup pre-migration files
rm -f "$DOKKU_ROOT/$APP/CONTAINER" "$DOKKU_ROOT/$APP/IP" "$DOKKU_ROOT/$APP/PORT"
local CONTAINER_INDEX=$(( CONTAINER_INDEX + 1 ))
local CONTAINER_INDEX=$((CONTAINER_INDEX + 1))
done
# cleanup when we scale down
if [[ "$PROC_COUNT" == 0 ]]; then
@@ -135,7 +141,7 @@ scheduler-docker-local-scheduler-deploy() {
cd "$DOKKU_ROOT/$APP"
find . -maxdepth 1 -name "$container_state_filetype.$PROC_TYPE.*" -printf "%f\n" | sort -t . -k 3 -n | tail -n +$CONTAINER_IDX_OFFSET | xargs rm -f
done
done < "$DOKKU_SCALE_FILE"
done <"$DOKKU_SCALE_FILE"
dokku_log_info1 "Running post-deploy"
plugn trigger core-post-deploy "$APP" "$port" "$ipaddr" "$IMAGE_TAG"
@@ -168,10 +174,11 @@ scheduler-docker-local-scheduler-deploy() {
# on to the next.
# shellcheck disable=SC2086
docker stop $DOCKER_STOP_TIME_ARG "$oldid" \
|| docker kill "$oldid" \
|| plugn trigger retire-container-failed "$APP" "$oldid" # plugin trigger for event logging
|| docker kill "$oldid" \
|| plugn trigger retire-container-failed "$APP" "$oldid" # plugin trigger for event logging
done
) & disown -a
) &
disown -a
# Use trap since disown/nohup don't seem to keep child alive
# Give child process just enough time to set the traps
sleep 0.1

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
scheduler-docker-local-scheduler-docker-cleanup() {
@@ -13,15 +14,15 @@ scheduler-docker-local-scheduler-docker-cleanup() {
# delete all non-running containers
# shellcheck disable=SC2046
docker rm $(docker ps -a -f "status=exited" -f "label=$DOKKU_CONTAINER_LABEL" -q) &> /dev/null || true
docker rm $(docker ps -a -f "status=exited" -f "label=$DOKKU_CONTAINER_LABEL" -q) &>/dev/null || true
# delete all dead containers
# shellcheck disable=SC2046
docker rm $(docker ps -a -f "status=dead" -f "label=$DOKKU_CONTAINER_LABEL" -q) &> /dev/null || true
docker rm $(docker ps -a -f "status=dead" -f "label=$DOKKU_CONTAINER_LABEL" -q) &>/dev/null || true
# delete unused images
# shellcheck disable=SC2046
docker rmi $(docker images -f 'dangling=true' -q) &> /dev/null &
docker rmi $(docker images -f 'dangling=true' -q) &>/dev/null &
}
scheduler-docker-local-scheduler-docker-cleanup "$@"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
@@ -14,7 +15,7 @@ scheduler-docker-local-scheduler-inspect() {
local TMP_INSPECT_CMD=$(mktemp "/tmp/${FUNCNAME[0]}.XXXX")
trap 'rm -rf "$TMP_INSPECT_CMD" > /dev/null' RETURN INT TERM EXIT
cat > "$TMP_INSPECT_CMD" <<EOF
cat >"$TMP_INSPECT_CMD" <<EOF
import json
import sys
@@ -45,7 +46,7 @@ EOF
local CONTAINER_FILES="$(find "$DOKKU_ROOT/$APP" -maxdepth 1 -name "CONTAINER.*" -printf "%f\n" 2>/dev/null | sort -t . -k 2 -n | xargs)"
local CIDS=()
for CONTAINER_FILE in $CONTAINER_FILES; do
CIDS+="$(< "$DOKKU_ROOT/$APP/$CONTAINER_FILE")"
CIDS+="$(<"$DOKKU_ROOT/$APP/$CONTAINER_FILE")"
done
docker inspect "${CIDS[@]}" | python2.7 "$TMP_INSPECT_CMD"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
scheduler-docker-local-scheduler-logs-failed() {
@@ -23,12 +24,12 @@ scheduler-docker-local-scheduler-logs-failed() {
while read -r LINE || [[ -n "$LINE" ]]; do
CID="$(echo "$LINE" | cut -d ' ' -f1)"
PREFIX="$(echo "$LINE" | cut -d ' ' -f2)"
if docker inspect "${CID}" > /dev/null 2>&1; then
if docker inspect "${CID}" >/dev/null 2>&1; then
RUNNING_CONTAINERS+=("$CID")
else
DEAD_CONTAINERS+=("$CID")
fi
done < "$FAILED_CONTAINERS_FILE"
done <"$FAILED_CONTAINERS_FILE"
for CID in "${DEAD_CONTAINERS[@]}"; do
dokku_log_warn "App container $CID no longer running"
@@ -40,7 +41,7 @@ scheduler-docker-local-scheduler-logs-failed() {
return
fi
((MAX_INDEX=${#RUNNING_CONTAINERS[*]} - 1)) || true
((MAX_INDEX = ${#RUNNING_CONTAINERS[*]} - 1)) || true
for i in ${!RUNNING_CONTAINERS[*]}; do
local CID="${RUNNING_CONTAINERS[i]}"
DOKKU_LOGS_CMD+="(docker logs $DOKKU_LOGS_ARGS $CID 2>&1)"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
@@ -26,19 +27,19 @@ scheduler-docker-local-scheduler-retire() {
fi
fn-scheduler-docker-local-retire-container "$APP" "$CID" "$DEAD_TIME"
if docker ps -aq -f "id=${CID}" -f "status=running" > /dev/null 2>&1; then
if docker ps -aq -f "id=${CID}" -f "status=running" >/dev/null 2>&1; then
dokku_log_warn "Container ${CID} still running"
continue
fi
docker rm -f "$CID" > /dev/null 2>&1 || true
if docker inspect "${CID}" > /dev/null 2>&1; then
docker rm -f "$CID" >/dev/null 2>&1 || true
if docker inspect "${CID}" >/dev/null 2>&1; then
dokku_log_warn "Container ${CID} still running"
continue
fi
DEAD_CONTAINERS+=("$CID")
done < "$DEAD_CONTAINER_FILE"
done <"$DEAD_CONTAINER_FILE"
for CID in "${DEAD_CONTAINERS[@]}"; do
sed -i "/${CID}/d" "$DEAD_CONTAINER_FILE"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
source "$PLUGIN_AVAILABLE_PATH/ps/functions"
@@ -7,7 +8,7 @@ source "$PLUGIN_AVAILABLE_PATH/ps/functions"
scheduler-docker-local-scheduler-run() {
declare desc="runs command in container based on app image"
declare trigger="scheduler-docker-local scheduler-run"
declare DOKKU_SCHEDULER="$1" APP="$2"
declare DOKKU_SCHEDULER="$1" APP="$2"
shift 2
if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
@@ -19,7 +20,7 @@ scheduler-docker-local-scheduler-stop() {
if [[ -n "$DOKKU_APP_RUNNING_CONTAINER_IDS" ]]; then
# shellcheck disable=SC2086
docker stop $DOCKER_STOP_TIME_ARG $DOKKU_APP_RUNNING_CONTAINER_IDS > /dev/null || true
docker stop $DOCKER_STOP_TIME_ARG $DOKKU_APP_RUNNING_CONTAINER_IDS >/dev/null || true
fi
if [[ "$REMOVE_CONTAINERS" == "true" ]]; then
@@ -27,10 +28,9 @@ scheduler-docker-local-scheduler-stop() {
if [[ -n "$DOKKU_APP_CIDS" ]]; then
# shellcheck disable=SC2086
docker rm -f $DOKKU_APP_CIDS > /dev/null 2>&1 || true
docker rm -f $DOKKU_APP_CIDS >/dev/null 2>&1 || true
fi
fi
}
scheduler-docker-local-scheduler-stop "$@"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
scheduler-docker-local-scheduler-tags-create() {

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
scheduler-docker-local-scheduler-tags-destroy() {

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
cmd-scheduler-docker-local-help "scheduler-docker-local:help"

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash
source "$PLUGIN_AVAILABLE_PATH/scheduler-docker-local/internal-functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
cmd-scheduler-docker-local-report "$@"

View File

@@ -1,7 +1,8 @@
#!/usr/bin/env bash
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
fn-in-array() {
declare desc="return true if value ($1) is in list (all other arguments)"
@@ -15,7 +16,8 @@ fn-in-array() {
scheduler-docker-local-set-cmd() {
declare desc="set or clear a scheduler-docker-local property for an app"
local cmd="scheduler-docker-local:set" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
local cmd="scheduler-docker-local:set" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare APP="$1" KEY="$2" VALUE="$3"
local VALID_KEYS=("disable-chown")
[[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on"