fix(api): handle missing RAM speed in nested VMs (#11913)

- Add || true to dmidecode pipelines to prevent error when speed is 'Unknown'
- Validate RAM_SPEED is a valid integer, fallback to 0
- Send ram_speed as integer (not string) in all JSON payloads for PocketBase

Fixes: dmidecode in nested VMs returns 'Configured Memory Speed: Unknown'
which causes grep to fail and triggers catch_errors handler.
This commit is contained in:
CanbiZ (MickLesk)
2026-02-14 23:33:51 +01:00
committed by GitHub
parent da915b87f6
commit 240f1f391f

View File

@@ -407,14 +407,19 @@ detect_ram() {
if command -v dmidecode &>/dev/null; then
# Get configured memory speed (actual running speed)
RAM_SPEED=$(dmidecode -t memory 2>/dev/null | grep -m1 "Configured Memory Speed:" | grep -oE "[0-9]+" | head -1)
RAM_SPEED=$(dmidecode -t memory 2>/dev/null | grep -m1 "Configured Memory Speed:" | grep -oE "[0-9]+" | head -1 || true)
# Fallback to Speed: if Configured not available
if [[ -z "$RAM_SPEED" ]]; then
RAM_SPEED=$(dmidecode -t memory 2>/dev/null | grep -m1 "Speed:" | grep -oE "[0-9]+" | head -1)
RAM_SPEED=$(dmidecode -t memory 2>/dev/null | grep -m1 "Speed:" | grep -oE "[0-9]+" | head -1 || true)
fi
fi
# Ensure RAM_SPEED is a valid integer (PocketBase stores it as integer)
if [[ -z "$RAM_SPEED" || ! "$RAM_SPEED" =~ ^[0-9]+$ ]]; then
RAM_SPEED=0
fi
export RAM_SPEED
}
@@ -509,7 +514,7 @@ post_to_api() {
"gpu_vendor": "${gpu_vendor}",
"gpu_model": "${gpu_model}",
"gpu_passthrough": "${gpu_passthrough}",
"ram_speed": "${ram_speed}",
"ram_speed": ${ram_speed:-0},
"repo_source": "${REPO_SOURCE}"
}
EOF
@@ -613,7 +618,7 @@ post_to_api_vm() {
"gpu_vendor": "${gpu_vendor}",
"gpu_model": "${gpu_model}",
"gpu_passthrough": "${gpu_passthrough}",
"ram_speed": "${ram_speed}",
"ram_speed": ${ram_speed:-0},
"repo_source": "${REPO_SOURCE}"
}
EOF
@@ -747,7 +752,7 @@ post_update_to_api() {
"gpu_vendor": "${gpu_vendor}",
"gpu_model": "${gpu_model}",
"gpu_passthrough": "${gpu_passthrough}",
"ram_speed": "${ram_speed}",
"ram_speed": ${ram_speed:-0},
"repo_source": "${REPO_SOURCE}"
}
EOF
@@ -789,7 +794,7 @@ EOF
"gpu_vendor": "${gpu_vendor}",
"gpu_model": "${gpu_model}",
"gpu_passthrough": "${gpu_passthrough}",
"ram_speed": "${ram_speed}",
"ram_speed": ${ram_speed:-0},
"repo_source": "${REPO_SOURCE}"
}
EOF
@@ -886,7 +891,7 @@ categorize_error() {
# Signal/Process errors (SIGTERM, SIGPIPE, SIGSEGV)
139 | 141 | 143) echo "signal" ;;
# Shell errors (general error, syntax error)
# Shell errors (general error, syntax error)
1 | 2) echo "shell" ;;
# Default - truly unknown