49 lines
1.1 KiB
Bash
Executable File
49 lines
1.1 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
USER_HOME=$HOME
|
|
[[ -n "${SUDO_USER}" ]] && USER_HOME="$(eval "echo ~${SUDO_USER}")"
|
|
. ${SHRC_D:-$SCRIPT_DIR}/01_util.functions
|
|
|
|
set -e
|
|
|
|
get_charts() {
|
|
midclt call chart.release.query | jq -r '
|
|
del(.[]
|
|
| select( .status == "STOPPED" or (.id|inside(
|
|
"traefik",
|
|
"plex-pms"
|
|
))
|
|
))
|
|
| .[].id
|
|
'
|
|
}
|
|
|
|
stop_chart() {
|
|
local CHART="${1}"
|
|
printf 'Stopping charts: %s... ' "$CHART"
|
|
midclt call chart.release.scale "$CHART" '{"replica_count": 0}'
|
|
printf '\n'
|
|
}
|
|
|
|
stop_all_charts() {
|
|
get_charts | while read chart; do
|
|
[[ -n "$chart" ]] || continue
|
|
stop_chart "$chart"
|
|
done
|
|
}
|
|
|
|
count_unfinished_jobs() {
|
|
midclt call core.get_jobs | jq -r '.[] | select( .time_finished == null )' | wc -l
|
|
}
|
|
|
|
while [[ "$( get_charts | wc -l )" -gt 0 ]]; do
|
|
stop_all_charts
|
|
|
|
while [[ "$( count_unfinished_jobs )" -gt 0 ]]; do
|
|
printf '.'
|
|
sleep 2
|
|
done
|
|
printf '\n'
|
|
done
|
|
|