From 0430085c586880b52e982cd8ff84e013c9a677f5 Mon Sep 17 00:00:00 2001 From: Melvin Hillsman Date: Wed, 20 May 2026 00:51:36 -0500 Subject: [PATCH] fix: add validation and logging to entrypoint.sh Add command validation, operational logging, and document variable handling constraints in entrypoint.sh to improve debuggability and prevent silent failures in pod deployments. Changes: - Validate VIRTWORK_COMMAND is 'run' or 'cleanup', exit with error otherwise - Log command being executed before exec for debugging pod startup - Add shellcheck disable comment for intentional unquoted expansion - Document VIRTWORK_ARGS constraint: must be space-delimited tokens - Add [entrypoint] prefix to all log messages for clarity VIRTWORK_ARGS remains unquoted to enable space-delimited tokenization (e.g., "--workloads cpu,memory --vm-count 2"). This means argument values cannot contain spaces. This constraint is acceptable for container environment variables and is now documented. Fixes #12 Signed-off-by: Melvin Hillsman --- entrypoint.sh | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 7261ac1..bb6f6aa 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,9 +1,26 @@ #!/bin/sh set -e +# VIRTWORK_ARGS is intentionally left unquoted to allow space-delimited +# tokenization (e.g., "--workloads cpu,memory --vm-count 2"). +# This means argument values CANNOT contain spaces. +# Do not pass: VIRTWORK_ARGS='--namespace "my namespace"' +# Instead use: VIRTWORK_ARGS='--namespace my-namespace' + if [ -n "$VIRTWORK_COMMAND" ]; then - exec /usr/local/bin/virtwork $VIRTWORK_COMMAND $VIRTWORK_ARGS + # Validate command + case "$VIRTWORK_COMMAND" in + run|cleanup) + echo "[entrypoint] Executing: virtwork $VIRTWORK_COMMAND $VIRTWORK_ARGS" + # shellcheck disable=SC2086 + exec /usr/local/bin/virtwork "$VIRTWORK_COMMAND" $VIRTWORK_ARGS + ;; + *) + echo "[entrypoint] ERROR: Invalid VIRTWORK_COMMAND='$VIRTWORK_COMMAND'. Must be 'run' or 'cleanup'." >&2 + exit 1 + ;; + esac else - echo "No VIRTWORK_COMMAND set. Pod will sleep. Use 'oc exec' to run virtwork manually." + echo "[entrypoint] No VIRTWORK_COMMAND set. Pod will sleep. Use 'oc exec' to run virtwork manually." exec sleep infinity fi