From e735ecc993ed7f785608a289f9eceaa04d9034f2 Mon Sep 17 00:00:00 2001 From: MickLesk <47820557+MickLesk@users.noreply.github.com> Date: Thu, 8 Oct 2026 15:03:33 +0200 Subject: [PATCH] Tolerate a missing datacenter.cfg in vm_keyboard_default sed exits 2 when the file is absent; with pipefail and inherit_errexit that killed vm_echo_default_settings and vm_mark_created on hosts and CI mocks without one. --- pve/vm-core.func | 4 ++-- tests/vm-helpers.sh | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pve/vm-core.func b/pve/vm-core.func index 79bd9dd..2eb95b8 100644 --- a/pve/vm-core.func +++ b/pve/vm-core.func @@ -1565,8 +1565,8 @@ vm_prompt_vlan() { vm_keyboard_default() { if [[ -n "${VM_KEYBOARD:-}" ]]; then printf '%s' "$VM_KEYBOARD" - else - sed -n 's/^keyboard: *//p' /etc/pve/datacenter.cfg 2>/dev/null | head -n1 | tr -d '[:space:]' + elif [[ -r /etc/pve/datacenter.cfg ]]; then + sed -n 's/^keyboard: *//p' /etc/pve/datacenter.cfg | head -n1 | tr -d '[:space:]' fi } diff --git a/tests/vm-helpers.sh b/tests/vm-helpers.sh index 23d5238..234e324 100644 --- a/tests/vm-helpers.sh +++ b/tests/vm-helpers.sh @@ -380,6 +380,8 @@ assert_eq "$(vm_keyboard_default)" "de" "VM_KEYBOARD wins over the datacenter" _vm_apply_keyboard assert_contains "$LOG" "qm set 100 --keyboard de" VM_KEYBOARD="" +if ! kb="$(set -eo pipefail; vm_keyboard_default)"; then fail "the lookup must not fail without a datacenter.cfg"; fi +[[ -e /etc/pve/datacenter.cfg ]] || assert_eq "$kb" "" "no datacenter.cfg yields no layout" VM_TIMEZONE=Europe/Berlin assert_eq "$(vm_timezone_default)" "Europe/Berlin" "VM_TIMEZONE" VM_TIMEZONE=Mars/Olympus