mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-09-28 07:07:17 +02:00
Include full log in error telemetry
Use get_full_log (up to 120KB) to populate the error telemetry field so the API receives the full installation trace; fall back to get_error_text (last ~20 lines) if the full log is empty. Removed collection and inclusion of a separate install_log field from the JSON payloads and simplified the retry payloads/comments accordingly. The change ensures error reports contain the complete trace while avoiding duplicate large log fields and keeps graceful failure handling (get_full_log || true).
This commit is contained in:
+14
-26
@@ -357,7 +357,7 @@ get_error_text() {
|
|||||||
# - Calls ensure_log_on_host() to pull container log if needed
|
# - Calls ensure_log_on_host() to pull container log if needed
|
||||||
# - Strips ANSI escape codes and carriage returns
|
# - Strips ANSI escape codes and carriage returns
|
||||||
# - Truncates to max_bytes (default: 120KB) to stay within API limits
|
# - Truncates to max_bytes (default: 120KB) to stay within API limits
|
||||||
# - Used for the install_log telemetry field
|
# - Used for the error telemetry field (full trace instead of 20 lines)
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
get_full_log() {
|
get_full_log() {
|
||||||
local max_bytes="${1:-122880}" # 120KB default
|
local max_bytes="${1:-122880}" # 120KB default
|
||||||
@@ -830,11 +830,15 @@ post_update_to_api() {
|
|||||||
else
|
else
|
||||||
exit_code=1
|
exit_code=1
|
||||||
fi
|
fi
|
||||||
# Get log lines and build structured error string
|
# Get full installation log for error field
|
||||||
local error_text=""
|
local log_text=""
|
||||||
error_text=$(get_error_text)
|
log_text=$(get_full_log 122880) || true # 120KB max
|
||||||
|
if [[ -z "$log_text" ]]; then
|
||||||
|
# Fallback to last 20 lines
|
||||||
|
log_text=$(get_error_text)
|
||||||
|
fi
|
||||||
local full_error
|
local full_error
|
||||||
full_error=$(build_error_string "$exit_code" "$error_text")
|
full_error=$(build_error_string "$exit_code" "$log_text")
|
||||||
error=$(json_escape "$full_error")
|
error=$(json_escape "$full_error")
|
||||||
short_error=$(json_escape "$(explain_exit_code "$exit_code")")
|
short_error=$(json_escape "$(explain_exit_code "$exit_code")")
|
||||||
error_category=$(categorize_error "$exit_code")
|
error_category=$(categorize_error "$exit_code")
|
||||||
@@ -855,16 +859,7 @@ post_update_to_api() {
|
|||||||
|
|
||||||
local http_code=""
|
local http_code=""
|
||||||
|
|
||||||
# Collect full installation log for telemetry (all statuses)
|
# ── Attempt 1: Full payload with complete error text (includes full log) ──
|
||||||
local install_log_raw=""
|
|
||||||
local install_log_escaped=""
|
|
||||||
local install_log_short=""
|
|
||||||
install_log_raw=$(get_full_log 122880) || true # 120KB max
|
|
||||||
if [[ -n "$install_log_raw" ]]; then
|
|
||||||
install_log_escaped=$(json_escape "$install_log_raw")
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ── Attempt 1: Full payload with complete error text + full install log ──
|
|
||||||
local JSON_PAYLOAD
|
local JSON_PAYLOAD
|
||||||
JSON_PAYLOAD=$(
|
JSON_PAYLOAD=$(
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
@@ -892,8 +887,7 @@ post_update_to_api() {
|
|||||||
"gpu_model": "${gpu_model}",
|
"gpu_model": "${gpu_model}",
|
||||||
"gpu_passthrough": "${gpu_passthrough}",
|
"gpu_passthrough": "${gpu_passthrough}",
|
||||||
"ram_speed": "${ram_speed}",
|
"ram_speed": "${ram_speed}",
|
||||||
"repo_source": "${REPO_SOURCE}",
|
"repo_source": "${REPO_SOURCE}"
|
||||||
"install_log": "${install_log_escaped}"
|
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
@@ -907,13 +901,8 @@ EOF
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── Attempt 2: Short error text + truncated install log ──
|
# ── Attempt 2: Short error text (no full log) ──
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
# Truncate install_log for retry (last 100 lines)
|
|
||||||
if [[ -n "$install_log_raw" ]]; then
|
|
||||||
install_log_short=$(json_escape "$(echo "$install_log_raw" | tail -n 100)")
|
|
||||||
fi
|
|
||||||
local RETRY_PAYLOAD
|
local RETRY_PAYLOAD
|
||||||
RETRY_PAYLOAD=$(
|
RETRY_PAYLOAD=$(
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
@@ -941,8 +930,7 @@ EOF
|
|||||||
"gpu_model": "${gpu_model}",
|
"gpu_model": "${gpu_model}",
|
||||||
"gpu_passthrough": "${gpu_passthrough}",
|
"gpu_passthrough": "${gpu_passthrough}",
|
||||||
"ram_speed": "${ram_speed}",
|
"ram_speed": "${ram_speed}",
|
||||||
"repo_source": "${REPO_SOURCE}",
|
"repo_source": "${REPO_SOURCE}"
|
||||||
"install_log": "${install_log_short}"
|
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
@@ -956,7 +944,7 @@ EOF
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── Attempt 3: Minimal payload (bare minimum to set status, no install_log) ──
|
# ── Attempt 3: Minimal payload (bare minimum to set status) ──
|
||||||
sleep 2
|
sleep 2
|
||||||
local MINIMAL_PAYLOAD
|
local MINIMAL_PAYLOAD
|
||||||
MINIMAL_PAYLOAD=$(
|
MINIMAL_PAYLOAD=$(
|
||||||
|
|||||||
Reference in New Issue
Block a user