Files
zyt/deployment/followup-audio-dify/ROLLBACK.sh
T

37 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
# Only this release. Default reversible quiesce; --remove-new-objects is permanent.
set -eu
BASE=/home/www/qwen-vllm/dify-integration-20261009
ID=7c3ca77d77cac063d6b98310e59d2a73b896a0f5171ba002d41eccab1c067a59
MODE=${1:---quiesce}
case "$MODE" in --quiesce|--restore|--remove-new-objects) ;; *) echo 'usage: ROLLBACK.sh [--quiesce|--restore|--remove-new-objects]' >&2; exit 2;; esac
python3 - "$BASE" <<'PY'
import json,pathlib,sys
r=json.loads((pathlib.Path(sys.argv[1])/'resources.private.json').read_text())
expected={'app_id':'ea0d7293-3d89-425d-a236-015fac7e2470','key_id':'ecfb7628-1369-41fa-b132-d24074af8470','asr_model_id':'e55a7374-a43e-4b86-9323-005a2a72458b','asr_credential_id':'01a11f7e-a148-7b9c-82c7-ffc1425b40ee','asr_default_id':'56ca4093-61fa-446b-ad77-b10deb9daaa4'}
assert all(r.get(k)==v for k,v in expected.items()),'RESOURCE_IDENTITY_MISMATCH'
print('EXACT_NEW_RESOURCES_VERIFIED')
PY
ACTUAL=$(docker inspect --format '{{.Id}}' followup-asr-bridge-20261009)
[ "$ACTUAL" = "$ID" ] || { echo 'BRIDGE_IDENTITY_MISMATCH' >&2; exit 3; }
[ "$(docker inspect --format '{{index .Config.Labels "com.zyt.release"}}' "$ID")" = followup-dify-20261009 ] || exit 4
if [ "$MODE" = --restore ]; then
docker start "$ID"
for n in 1 2 3 4 5 6 7 8 9 10; do
if docker exec "$ID" python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/health',timeout=4).read()"; then break; fi
sleep 1
done
docker exec "$ID" python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/health',timeout=4).read()"
python3 "$BASE/host_operator.py" enable
echo RESTORED_NEW_ASR_APP_AND_BRIDGE
elif [ "$MODE" = --quiesce ]; then
python3 "$BASE/host_operator.py" disable
docker stop --time 10 "$ID"
echo NEW_ASR_APP_AND_BRIDGE_QUIESCED
else
python3 "$BASE/host_operator.py" remove
docker stop --time 10 "$ID"
docker rm "$ID"
echo NEW_APP_MODEL_DEFAULT_BRIDGE_REMOVED_SHARED_RESOURCES_PRESERVED
fi