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@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list