Skip to content

v0.3.0

Choose a tag to compare

@mikeckennedy mikeckennedy released this 12 Nov 18:44
· 6 commits to main since this release

Added

  • Added --debug CLI flag to enable verbose output for diagnosing SSH and command execution issues
  • New run_command_with_debug() helper function that captures both stdout and stderr from subprocess commands
  • Debug mode displays stderr output in real-time (in yellow) when it occurs
  • Error messages now include full stdout/stderr output when debug mode is enabled
  • Performance optimization: Integrated Paramiko library for persistent SSH connections
  • Added paramiko>=3.5.0 as a dependency
  • New SSH connection management functions: get_ssh_client(), close_ssh_client(), and run_ssh_command()
  • SSH connections now persist across multiple command executions instead of reconnecting for each command
  • Files: dockerclustermon/__init__.py, pyproject.toml

Changed

  • Replaced subprocess.check_output() with subprocess.run() for better error handling and stderr capture
  • Updated run_free_command(), run_stat_command(), and run_ps_command() to use new debug helper
  • Major performance improvement: Refactored SSH command execution to use persistent connections via Paramiko
  • Modified run_command_with_debug() to support both local subprocess execution and remote SSH execution
  • Updated run_free_command(), run_stat_command(), and run_ps_command() to accept optional SSH client parameter
  • Modified run_update() to create and reuse a single SSH connection for all three commands
  • SSH connection is now established once and reused for docker ps, docker stats, and free commands
  • This eliminates the overhead of creating 3 separate SSH connections on every refresh cycle
  • Files: dockerclustermon/__init__.py

Fixed

  • Fixed timeout handling to prevent indefinite hanging when SSH connections timeout or fail
  • Added timeout to thread join operations (timeout + 5 seconds buffer) in run_update()
  • All command functions (run_stat_command, run_ps_command, run_free_command) now properly catch TimeoutExpired exceptions
  • Improved debug output to show when threads don't complete within expected timeframe
  • Enhanced SSH connection error handling: Added ConnectionError detection when SSH connection fails or network is down
  • Added specific error handler in build_table() for ConnectionError with user-friendly retry message
  • Prevents fallback to local execution when remote SSH connection fails (would have caused confusing errors)
  • Files: dockerclustermon/__init__.py