Fixes for Vish & Devin's feedback

This commit is contained in:
Justin Santa Barbara
2011-02-04 13:07:17 -06:00
parent a644025133
commit 4927e795a7

View File

@@ -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)