[docs]class SSHException(Exception):
"""Generic exception for jumpssh
Allow to chain exceptions keeping track of origin exception
"""
def __init__(self, msg, original_exception=None):
message = msg
if original_exception:
message += ": %s" % original_exception
super(SSHException, self).__init__(message)
self.__cause__ = original_exception
self.__suppress_context__ = True
[docs]class ConnectionError(SSHException):
"""Exception raised when unable to establish SSHSession with remote host"""
pass
[docs]class TimeoutError(SSHException):
"""Exception raised when remote command execution reached specified timeout"""
pass
[docs]class RestClientError(SSHException):
"""Exception raised when error occurs during rest ssh calls"""
pass
[docs]class RunCmdError(SSHException):
"""Exception raised when remote command return a non success exit code
:ivar int exit_code: The exit code from the run command.
:ivar list(int): List of expected success exit codes for run command.
:ivar str command: The command that is generating this exception.
:ivar str error: The error captured from the command output.
"""
def __init__(self, exit_code, success_exit_code, command, error, runs_nb=1):
message = 'Command (%s) returned exit status (%s), expected [%s]' \
% (command, exit_code, ','.join(map(str, success_exit_code)))
if runs_nb > 1:
message += " after %s runs" % runs_nb
if error:
message += ": %s" % error
super(RunCmdError, self).__init__(message)
self.exit_code = exit_code
self.success_exit_code = success_exit_code
self.command = command
self.error = error
self.runs_nb = runs_nb