Fixes for Vish & Devin's feedback
This commit is contained in:
@@ -152,6 +152,41 @@ def execute(cmd, process_input=None, addl_env=None, check_exit_code=True):
|
||||
return result
|
||||
|
||||
|
||||
def ssh_execute(ssh, cmd, process_input=None,
|
||||
addl_env=None, check_exit_code=True):
|
||||
LOG.debug(_("Running cmd (SSH): %s"), cmd)
|
||||
if addl_env:
|
||||
raise exception.Error("Environment not supported over SSH")
|
||||
|
||||
if process_input:
|
||||
# This is (probably) fixable if we need it...
|
||||
raise exception.Error("process_input not supported over SSH")
|
||||
|
||||
stdin_stream, stdout_stream, stderr_stream = ssh.exec_command(cmd)
|
||||
channel = stdout_stream.channel
|
||||
|
||||
#stdin.write('process_input would go here')
|
||||
#stdin.flush()
|
||||
|
||||
# NOTE(justinsb): This seems suspicious...
|
||||
# ...other SSH clients have buffering issues with this approach
|
||||
stdout = stdout_stream.read()
|
||||
stderr = stderr_stream.read()
|
||||
stdin_stream.close()
|
||||
|
||||
exit_status = channel.recv_exit_status()
|
||||
|
||||
# exit_status == -1 if no exit code was returned
|
||||
if exit_status != -1:
|
||||
LOG.debug(_("Result was %s") % exit_status)
|
||||
if check_exit_code and exit_status != 0:
|
||||
raise exception.ProcessExecutionError(exit_code=exit_status,
|
||||
stdout=stdout,
|
||||
stderr=stderr,
|
||||
cmd=cmd)
|
||||
|
||||
return (stdout, stderr)
|
||||
|
||||
def abspath(s):
|
||||
return os.path.join(os.path.dirname(__file__), s)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user