Skip to content

Comments

fix(ssh): guard ssh_user extraction against None api_user#62

Open
ry-ops wants to merge 1 commit intoPegaProx:mainfrom
ry-ops:fix/ssh-user-null-fallback
Open

fix(ssh): guard ssh_user extraction against None api_user#62
ry-ops wants to merge 1 commit intoPegaProx:mainfrom
ry-ops:fix/ssh-user-null-fallback

Conversation

@ry-ops
Copy link
Contributor

@ry-ops ry-ops commented Feb 21, 2026

Summary

In 11 places the code derived the SSH username with:

ssh_user = api_user.split('@')[0] if '@' in api_user else api_user

If api_user is None (misconfigured cluster, corrupted DB row, or unexpected API response), the '@' in api_user test raises TypeError and the entire SSH operation fails with an unreadable traceback instead of a meaningful error message.

Fix: Consolidate all 11 occurrences to the null-safe one-liner already used in some newer code paths:

ssh_user = (api_user or 'root').split('@')[0]

This is functionally identical for any non-None string value and falls back to 'root' — the expected Proxmox API user — when the value is absent.

Test plan

  • Configure a cluster with an intentionally blank API user — SSH-dependent operations should fail gracefully with a connection error, not a TypeError
  • Normal SSH operations (node shell, rolling updates, HA checks) continue to work as before

🤖 Generated with Claude Code

In 11 places the code derived the SSH username with:

    ssh_user = api_user.split('@')[0] if '@' in api_user else api_user

If `api_user` is `None` (misconfigured cluster, corrupted DB row, or
unexpected API response) the `'@' in api_user` test raises TypeError and
the entire enclosing SSH operation fails with an unreadable traceback.

Consolidate all occurrences to the null-safe one-liner already used in
some newer code paths:

    ssh_user = (api_user or 'root').split('@')[0]

This is equivalent for any non-None value and falls back to 'root' — the
expected Proxmox API user — when the value is absent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant