Return both stdout and stderr on pip failures.

pip failure message sometimes (always?) go to standard out. Return
both standard out and standard error when there's a failure.
This commit is contained in:
Lorin Hochstein 2012-08-17 11:32:47 -04:00
parent fe923b9394
commit 8af3403f65

View file

@ -154,15 +154,15 @@ def main():
changed = 'Successfully installed' in out_pip changed = 'Successfully installed' in out_pip
elif name: elif name:
installed = _is_package_installed(name, pip, version) installed = _is_package_installed(name, pip, version)
changed = ((installed and state == 'absent') or changed = ((installed and state == 'absent') or
(not installed and state == 'present')) (not installed and state == 'present'))
if changed: if changed:
if state == 'present': if state == 'present':
full_name = _get_full_name(name, version) full_name = _get_full_name(name, version)
else: else:
full_name = name full_name = name
cmd = '%s %s %s' % (pip, command_map[state], full_name) cmd = '%s %s %s' % (pip, command_map[state], full_name)
@ -178,7 +178,13 @@ def main():
err += err_pip err += err_pip
if rc != 0: if rc != 0:
module.fail_json(msg=err, cmd=cmd) if not out:
msg = err
elif not err:
msg = out
else:
msg = "stdout: %s\n:stderr: %s" % (out, err)
module.fail_json(msg=msg, cmd=cmd)
module.exit_json(changed=changed, cmd=cmd, name=name, version=version, module.exit_json(changed=changed, cmd=cmd, name=name, version=version,
state=state, requirements=requirements, virtualenv=env) state=state, requirements=requirements, virtualenv=env)