update cpu checks
This commit is contained in:
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
action="${1:-}"
|
action="${1:-}"
|
||||||
FOLDER='/opt/idssys/ta-proxmenu'
|
FOLDER='/opt/idssys/ta-proxmenu'
|
||||||
VERS='2026.7.25-61'
|
VERS='2026.7.25-63'
|
||||||
|
|
||||||
noupdate=' '
|
noupdate=' '
|
||||||
|
|
||||||
|
|||||||
@@ -202,6 +202,31 @@ raise SystemExit(1)
|
|||||||
' 2>/dev/null
|
' 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TAPM_PULSE_RESOURCE_INSTALLED_FROM_CONFIGS() {
|
||||||
|
local nodes_directory="${1:-/etc/pve/nodes}"
|
||||||
|
local config hostname tags
|
||||||
|
local -a configs
|
||||||
|
|
||||||
|
[[ -d "$nodes_directory" ]] || return 2
|
||||||
|
configs=("$nodes_directory"/*/lxc/*.conf)
|
||||||
|
for config in "${configs[@]}"; do
|
||||||
|
[[ -f "$config" ]] || continue
|
||||||
|
hostname="$(
|
||||||
|
awk -F':[[:space:]]*' '$1 == "hostname" { print $2; exit }' "$config"
|
||||||
|
)"
|
||||||
|
tags="$(
|
||||||
|
awk -F':[[:space:]]*' '$1 == "tags" { print $2; exit }' "$config"
|
||||||
|
)"
|
||||||
|
case "$hostname" in
|
||||||
|
[Pp][Uu][Ll][Ss][Ee]|[Pp][Uu][Ll][Ss][Ee]-[Mm][Oo][Nn][Ii][Tt][Oo][Rr])
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
[[ ";${tags};" == *";pulse;"* ]] && return 0
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
TAPM_PULSE_PROMPT() {
|
TAPM_PULSE_PROMPT() {
|
||||||
local variable="$1"
|
local variable="$1"
|
||||||
local label="$2"
|
local label="$2"
|
||||||
|
|||||||
+37
-9
@@ -1219,11 +1219,30 @@ for guest in json.load(sys.stdin):
|
|||||||
TAPM_QEMU_CPU_MODEL() {
|
TAPM_QEMU_CPU_MODEL() {
|
||||||
local vmid="$1"
|
local vmid="$1"
|
||||||
local node="$2"
|
local node="$2"
|
||||||
|
local config_file
|
||||||
local config_output
|
local config_output
|
||||||
local cpu_model
|
local cpu_model
|
||||||
|
|
||||||
[[ "$vmid" =~ ^[1-9][0-9]{2,8}$ ]] || return 1
|
[[ "$vmid" =~ ^[1-9][0-9]{2,8}$ ]] || return 1
|
||||||
[[ "$node" =~ ^[A-Za-z0-9][A-Za-z0-9._-]{0,62}$ ]] || return 1
|
[[ "$node" =~ ^[A-Za-z0-9][A-Za-z0-9._-]{0,62}$ ]] || return 1
|
||||||
|
config_file="/etc/pve/nodes/${node}/qemu-server/${vmid}.conf"
|
||||||
|
if [[ -r "$config_file" ]]; then
|
||||||
|
cpu_model="$(
|
||||||
|
awk '
|
||||||
|
$1 == "cpu:" {
|
||||||
|
sub(/^[^:]*:[[:space:]]*/, "")
|
||||||
|
print
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
' "$config_file"
|
||||||
|
)" || return 1
|
||||||
|
[[ -n "$cpu_model" ]] || cpu_model='kvm64'
|
||||||
|
printf '%s\n' "$cpu_model"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fall back to the node-aware API if the shared pmxcfs entry is briefly
|
||||||
|
# unavailable, such as while cluster membership is changing.
|
||||||
config_output="$(
|
config_output="$(
|
||||||
pvesh get "/nodes/${node}/qemu/${vmid}/config" \
|
pvesh get "/nodes/${node}/qemu/${vmid}/config" \
|
||||||
--output-format json 2>/dev/null
|
--output-format json 2>/dev/null
|
||||||
@@ -1696,7 +1715,11 @@ FORCE_UPDATE_CHECK() {
|
|||||||
MENU_HEADER() {
|
MENU_HEADER() {
|
||||||
local version_display
|
local version_display
|
||||||
|
|
||||||
LOAD_UPDATE_STATUS
|
# Reuse a settled update result instead of running Git checks on every
|
||||||
|
# arrow-key redraw. Continue refreshing only while the worker is pending.
|
||||||
|
if [[ "$UPDATE_STATUS" == 'unknown' || "$UPDATE_STATUS" == 'checking' ]]; then
|
||||||
|
LOAD_UPDATE_STATUS
|
||||||
|
fi
|
||||||
case "$UPDATE_STATUS" in
|
case "$UPDATE_STATUS" in
|
||||||
behind)
|
behind)
|
||||||
version_display="${idsCL[LightYellow]}${VERS} ** UPDATE AVAILABLE **${idsCL[Default]}"
|
version_display="${idsCL[LightYellow]}${VERS} ** UPDATE AVAILABLE **${idsCL[Default]}"
|
||||||
@@ -1844,12 +1867,8 @@ HOST_SETUP_MENU() {
|
|||||||
labels+=("Detect CPU model for live migrations")
|
labels+=("Detect CPU model for live migrations")
|
||||||
values+=("cpu")
|
values+=("cpu")
|
||||||
|
|
||||||
TAPM_REFRESH_ISO_STORAGES >/dev/null 2>&1 || true
|
# Discover ISO storage only after the VirtIO submenu is selected.
|
||||||
if TAPM_ANY_LOCAL_VIRTIO_ISOS; then
|
labels+=("VirtIO driver downloads")
|
||||||
labels+=("VirtIO driver downloads (local ISOs available)")
|
|
||||||
else
|
|
||||||
labels+=("VirtIO driver downloads")
|
|
||||||
fi
|
|
||||||
values+=("virtio")
|
values+=("virtio")
|
||||||
|
|
||||||
command -v glances >/dev/null 2>&1 &&
|
command -v glances >/dev/null 2>&1 &&
|
||||||
@@ -1881,10 +1900,19 @@ MONITORING_MENU() {
|
|||||||
local -a labels
|
local -a labels
|
||||||
local -a values=("pulse" "rmm" "acronis" "sentinelone" "screenconnect")
|
local -a values=("pulse" "rmm" "acronis" "sentinelone" "screenconnect")
|
||||||
local cluster_resources
|
local cluster_resources
|
||||||
|
local pulse_status
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
cluster_resources="$(pvesh get /cluster/resources --type vm --output-format json 2>/dev/null)"
|
TAPM_PULSE_RESOURCE_INSTALLED_FROM_CONFIGS
|
||||||
TAPM_PULSE_RESOURCE_INSTALLED "$cluster_resources" &&
|
pulse_status=$?
|
||||||
|
if (( pulse_status == 2 )); then
|
||||||
|
cluster_resources="$(
|
||||||
|
pvesh get /cluster/resources --type vm --output-format json 2>/dev/null
|
||||||
|
)"
|
||||||
|
TAPM_PULSE_RESOURCE_INSTALLED "$cluster_resources"
|
||||||
|
pulse_status=$?
|
||||||
|
fi
|
||||||
|
(( pulse_status == 0 )) &&
|
||||||
labels=("Pulse monitoring (installed)") ||
|
labels=("Pulse monitoring (installed)") ||
|
||||||
labels=("Install Pulse monitoring")
|
labels=("Install Pulse monitoring")
|
||||||
|
|
||||||
|
|||||||
@@ -185,6 +185,26 @@ assert_success "untagged default Pulse hostname detected" \
|
|||||||
assert_failure "unrelated resource not detected" \
|
assert_failure "unrelated resource not detected" \
|
||||||
TAPM_PULSE_RESOURCE_INSTALLED '[{"type":"qemu","name":"pulse"}]'
|
TAPM_PULSE_RESOURCE_INSTALLED '[{"type":"qemu","name":"pulse"}]'
|
||||||
|
|
||||||
|
test_pulse_config_detection() {
|
||||||
|
local fixture_root status
|
||||||
|
|
||||||
|
fixture_root="$(mktemp -d /tmp/tapm-pulse-configs.XXXXXX)" || return 1
|
||||||
|
mkdir -p "${fixture_root}/pve1/lxc" || return 1
|
||||||
|
printf '%s\n' \
|
||||||
|
'arch: amd64' \
|
||||||
|
'hostname: Pulse-Monitor' \
|
||||||
|
'memory: 2048' >"${fixture_root}/pve1/lxc/200.conf"
|
||||||
|
TAPM_PULSE_RESOURCE_INSTALLED_FROM_CONFIGS "$fixture_root"
|
||||||
|
status=$?
|
||||||
|
rm -rf -- "$fixture_root"
|
||||||
|
return "$status"
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_success "Pulse LXC detected from shared Proxmox configuration" \
|
||||||
|
test_pulse_config_detection
|
||||||
|
assert_failure "missing Pulse configuration directory is not installed" \
|
||||||
|
TAPM_PULSE_RESOURCE_INSTALLED_FROM_CONFIGS /does/not/exist
|
||||||
|
|
||||||
ha_status=$'quorum OK\nmaster pve1 (active, Sat Jul 25 12:00:00 2026)\nlrm pve1 (active, Sat Jul 25 12:00:00 2026)'
|
ha_status=$'quorum OK\nmaster pve1 (active, Sat Jul 25 12:00:00 2026)\nlrm pve1 (active, Sat Jul 25 12:00:00 2026)'
|
||||||
assert_success "active Proxmox HA detected" TAPM_PULSE_HA_STATUS_ENABLED "$ha_status"
|
assert_success "active Proxmox HA detected" TAPM_PULSE_HA_STATUS_ENABLED "$ha_status"
|
||||||
assert_failure "inactive Proxmox HA rejected" \
|
assert_failure "inactive Proxmox HA rejected" \
|
||||||
|
|||||||
Reference in New Issue
Block a user