diff options
| author | Vishvananda Ishaya <vishvananda@yahoo.com> | 2010-09-11 20:33:13 -0700 |
|---|---|---|
| committer | Vishvananda Ishaya <vishvananda@yahoo.com> | 2010-09-11 20:33:13 -0700 |
| commit | 63a2c67fa79eda8d6182055ab2fb67e2475491a0 (patch) | |
| tree | 15130d777e659c8295edc4314df0b676da71c04c | |
| parent | e19a3b21ed6bc331efeee756b1c1665d2538a263 (diff) | |
| parent | c2c113917d3e354f85d473a6d646688b59abad17 (diff) | |
| download | nova-63a2c67fa79eda8d6182055ab2fb67e2475491a0.tar.gz nova-63a2c67fa79eda8d6182055ab2fb67e2475491a0.tar.xz nova-63a2c67fa79eda8d6182055ab2fb67e2475491a0.zip | |
merged trunk
| -rw-r--r-- | nova/exception.py | 12 | ||||
| -rw-r--r-- | nova/process.py | 8 | ||||
| -rw-r--r-- | nova/utils.py | 7 |
3 files changed, 21 insertions, 6 deletions
diff --git a/nova/exception.py b/nova/exception.py index 29bcb17f8..b8894758f 100644 --- a/nova/exception.py +++ b/nova/exception.py @@ -26,6 +26,18 @@ import sys import traceback +class ProcessExecutionError(IOError): + def __init__(self, stdout=None, stderr=None, exit_code=None, cmd=None, + description=None): + if description is None: + description = "Unexpected error while running command." + if exit_code is None: + exit_code = '-' + message = "%s\nCommand: %s\nExit code: %s\nStdout: %r\nStderr: %r" % ( + description, cmd, exit_code, stdout, stderr) + IOError.__init__(self, message) + + class Error(Exception): def __init__(self, message=None): super(Error, self).__init__(message) diff --git a/nova/process.py b/nova/process.py index 74725c157..b3cad894b 100644 --- a/nova/process.py +++ b/nova/process.py @@ -30,7 +30,7 @@ from twisted.internet import protocol from twisted.internet import reactor from nova import flags -from nova.utils import ProcessExecutionError +from nova.exception import ProcessExecutionError FLAGS = flags.FLAGS flags.DEFINE_integer('process_pool_size', 4, @@ -127,7 +127,7 @@ def get_process_output(executable, args=None, env=None, path=None, deferred = defer.Deferred() cmd = executable if args: - cmd = cmd + " " + ' '.join(args) + cmd = " ".join([cmd] + args) logging.debug("Running cmd: %s", cmd) process_handler = BackRelayWithInput( deferred, @@ -141,8 +141,8 @@ def get_process_output(executable, args=None, env=None, path=None, executable = str(executable) if not args is None: args = [str(x) for x in args] - process_reactor.spawnProcess( process_handler, executable, - (executable,)+tuple(args), env, path) + process_reactor.spawnProcess(process_handler, executable, + (executable,)+tuple(args), env, path) return deferred diff --git a/nova/utils.py b/nova/utils.py index 011a5cb09..8939043e6 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -33,6 +33,7 @@ from twisted.internet.threads import deferToThread from nova import exception from nova import flags +from nova.exception import ProcessExecutionError FLAGS = flags.FLAGS @@ -129,8 +130,10 @@ def runthis(prompt, cmd, check_exit_code = True): exit_code = subprocess.call(cmd.split(" ")) logging.debug(prompt % (exit_code)) if check_exit_code and exit_code <> 0: - raise Exception( "Unexpected exit code: %s from cmd: %s" - % (exit_code, cmd)) + raise ProcessExecutionError(exit_code=exit_code, + stdout=None, + stderr=None, + cmd=cmd) def generate_uid(topic, size=8): |
