
As described before, this patch should be : --- utils/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 147c1ef..ec09c33 100644 --- a/utils/utils.py +++ b/utils/utils.py @@ -409,9 +409,8 @@ def exec_cmd(command, sudo=False, cwd=None, infile=None, outfile=None, shell=Fal p = subprocess.Popen(command, shell=shell, close_fds=True, cwd=cwd, stdin=infile, stdout=outfile, stderr=subprocess.PIPE) (out, err) = p.communicate(data) - if out == None: - # Prevent splitlines() from barfing later on - out = "" + if out == "": + out = err return (p.returncode, out.splitlines()) def remote_exec_pexpect(hostname, username, password, cmd): -- 1.8.3.1 ----- Original Message -----
----- Original Message -----
The 'out' returned from exec_cmds is not 'None' type if stderr occurs, it is because utils pass 'subprocess.PIPE' to stdout to open this subprocess.
"Similarly, to get anything other than None in the result tuple, you need to give stdout=PIPE and/or stderr=PIPE too." (see http://docs.python.org/2/library/subprocess.html#module-subprocess)
Finally, make out equals to err when stderr happened. --- utils/utils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/utils/utils.py b/utils/utils.py index 147c1ef..2248ce1 100644 --- a/utils/utils.py +++ b/utils/utils.py @@ -404,14 +404,12 @@ def exec_cmd(command, sudo=False, cwd=None, infile=None, outfile=None, shell=Fal command = ["sudo"] + command if infile == None: infile = subprocess.PIPE - if outfile == None: - outfile = subprocess.PIPE
hmm, there is a little problem: if outfile is not subprocess.PIPE, exec_cmd would not capture the output of command. So I think the best choice is check whether 'out' is a null string, rather than a None type.
p = subprocess.Popen(command, shell=shell, close_fds=True, cwd=cwd, stdin=infile, stdout=outfile, stderr=subprocess.PIPE) (out, err) = p.communicate(data) if out == None: - # Prevent splitlines() from barfing later on - out = "" + # Because stderr is PIPE, err will not be None, and can be splitlines. + out = err return (p.returncode, out.splitlines())
def remote_exec_pexpect(hostname, username, password, cmd): -- 1.8.3.1
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list