Move timeout into _sudo helper instead of each call site
All checks were successful
Build-Publish / build (linux/amd64) (push) Successful in 4s
Build-Publish / build (linux/arm64) (push) Successful in 13s
Build-Publish / create-manifest (push) Successful in 1s
Build-Publish / publish-template (push) Successful in 8s

This commit is contained in:
j
2026-03-08 21:36:34 +13:00
parent b997ff4852
commit 0fec0e1b3b

View File

@@ -223,15 +223,15 @@ gather_container_stats() {
# Use sudo if available and needed (infmap user won't have direct access) # Use sudo if available and needed (infmap user won't have direct access)
_sudo() { _sudo() {
if [ "$(id -u)" -eq 0 ]; then if [ "$(id -u)" -eq 0 ]; then
"$@" timeout 10 "$@"
else else
sudo -n "$@" 2>/dev/null timeout 10 sudo -n "$@" 2>/dev/null
fi fi
} }
# Proxmox LXC (pct) # Proxmox LXC (pct)
if command -v pct &>/dev/null; then if command -v pct &>/dev/null; then
timeout 10 _sudo pct list 2>/dev/null | tail -n +2 | while read -r line; do _sudo pct list 2>/dev/null | tail -n +2 | while read -r line; do
[ -z "$line" ] && continue [ -z "$line" ] && continue
vmid=$(echo "$line" | awk '{print $1}') vmid=$(echo "$line" | awk '{print $1}')
status=$(echo "$line" | awk '{print $2}') status=$(echo "$line" | awk '{print $2}')
@@ -250,7 +250,7 @@ fi
# Proxmox VMs (qm) # Proxmox VMs (qm)
if command -v qm &>/dev/null; then if command -v qm &>/dev/null; then
timeout 10 _sudo qm list 2>/dev/null | tail -n +2 | while read -r vmid name status _ mem _; do _sudo qm list 2>/dev/null | tail -n +2 | while read -r vmid name status _ mem _; do
[ -z "$vmid" ] && continue [ -z "$vmid" ] && continue
echo "[container:qm-${vmid}]" echo "[container:qm-${vmid}]"
echo "type=vm" echo "type=vm"
@@ -271,7 +271,7 @@ fi
# Plain LXC (lxc/lxd) # Plain LXC (lxc/lxd)
if command -v lxc &>/dev/null && ! command -v pct &>/dev/null; then if command -v lxc &>/dev/null && ! command -v pct &>/dev/null; then
timeout 10 _sudo lxc list --format csv -c nsN 2>/dev/null | while IFS=',' read -r name status network; do _sudo lxc list --format csv -c nsN 2>/dev/null | while IFS=',' read -r name status network; do
[ -z "$name" ] && continue [ -z "$name" ] && continue
echo "[container:lxc-${name}]" echo "[container:lxc-${name}]"
echo "type=lxc" echo "type=lxc"
@@ -288,7 +288,7 @@ fi
# libvirt VMs (virsh) # libvirt VMs (virsh)
if command -v virsh &>/dev/null; then if command -v virsh &>/dev/null; then
timeout 10 _sudo virsh list --all --name 2>/dev/null | while read -r name; do _sudo virsh list --all --name 2>/dev/null | while read -r name; do
[ -z "$name" ] && continue [ -z "$name" ] && continue
state=$(_sudo virsh domstate "$name" 2>/dev/null | head -1) state=$(_sudo virsh domstate "$name" 2>/dev/null | head -1)
echo "[container:virsh-${name}]" echo "[container:virsh-${name}]"
@@ -305,7 +305,7 @@ fi
# Docker containers # Docker containers
if command -v docker &>/dev/null; then if command -v docker &>/dev/null; then
timeout 10 _sudo docker ps -a --format '{{.Names}}\t{{.State}}\t{{.Image}}\t{{.Status}}' 2>/dev/null | while IFS=$'\t' read -r name state image status_text; do _sudo docker ps -a --format '{{.Names}}\t{{.State}}\t{{.Image}}\t{{.Status}}' 2>/dev/null | while IFS=$'\t' read -r name state image status_text; do
[ -z "$name" ] && continue [ -z "$name" ] && continue
echo "[container:docker-${name}]" echo "[container:docker-${name}]"
echo "type=docker" echo "type=docker"
@@ -319,7 +319,7 @@ if command -v docker &>/dev/null; then
docker_ip=$(_sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$name" 2>/dev/null) docker_ip=$(_sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$name" 2>/dev/null)
[ -n "$docker_ip" ] && echo "ip=$docker_ip" [ -n "$docker_ip" ] && echo "ip=$docker_ip"
# Get memory/cpu stats (one-shot, no stream) # Get memory/cpu stats (one-shot, no stream)
stats=$(timeout 5 _sudo docker stats --no-stream --format '{{.MemUsage}}\t{{.MemPerc}}\t{{.CPUPerc}}' "$name" 2>/dev/null) stats=$(_sudo docker stats --no-stream --format '{{.MemUsage}}\t{{.MemPerc}}\t{{.CPUPerc}}' "$name" 2>/dev/null)
if [ -n "$stats" ]; then if [ -n "$stats" ]; then
mem_pct=$(echo "$stats" | cut -f2 | tr -d '%') mem_pct=$(echo "$stats" | cut -f2 | tr -d '%')
cpu_pct=$(echo "$stats" | cut -f3 | tr -d '%') cpu_pct=$(echo "$stats" | cut -f3 | tr -d '%')