diff options
| author | Justin Santa Barbara <justin@fathomdb.com> | 2010-07-22 12:28:47 -0700 |
|---|---|---|
| committer | Justin Santa Barbara <justin@fathomdb.com> | 2010-07-22 12:28:47 -0700 |
| commit | f5e19272844f2f0d2c72bf55a2bdf533f40d1ea5 (patch) | |
| tree | 4bcc9933d2403748fb42c994404ea196e441fa20 | |
| parent | 47d859a5720e3062f202a593fb2b6cb06c5beffc (diff) | |
| download | nova-f5e19272844f2f0d2c72bf55a2bdf533f40d1ea5.tar.gz nova-f5e19272844f2f0d2c72bf55a2bdf533f40d1ea5.tar.xz nova-f5e19272844f2f0d2c72bf55a2bdf533f40d1ea5.zip | |
Check exit codes when spawning processes by default
| -rwxr-xr-x | bin/nova-manage | 2 | ||||
| -rw-r--r-- | nova/objectstore/image.py | 6 | ||||
| -rw-r--r-- | nova/utils.py | 11 |
3 files changed, 12 insertions, 7 deletions
diff --git a/bin/nova-manage b/bin/nova-manage index 56f89ce30..61ac86db6 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -56,7 +56,7 @@ class VpnCommands(object): vpn = self.__vpn_for(project.id) if vpn: - out, err = utils.execute("ping -c1 -w1 %s > /dev/null; echo $?" % vpn['private_dns_name']) + out, err = utils.execute("ping -c1 -w1 %s > /dev/null; echo $?" % vpn['private_dns_name'], check_exit_code=False) if out.strip() == '0': net = 'up' else: diff --git a/nova/objectstore/image.py b/nova/objectstore/image.py index bea2e9637..b98de276c 100644 --- a/nova/objectstore/image.py +++ b/nova/objectstore/image.py @@ -227,13 +227,13 @@ class Image(object): @staticmethod def decrypt_image(encrypted_filename, encrypted_key, encrypted_iv, cloud_private_key, decrypted_filename): - key, err = utils.execute('openssl rsautl -decrypt -inkey %s' % cloud_private_key, encrypted_key) + key, err = utils.execute('openssl rsautl -decrypt -inkey %s' % cloud_private_key, encrypted_key, check_exit_code=False) if err: raise exception.Error("Failed to decrypt private key: %s" % err) - iv, err = utils.execute('openssl rsautl -decrypt -inkey %s' % cloud_private_key, encrypted_iv) + iv, err = utils.execute('openssl rsautl -decrypt -inkey %s' % cloud_private_key, encrypted_iv, check_exit_code=False) if err: raise exception.Error("Failed to decrypt initialization vector: %s" % err) - out, err = utils.execute('openssl enc -d -aes-128-cbc -in %s -K %s -iv %s -out %s' % (encrypted_filename, key, iv, decrypted_filename)) + out, err = utils.execute('openssl enc -d -aes-128-cbc -in %s -K %s -iv %s -out %s' % (encrypted_filename, key, iv, decrypted_filename), check_exit_code=False) if err: raise exception.Error("Failed to decrypt image file %s : %s" % (encrypted_filename, err)) diff --git a/nova/utils.py b/nova/utils.py index 9ecceafe0..d01c33042 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -45,7 +45,7 @@ def fetchfile(url, target): # fp.close() execute("curl %s -o %s" % (url, target)) -def execute(cmd, input=None, addl_env=None): +def execute(cmd, input=None, addl_env=None, check_exit_code=True): env = os.environ.copy() if addl_env: env.update(addl_env) @@ -59,6 +59,8 @@ def execute(cmd, input=None, addl_env=None): obj.stdin.close() if obj.returncode: logging.debug("Result was %s" % (obj.returncode)) + if check_exit_code and obj.returncode <> 0: + raise Exception("Unexpected exit code: %s. result=%s" % (obj.returncode, result)) return result @@ -84,9 +86,12 @@ def debug(arg): return arg -def runthis(prompt, cmd): +def runthis(prompt, cmd, check_exit_code = True): logging.debug("Running %s" % (cmd)) - logging.debug(prompt % (subprocess.call(cmd.split(" ")))) + 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)) def generate_uid(topic, size=8): |
