diff options
| author | Dean Troyer <dtroyer@gmail.com> | 2011-12-13 19:05:21 -0600 |
|---|---|---|
| committer | Dean Troyer <dtroyer@gmail.com> | 2011-12-14 18:46:24 -0600 |
| commit | ed1b801a2cc3691cdab6ca2ae95f7299a964d00f (patch) | |
| tree | 88c2d7c7cbb97400f15c4cd4b68f76b83205c05a /nova/utils.py | |
| parent | 369050f3a3f82460825edd23079f8f35334bdf14 (diff) | |
Fixes bug 887402
Change utils.execute to accept a list or a single integer in
check_exit_code.
In libvirt.disconnect_volume() return codes 0 and 255 are both valid
for logout/delete, where 255 is returned if the volume is already
disconnected.
Change-Id: Icffeb0fe8269a02d95ac6ed180ba0bb9f458a6ed
Diffstat (limited to 'nova/utils.py')
| -rw-r--r-- | nova/utils.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/nova/utils.py b/nova/utils.py index adf45debd..991efa4f7 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -157,8 +157,9 @@ def execute(*cmd, **kwargs): :cmd Passed to subprocess.Popen. :process_input Send to opened process. - :check_exit_code Defaults to 0. Raise exception.ProcessExecutionError - unless program exits with this code. + :check_exit_code Single int or list of allowed exit codes. Defaults + to [0]. Raise exception.ProcessExecutionError + unless program exits with one of these code. :delay_on_retry True | False. Defaults to True. If set to True, wait a short amount of time before retrying. :attempts How many times to retry cmd. @@ -171,7 +172,9 @@ def execute(*cmd, **kwargs): """ process_input = kwargs.pop('process_input', None) - check_exit_code = kwargs.pop('check_exit_code', 0) + check_exit_code = kwargs.pop('check_exit_code', [0]) + if type(check_exit_code) == types.IntType: + check_exit_code = [check_exit_code] delay_on_retry = kwargs.pop('delay_on_retry', True) attempts = kwargs.pop('attempts', 1) run_as_root = kwargs.pop('run_as_root', False) @@ -205,8 +208,7 @@ def execute(*cmd, **kwargs): _returncode = obj.returncode # pylint: disable=E1101 if _returncode: LOG.debug(_('Result was %s') % _returncode) - if type(check_exit_code) == types.IntType \ - and _returncode != check_exit_code: + if _returncode not in check_exit_code: (stdout, stderr) = result raise exception.ProcessExecutionError( exit_code=_returncode, |
