Files
dokku/plugins/scheduler-docker-local/scheduler-inspect
Jose Diaz-Gonzalez f42b293836 feat: remove reference to 'whitelist'
The term doesn't even 'make sense' in this context. 'allowed_prefixes' is a much better variable name.
2020-12-13 02:10:52 -05:00

64 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
trigger-scheduler-docker-local-scheduler-inspect() {
declare desc="scheduler-docker-local scheduler-inspect plugin trigger"
declare trigger="scheduler-inspect"
declare DOKKU_SCHEDULER="$1" APP="$2"
if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then
return
fi
local TMP_INSPECT_CMD=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")
trap "rm -rf '$TMP_INSPECT_CMD' >/dev/null" RETURN INT TERM EXIT
cat >"$TMP_INSPECT_CMD" <<EOF
import json
import sys
output = []
data = json.load(sys.stdin)
for container in data:
env = []
allowed_prefixes = ['CACHE_PATH=', 'DOCKER_', 'DOKKU_', 'DYNO=', 'PATH=', 'PORT=', 'USER=']
for e in container['Config']['Env']:
append = False
for s in allowed_prefixes:
if e.startswith(s):
append = True
break
if append:
env.append(e)
continue
k, v = e.split('=', 1)
env.append('{0}=XXXXXX'.format(k))
container['Config']['Env'] = env
output.append(container)
print(json.dumps(data, sort_keys=True, indent=4))
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")")
done
local PYTHON_BIN=python
if command -v "python3" &>/dev/null; then
PYTHON_BIN=python3
elif command -v "python2.7" &>/dev/null; then
PYTHON_BIN=python2.7
fi
"$DOCKER_BIN" container inspect "${CIDS[@]}" | "$PYTHON_BIN" "$TMP_INSPECT_CMD"
}
trigger-scheduler-docker-local-scheduler-inspect "$@"