mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-09-29 18:16:43 +00:00
ProxMenux 1.2.6.2-beta: OCI containers in the Monitor, docs and fixes
OCI manager Apps - App tab: containers installed from an OCI image are identified from their installation record; the application and image versions are shown and an update is detected by image digest; repository link; Refresh data. - Updates tab for OCI containers: Update and Recreate run the same flow as the OCI menu in the Monitor terminal; the pre-update backup can be kept in a backup storage; scheduled image updates with an optional minimum age. - Logs tab: console output of the application, kept on the host (lxc.console.logfile + logrotate) and followed live. - The Proxmox console opens a shell (cmode: shell) when the image has one. - A damaged image download is fetched again before failing. - Multi-container applications open at their LAN address; volume mount points on block storage report their usage. Monitor - Proxmox notifications are delivered to a loopback-only HTTP listener when HTTPS is enabled, so they no longer fail certificate verification. - Log persistence counts recurring patterns only; an ended burst is not reported as persistent and its warning clears on its own (#386). - Proxmox notification config backups are deduplicated and capped at three. - The update icon on the Apps page opens the container on its Updates tab. - Version 1.2.6.2-beta and its release notes in every Monitor language. Docs - OCI manager Apps and Audit & Report rebuilt as per-page message files, with a new page for OCI containers in the Monitor. - Seven pages fixed where rich-text tags were missing from t.rich. Translations - Spanish fixes across the OCI engine, the Monitor and the TUI menus. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
386d33df6e
commit
4437a671d2
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
TEST_ROOT=$(mktemp -d)
|
||||
trap 'rm -rf "$TEST_ROOT"' EXIT
|
||||
|
||||
export PROXMENUX_SYSFS_ROOT="$TEST_ROOT/sys"
|
||||
export PROXMENUX_ETC_ROOT="$TEST_ROOT/etc"
|
||||
export PROXMENUX_STATE_ROOT="$TEST_ROOT/usr/local/share/proxmenux"
|
||||
export PROXMENUX_VFIO_BIND_STATE="$PROXMENUX_ETC_ROOT/proxmenux/vfio-bind.bdfs"
|
||||
export PROXMENUX_VFIO_BIND_UDEV_RULE="$PROXMENUX_ETC_ROOT/udev/rules.d/10-proxmenux-vfio-bind.rules"
|
||||
export PROXMENUX_VFIO_CONF="$PROXMENUX_ETC_ROOT/modprobe.d/vfio.conf"
|
||||
export PROXMENUX_NVIDIA_VFIO_BLACKLIST="$PROXMENUX_ETC_ROOT/modprobe.d/proxmenux-nvidia-vfio-blacklist.conf"
|
||||
export PROXMENUX_NVIDIA_SERVICE_STATE="$PROXMENUX_STATE_ROOT/nvidia-host-services.state"
|
||||
export PROXMENUX_NVIDIA_SERVICE_LEGACY_STATE="$TEST_ROOT/var/lib/proxmenux/nvidia-host-services.state"
|
||||
export PROXMENUX_VFIO_BIND_LEGACY_HOOK="$PROXMENUX_ETC_ROOT/initramfs-tools/scripts/init-top/proxmenux-vfio-bind"
|
||||
export SYSTEMCTL_LOG="$TEST_ROOT/systemctl.log"
|
||||
|
||||
mkdir -p "$PROXMENUX_SYSFS_ROOT/bus/pci/devices" "$PROXMENUX_ETC_ROOT/modprobe.d" "$TEST_ROOT/bin"
|
||||
|
||||
# The policy helper manages systemd services on a real host. Unit tests must
|
||||
# never touch them, so provide an inert command before sourcing the helper.
|
||||
cat > "$TEST_ROOT/bin/systemctl" <<'EOF'
|
||||
#!/usr/bin/env bash
|
||||
case "${1:-}" in
|
||||
is-enabled|is-active) exit 1 ;;
|
||||
*) printf '%s\n' "$*" >> "$SYSTEMCTL_LOG"; exit 0 ;;
|
||||
esac
|
||||
EOF
|
||||
chmod +x "$TEST_ROOT/bin/systemctl"
|
||||
export PATH="$TEST_ROOT/bin:$PATH"
|
||||
|
||||
make_pci_device() {
|
||||
local bdf="$1" vendor="$2" device="$3" class="$4"
|
||||
local path="$PROXMENUX_SYSFS_ROOT/bus/pci/devices/$bdf"
|
||||
mkdir -p "$path"
|
||||
printf '0x%s\n' "$vendor" > "$path/vendor"
|
||||
printf '0x%s\n' "$device" > "$path/device"
|
||||
printf '0x%s\n' "$class" > "$path/class"
|
||||
}
|
||||
|
||||
# Two identical NVIDIA GPUs reproduce the collision that vendor:device
|
||||
# binding caused: both share 10de:2484 but must be independently reversible.
|
||||
make_pci_device 0000:01:00.0 10de 2484 030000
|
||||
make_pci_device 0000:01:00.1 10de 228b 040300
|
||||
make_pci_device 0000:02:00.0 10de 2484 030000
|
||||
make_pci_device 0000:02:00.1 10de 228b 040300
|
||||
make_pci_device 0000:00:1f.3 8086 7ad0 040300
|
||||
|
||||
cat > "$PROXMENUX_VFIO_CONF" <<'EOF'
|
||||
options vfio-pci ids=10DE:2484,10DE:228B,8086:7ad0 disable_vga=1
|
||||
EOF
|
||||
|
||||
HOST_CONFIG_CHANGED=false
|
||||
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||
# shellcheck source=../../global/pci_passthrough_helpers.sh
|
||||
source "$SCRIPT_DIR/../../global/pci_passthrough_helpers.sh"
|
||||
|
||||
_proxmenux_vfio_bind_migrate_legacy_nvidia_ids
|
||||
|
||||
grep -qxF '0000:01:00.0' "$PROXMENUX_VFIO_BIND_STATE"
|
||||
grep -qxF '0000:01:00.1' "$PROXMENUX_VFIO_BIND_STATE"
|
||||
grep -qxF '0000:02:00.0' "$PROXMENUX_VFIO_BIND_STATE"
|
||||
grep -qxF '0000:02:00.1' "$PROXMENUX_VFIO_BIND_STATE"
|
||||
grep -q 'ids=8086:7ad0' "$PROXMENUX_VFIO_CONF"
|
||||
! grep -qi '10de:2484' "$PROXMENUX_VFIO_CONF"
|
||||
! grep -qi '10de:228b' "$PROXMENUX_VFIO_CONF"
|
||||
_proxmenux_all_nvidia_in_vfio
|
||||
[[ -f "$PROXMENUX_NVIDIA_VFIO_BLACKLIST" ]]
|
||||
|
||||
# Returning only one GPU to the host must keep the other exact BDF in VFIO,
|
||||
# remove the global NVIDIA blacklist, retain NVIDIA softdeps, and restore any
|
||||
# service state captured by the short-lived /var/lib implementation.
|
||||
mkdir -p "$(dirname "$PROXMENUX_NVIDIA_SERVICE_LEGACY_STATE")"
|
||||
printf '%s\n' 'nvidia-persistenced.service enabled=1 active=1' \
|
||||
> "$PROXMENUX_NVIDIA_SERVICE_LEGACY_STATE"
|
||||
_proxmenux_vfio_bind_remove_bdfs 0000:01:00.0 0000:01:00.1
|
||||
! _proxmenux_vfio_bind_has_bdf 0000:01:00.0
|
||||
! _proxmenux_vfio_bind_has_bdf 0000:01:00.1
|
||||
_proxmenux_vfio_bind_has_bdf 0000:02:00.0
|
||||
_proxmenux_vfio_bind_has_bdf 0000:02:00.1
|
||||
! _proxmenux_all_nvidia_in_vfio
|
||||
[[ ! -e "$PROXMENUX_NVIDIA_VFIO_BLACKLIST" ]]
|
||||
grep -qFx 'softdep nvidia pre: vfio-pci' "$PROXMENUX_VFIO_CONF"
|
||||
[[ ! -e "$PROXMENUX_NVIDIA_SERVICE_LEGACY_STATE" ]]
|
||||
[[ ! -e "$PROXMENUX_NVIDIA_SERVICE_STATE" ]]
|
||||
grep -qFx 'enable nvidia-persistenced.service' "$SYSTEMCTL_LOG"
|
||||
grep -qFx 'start nvidia-persistenced.service' "$SYSTEMCTL_LOG"
|
||||
|
||||
# Returning the final NVIDIA GPU removes the remaining per-BDF policy while
|
||||
# leaving unrelated Intel VFIO configuration untouched.
|
||||
_proxmenux_vfio_bind_remove_bdfs 0000:02:00.0 0000:02:00.1
|
||||
! _proxmenux_vfio_bind_has_entries
|
||||
! grep -qFx 'softdep nvidia pre: vfio-pci' "$PROXMENUX_VFIO_CONF"
|
||||
grep -q 'ids=8086:7ad0' "$PROXMENUX_VFIO_CONF"
|
||||
|
||||
echo "PASS: NVIDIA per-BDF migration and selective restore"
|
||||
Reference in New Issue
Block a user