diff --git a/ucepsa/edge-oee-demo/ops/manage_odoo_shopfloor_sync_v033.sh b/ucepsa/edge-oee-demo/ops/manage_odoo_shopfloor_sync_v033.sh old mode 100644 new mode 100755 index 3efab4e..2bb3138 --- a/ucepsa/edge-oee-demo/ops/manage_odoo_shopfloor_sync_v033.sh +++ b/ucepsa/edge-oee-demo/ops/manage_odoo_shopfloor_sync_v033.sh @@ -2,12 +2,31 @@ set -euo pipefail ACTION="${1:-status}" + ROOT="${SHOPFLOOR_RUNTIME_ROOT:-/srv/mesavault/edge-oee-ucepsa}" -CONTAINER="${SHOPFLOOR_SYNC_CONTAINER:-mv_ucepsa_odoo_shopfloor_session_sync}" + +CONTAINER="${ + SHOPFLOOR_SYNC_CONTAINER:- + mv_ucepsa_odoo_shopfloor_session_sync +}" + NETWORK="${SHOPFLOOR_DOCKER_NETWORK:-mv_ucepsa_net}" + INTERVAL="${SHOPFLOOR_SYNC_INTERVAL_S:-15}" LOOKBACK="${SHOPFLOOR_SYNC_LOOKBACK_HOURS:-168}" -OUTPUT="${SHOPFLOOR_SYNC_OUTPUT:-/tmp/ucepsa_odoo_shopfloor_session_sync.jsonl}" + +TENANT="${SHOPFLOOR_TENANT:-ucepsa}" +SITE="${SHOPFLOOR_SITE:-ucepsa_onpremise}" + +MACHINE_MAP_JSON="${ + SHOPFLOOR_MACHINE_MAP_JSON:- + {"52":"CORT-00","53":"CORT-01","54":"CORT-02"} +}" + +OUTPUT="${ + SHOPFLOOR_SYNC_OUTPUT:- + /tmp/ucepsa_odoo_shopfloor_session_sync.jsonl +}" cd "$ROOT" @@ -17,30 +36,40 @@ image() { --format '{{.Config.Image}}' } +docker_common_args=( + --network "$NETWORK" + --env-file .env + -e ODOO_DB_OVERRIDE=ucepsa_prod + -e TENANT_OVERRIDE="$TENANT" + -e SITE_OVERRIDE="$SITE" + -e SHOPFLOOR_MACHINE_MAP_JSON="$MACHINE_MAP_JSON" + -v "$ROOT:/app:ro" + -w /app + --entrypoint python +) + start_sync() { local sync_image sync_image="$(image)" - docker rm -f "$CONTAINER" >/dev/null 2>&1 || true + docker rm -f "$CONTAINER" \ + >/dev/null 2>&1 || true docker run -d \ --name "$CONTAINER" \ --restart unless-stopped \ - --network "$NETWORK" \ - --env-file .env \ - -e ODOO_DB_OVERRIDE=ucepsa_prod \ - -v "$ROOT:/app:ro" \ + "${docker_common_args[@]}" \ -v /tmp:/probe-output \ - -w /app \ - --entrypoint python \ "$sync_image" \ tools/odoo_shopfloor_session_sync.py \ --watch \ --interval "$INTERVAL" \ --lookback-hours "$LOOKBACK" \ - --output "/probe-output/$(basename "$OUTPUT")" + --output \ + "/probe-output/$(basename "$OUTPUT")" - docker ps --format 'table {{.Names}}\t{{.Status}}' \ + docker ps \ + --format 'table {{.Names}}\t{{.Status}}' \ | grep -E "$CONTAINER|NAMES" } @@ -49,12 +78,7 @@ one_shot() { sync_image="$(image)" docker run --rm -i \ - --network "$NETWORK" \ - --env-file .env \ - -e ODOO_DB_OVERRIDE=ucepsa_prod \ - -v "$ROOT:/app:ro" \ - -w /app \ - --entrypoint python \ + "${docker_common_args[@]}" \ "$sync_image" \ tools/odoo_shopfloor_session_sync.py \ --once \ @@ -66,12 +90,7 @@ dry_run_known() { sync_image="$(image)" docker run --rm -i \ - --network "$NETWORK" \ - --env-file .env \ - -e ODOO_DB_OVERRIDE=ucepsa_prod \ - -v "$ROOT:/app:ro" \ - -w /app \ - --entrypoint python \ + "${docker_common_args[@]}" \ "$sync_image" \ tools/odoo_shopfloor_session_sync.py \ --once \ @@ -85,12 +104,7 @@ backfill_known() { sync_image="$(image)" docker run --rm -i \ - --network "$NETWORK" \ - --env-file .env \ - -e ODOO_DB_OVERRIDE=ucepsa_prod \ - -v "$ROOT:/app:ro" \ - -w /app \ - --entrypoint python \ + "${docker_common_args[@]}" \ "$sync_image" \ tools/odoo_shopfloor_session_sync.py \ --once \ @@ -102,31 +116,43 @@ case "$ACTION" in start) start_sync ;; + stop) docker stop "$CONTAINER" ;; + restart) - docker rm -f "$CONTAINER" >/dev/null 2>&1 || true + docker rm -f "$CONTAINER" \ + >/dev/null 2>&1 || true start_sync ;; + status) - docker ps -a --format 'table {{.Names}}\t{{.Status}}' \ + docker ps -a \ + --format 'table {{.Names}}\t{{.Status}}' \ | grep -E "$CONTAINER|NAMES" ;; + logs) docker logs --tail 200 -f "$CONTAINER" ;; + once) one_shot ;; + dry-run-known) dry_run_known ;; + backfill-known) backfill_known ;; + *) - echo "Uso: $0 {start|stop|restart|status|logs|once|dry-run-known|backfill-known}" >&2 + echo \ + "Uso: $0 {start|stop|restart|status|logs|once|dry-run-known|backfill-known}" \ + >&2 exit 2 ;; esac diff --git a/ucepsa/edge-oee-demo/tools/odoo_shopfloor_session_admin.py b/ucepsa/edge-oee-demo/tools/odoo_shopfloor_session_admin.py index e1fd274..9f16801 100644 --- a/ucepsa/edge-oee-demo/tools/odoo_shopfloor_session_admin.py +++ b/ucepsa/edge-oee-demo/tools/odoo_shopfloor_session_admin.py @@ -44,11 +44,11 @@ def connect_pg(): def tenant_site() -> tuple[str, str]: return ( - env_first("TENANT", "TENANT_OVERRIDE", default="ucepsa") + env_first("TENANT_OVERRIDE", "TENANT", default="ucepsa") or "ucepsa", env_first( - "SITE", "SITE_OVERRIDE", + "SITE", default="ucepsa_onpremise", ) or "ucepsa_onpremise", diff --git a/ucepsa/edge-oee-demo/tools/odoo_shopfloor_session_sync.py b/ucepsa/edge-oee-demo/tools/odoo_shopfloor_session_sync.py index a74a015..d8644e8 100644 --- a/ucepsa/edge-oee-demo/tools/odoo_shopfloor_session_sync.py +++ b/ucepsa/edge-oee-demo/tools/odoo_shopfloor_session_sync.py @@ -162,11 +162,11 @@ def load_config() -> Config: ) return Config( - tenant=env_first("TENANT", "TENANT_OVERRIDE", default="ucepsa") + tenant=env_first("TENANT_OVERRIDE", "TENANT", default="ucepsa") or "ucepsa", site=env_first( - "SITE", "SITE_OVERRIDE", + "SITE", default="ucepsa_onpremise", ) or "ucepsa_onpremise",