summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-01-21 22:04:18 +0000
committerGerrit Code Review <review@openstack.org>2013-01-21 22:04:18 +0000
commitfce9219eedf678b3f1bddc624c3233c105331b64 (patch)
tree65e4e0a7801e10318e419a103b9a740dbc24d110 /nova
parentd15d525c880d7065eaaa07b7efc1c48f48d33009 (diff)
parent5cce71baaa13fc651d76b6b26a29effbf879f1b1 (diff)
downloadnova-fce9219eedf678b3f1bddc624c3233c105331b64.tar.gz
nova-fce9219eedf678b3f1bddc624c3233c105331b64.tar.xz
nova-fce9219eedf678b3f1bddc624c3233c105331b64.zip
Merge "Refactor EC2 keypairs exception"
Diffstat (limited to 'nova')
-rw-r--r--nova/api/ec2/__init__.py8
-rw-r--r--nova/api/ec2/cloud.py14
-rw-r--r--nova/tests/api/ec2/test_cloud.py4
-rw-r--r--nova/tests/test_api.py5
4 files changed, 14 insertions, 17 deletions
diff --git a/nova/api/ec2/__init__.py b/nova/api/ec2/__init__.py
index 7cd7e1c7d..85b87e3e5 100644
--- a/nova/api/ec2/__init__.py
+++ b/nova/api/ec2/__init__.py
@@ -511,7 +511,13 @@ class Executor(wsgi.Application):
except exception.KeyPairExists as ex:
LOG.debug(_('KeyPairExists raised: %s'), unicode(ex),
context=context)
- return ec2_error(req, request_id, type(ex).__name__, unicode(ex))
+ code = 'InvalidKeyPair.Duplicate'
+ return ec2_error(req, request_id, code, unicode(ex))
+ except exception.InvalidKeypair as ex:
+ LOG.debug(_('InvalidKeypair raised: %s'), unicode(ex),
+ context)
+ code = 'InvalidKeyPair.Format'
+ return ec2_error(req, request_id, code, unicode(ex))
except exception.InvalidParameterValue as ex:
LOG.debug(_('InvalidParameterValue raised: %s'), unicode(ex),
context=context)
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index 414b2e969..31f486b81 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -434,7 +434,8 @@ class CloudController(object):
#If looking for non existent key pair
if key_name is not None and not key_pairs:
msg = _('Could not find key pair(s): %s') % ','.join(key_name)
- raise exception.EC2APIError(msg)
+ raise exception.KeypairNotFound(msg,
+ code="InvalidKeyPair.Duplicate")
result = []
for key_pair in key_pairs:
@@ -457,13 +458,7 @@ class CloudController(object):
key_name)
except exception.KeypairLimitExceeded:
msg = _("Quota exceeded, too many key pairs.")
- raise exception.EC2APIError(msg)
- except exception.InvalidKeypair:
- msg = _("Keypair data is invalid")
- raise exception.EC2APIError(msg)
- except exception.KeyPairExists:
- msg = _("Key pair '%s' already exists.") % key_name
- raise exception.KeyPairExists(msg)
+ raise exception.EC2APIError(msg, code='ResourceLimitExceeded')
return {'keyName': key_name,
'keyFingerprint': keypair['fingerprint'],
'keyMaterial': keypair['private_key']}
@@ -486,9 +481,6 @@ class CloudController(object):
except exception.InvalidKeypair:
msg = _("Keypair data is invalid")
raise exception.EC2APIError(msg)
- except exception.KeyPairExists:
- msg = _("Key pair '%s' already exists.") % key_name
- raise exception.EC2APIError(msg)
return {'keyName': key_name,
'keyFingerprint': keypair['fingerprint']}
diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py
index 562473121..a00dceff1 100644
--- a/nova/tests/api/ec2/test_cloud.py
+++ b/nova/tests/api/ec2/test_cloud.py
@@ -1440,7 +1440,7 @@ class CloudTestCase(test.TestCase):
self.assertTrue(filter(lambda k: k['keyName'] == 'test2', keys))
def test_describe_bad_key_pairs(self):
- self.assertRaises(exception.EC2APIError,
+ self.assertRaises(exception.KeypairNotFound,
self.cloud.describe_key_pairs, self.context,
key_name=['DoesNotExist'])
@@ -1490,7 +1490,7 @@ class CloudTestCase(test.TestCase):
self.assertEqual(result['keyName'], key_name)
for key_name in bad_names:
- self.assertRaises(exception.EC2APIError,
+ self.assertRaises(exception.InvalidKeypair,
self.cloud.create_key_pair,
self.context,
key_name)
diff --git a/nova/tests/test_api.py b/nova/tests/test_api.py
index 829a98334..fb2e76e45 100644
--- a/nova/tests/test_api.py
+++ b/nova/tests/test_api.py
@@ -309,11 +309,10 @@ class ApiEc2TestCase(test.TestCase):
try:
self.ec2.create_key_pair('test')
except boto_exc.EC2ResponseError, e:
- if e.code == 'KeyPairExists':
+ if e.code == 'InvalidKeyPair.Duplicate':
pass
else:
- self.fail("Unexpected EC2ResponseError: %s "
- "(expected KeyPairExists)" % e.code)
+ self.assertEqual('InvalidKeyPair.Duplicate', e.code)
else:
self.fail('Exception not raised.')