* core: add progress; fix exit status
Introduce post_progress_to_api() in alpine-install.func and install.func to send a lightweight, fire-and-forget telemetry ping (HTTP POST) that updates an existing telemetry record to "configuring" when DIAGNOSTICS=yes and RANDOM_UUID is set. The function is non-blocking (curl -m 5, errors ignored) and is invoked during container setup and after OS updates to signal active progress. Also adjust api_exit_script() in build.func to report success (post_update_to_api "done" "0") for cases where the script exited normally but a completion status wasn't posted, instead of reporting failure.
* Safer tools.func load and improved error handling
Replace process-substitution sourcing of tools.func with an explicit curl -> variable -> source via /dev/stdin, adding failure messages and a check that expected functions (e.g. fetch_and_deploy_gh_release) are present (misc/alpine-install.func, misc/install.func). Add categorize_error mapping for exit code 10 -> "config" (misc/api.func). Tweak build.func: minor pipeline formatting and change the ERR trap to capture the actual exit code and only call ensure_log_on_host/post_update on non-zero exits, preventing erroneous failure reporting.
* tools: add data init and auto-reporting to tools and pve section
Introduce telemetry helpers in misc/api.func: _telemetry_report_exit (reports success/failure via post_tool_to_api/post_addon_to_api) and init_tool_telemetry (reads DIAGNOSTICS, starts install timer and installs an EXIT trap to auto-report). Integrate telemetry into many tools/addon and tools/pve scripts by sourcing the remote api.func and calling init_tool_telemetry (guarded with declare -f). Also apply a minor arithmetic formatting tweak in misc/build.func for RECOVERY_ATTEMPT.
✅ Summary of Changes from the Initial Version
🧩 1. Tag-Based Filtering (Core Feature)
New feature: Only restart instances (VMs or containers) that have the mon-restart tag.
This makes monitoring and auto-restart controllable directly from the Proxmox Web UI, without editing scripts or services.
Set via GUI: VM → Options → Tags → mon-restart
Set via CLI: qm set <vmid> -tags mon-restart or pct set <ctid> -tags mon-restart
This is the primary new control mechanism, making the script safer, more flexible, and user-friendly.
🧰 2. Backward-Compatible Exclusion Mechanism
The original feature that lets you exclude instances via CLI arguments is preserved:
bash
Copy
Edit
./ping-instances.sh 101 300
These IDs will always be skipped regardless of tag.
🧠 3. Intelligent Responsiveness Checks
For VMs:
Uses qm guest cmd <id> ping to check responsiveness via the QEMU guest agent.
No longer relies on network-level ping, which can be misleading or blocked.
For containers (CTs):
Uses traditional ping to IP addresses obtained from pct exec, since CTs don’t support QEMU agent.
⛔ 4. Instance Skipping Improvements
Instances are now skipped if:
They are explicitly excluded via CLI.
They are templates.
They are configured with onboot: 0 or missing.
They lack the mon-restart tag, regardless of other status.
🪵 5. Same Logging Behavior
All output continues to go to /var/log/ping-instances.log for persistent tracking.
Verbose messages were added for traceability (e.g., why a VM or CT was skipped).
🎯 Why This Matters
With tag-based control, admins can now manage restart behavior dynamically from the Proxmox Web UI, making the script:
More secure (no accidental restarts).
More maintainable (no script edits needed).
More user-friendly (integrated with the UI workflow).