Improve error reporting for local and remote run.

This commit is contained in:
Darko Poljak 2016-06-03 12:20:28 +02:00
commit fd8e10e12a
4 changed files with 57 additions and 12 deletions

View file

@ -33,6 +33,7 @@ import tempfile
import cdist
import cdist.message
from cdist import core
import cdist.exec.util as exec_util
class Local(object):
"""Execute commands locally.
@ -203,12 +204,14 @@ class Local(object):
env.update(message.env)
try:
output = exec_util.call_get_output(command, env=env)
self.log.debug("Local output: {}".format(output))
if return_output:
return subprocess.check_output(command, env=env).decode()
else:
subprocess.check_call(command, env=env)
except subprocess.CalledProcessError:
raise cdist.Error("Command failed: " + " ".join(command))
return output.decode()
except subprocess.CalledProcessError as e:
raise cdist.Error("Command failed: " + " ".join(command)
+ " with returncode: {} and output: {}".format(
e.returncode, e.output))
except OSError as error:
raise cdist.Error(" ".join(command) + ": " + error.args[1])
finally: