mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-22 11:10:33 +00:00
When every cluster endpoint failed health, getHealthyClient wrapped the failure as `no healthy nodes available in cluster X (all N endpoints unreachable: [...])`, dropping the per-endpoint reason from cc.lastError. The connections aggregator's auth-error regex (401/403/unauthorized/forbidden/authentication/...) only sees the outer message, so a token rejected with 401 on every endpoint of a clustered PVE connection surfaced as `state: "unreachable"` / `adapterHealth: "blocked"` instead of `state: "unauthorized"` / `credentialStatus: "invalid"` — the same Settings → Connections brokenness the rest of today's commits set out to remove. Single-node `pve:pi` already classified the same kind of failure correctly because its error came straight from the per-instance client; only the cluster wrapper masked it. Surface each unhealthy endpoint's already-sanitized reason in the outer error. The "no healthy nodes available" prefix is preserved so existing callers that test for it (monitor_polling_storage.go, internal cluster_client passthroughs, existing tests) keep working. Add a regression test covering both shapes: - all endpoints failed auth → wrapped error contains "Authentication failed" so the aggregator regex now matches. - endpoint with no recorded reason → wrapped error includes the fallback "no recorded reason" text rather than a bare URL. |
||
|---|---|---|
| .. | ||
| agents | ||
| aicontracts | ||
| audit | ||
| auth | ||
| cloudauth | ||
| db | ||
| discovery | ||
| extensions | ||
| fsfilters | ||
| licensing | ||
| metrics | ||
| pbs | ||
| pmg | ||
| proxmox | ||
| pulsecli | ||
| reporting | ||
| securityutil | ||
| server | ||
| tlsutil | ||