summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Santa Barbara <justin@fathomdb.com>2010-07-22 12:28:47 -0700
committerJustin Santa Barbara <justin@fathomdb.com>2010-07-22 12:28:47 -0700
commitf5e19272844f2f0d2c72bf55a2bdf533f40d1ea5 (patch)
tree4bcc9933d2403748fb42c994404ea196e441fa20
parent47d859a5720e3062f202a593fb2b6cb06c5beffc (diff)
downloadnova-f5e19272844f2f0d2c72bf55a2bdf533f40d1ea5.tar.gz
nova-f5e19272844f2f0d2c72bf55a2bdf533f40d1ea5.tar.xz
nova-f5e19272844f2f0d2c72bf55a2bdf533f40d1ea5.zip
Check exit codes when spawning processes by default
-rwxr-xr-xbin/nova-manage2
-rw-r--r--nova/objectstore/image.py6
-rw-r--r--nova/utils.py11
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):