40-clients/ucepsa/edge-oee-demo/ops/manage_context_review_case_builder_v0310.sh
2026-07-20 17:28:10 +02:00

126 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ACTION="${1:-status}"
ROOT="${CONTEXT_CASE_RUNTIME_ROOT:-/srv/mesavault/edge-oee-ucepsa}"
CONTAINER="${CONTEXT_CASE_CONTAINER:-mv_ucepsa_context_review_case_builder}"
NETWORK="${CONTEXT_CASE_NETWORK:-mv_ucepsa_net}"
INTERVAL="${CONTEXT_CASE_INTERVAL_S:-15}"
POSTGRES_CONTAINER="${CONTEXT_CASE_POSTGRES_CONTAINER:-mv_ucepsa_postgres_hot}"
TENANT_OVERRIDE="${CONTEXT_CASE_TENANT_OVERRIDE:-ucepsa}"
SITE_OVERRIDE="${CONTEXT_CASE_SITE_OVERRIDE:-ucepsa_onpremise}"
PGHOST_OVERRIDE="${CONTEXT_CASE_PGHOST_OVERRIDE:-mv_ucepsa_postgres_hot}"
cd "$ROOT"
IMAGE="$(
docker inspect \
mv_ucepsa_odoo_order_state_pg_sink \
--format '{{.Config.Image}}'
)"
PGDATABASE_OVERRIDE="${CONTEXT_CASE_PGDATABASE_OVERRIDE:-$(
docker inspect "$POSTGRES_CONTAINER" \
--format '{{range .Config.Env}}{{println .}}{{end}}' \
| sed -n 's/^POSTGRES_DB=//p' \
| head -n 1
)}"
if [[ -z "$PGDATABASE_OVERRIDE" ]]; then
echo "ERROR: no se pudo determinar POSTGRES_DB." >&2
exit 1
fi
common_args=(
--network "$NETWORK"
--env-file .env
-e "TENANT_OVERRIDE=$TENANT_OVERRIDE"
-e "SITE_OVERRIDE=$SITE_OVERRIDE"
-e "PGHOST=$PGHOST_OVERRIDE"
-e "PGDATABASE=$PGDATABASE_OVERRIDE"
-v "$ROOT:/app:ro"
-w /app
--entrypoint python
)
start_builder() {
docker rm -f "$CONTAINER" \
>/dev/null 2>&1 || true
docker run -d \
--name "$CONTAINER" \
--restart unless-stopped \
"${common_args[@]}" \
"$IMAGE" \
tools/context_review_case_builder.py \
--watch \
--interval "$INTERVAL"
docker ps \
--format 'table {{.Names}}\t{{.Status}}' \
| grep -E "$CONTAINER|NAMES"
}
run_builder_once() {
docker run --rm -i \
"${common_args[@]}" \
"$IMAGE" \
tools/context_review_case_builder.py \
--once
}
run_builder_dry() {
docker run --rm -i \
"${common_args[@]}" \
"$IMAGE" \
tools/context_review_case_builder.py \
--once \
--dry-run
}
run_admin() {
shift
docker run --rm -i \
"${common_args[@]}" \
"$IMAGE" \
tools/context_review_case_admin.py \
"$@"
}
case "$ACTION" in
start)
start_builder
;;
stop)
docker stop "$CONTAINER"
;;
restart)
docker rm -f "$CONTAINER" \
>/dev/null 2>&1 || true
start_builder
;;
status)
docker ps -a \
--format 'table {{.Names}}\t{{.Status}}' \
| grep -E "$CONTAINER|NAMES"
;;
logs)
docker logs --tail 200 -f "$CONTAINER"
;;
once)
run_builder_once
;;
dry-run)
run_builder_dry
;;
admin)
run_admin "$@"
;;
*)
echo \
"Uso: $0 {start|stop|restart|status|logs|once|dry-run|admin ...}" \
>&2
exit 2
;;
esac