summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-06-10 17:58:54 +0000
committerGerrit Code Review <review@openstack.org>2013-06-10 17:58:54 +0000
commite6393e560b1910743bce6dbe23c9bb4c3a244a0b (patch)
tree4a1b36554b4c6b801d2e06c156960528f7dca4bb
parent936f9839a49d8be9b6f9a5af3c4fb7757fa1f9ed (diff)
parent364a00019daea8e2c8006de6e0fafc2193808659 (diff)
Merge "Fix Keypair exception messages"
-rw-r--r--nova/compute/api.py14
-rw-r--r--nova/tests/compute/test_keypairs.py35
2 files changed, 28 insertions, 21 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py
index e268cf2d9..1b6938011 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -2788,12 +2788,12 @@ class KeypairAPI(base.Base):
safechars = "_- " + string.digits + string.ascii_letters
clean_value = "".join(x for x in key_name if x in safechars)
if clean_value != key_name:
- msg = _("Keypair name contains unsafe characters")
- raise exception.InvalidKeypair(explanation=msg)
+ raise exception.InvalidKeypair(
+ _("Keypair name contains unsafe characters"))
if not 0 < len(key_name) < 256:
- msg = _('Keypair name must be between 1 and 255 characters long')
- raise exception.InvalidKeypair(explanation=msg)
+ raise exception.InvalidKeypair(
+ _('Keypair name must be between 1 and 255 characters long'))
def import_key_pair(self, context, user_id, key_name, public_key):
"""Import a key pair using an existing public key."""
@@ -2805,11 +2805,7 @@ class KeypairAPI(base.Base):
except exception.OverQuota:
raise exception.KeypairLimitExceeded()
- try:
- fingerprint = crypto.generate_fingerprint(public_key)
- except exception.InvalidKeypair:
- msg = _("Keypair data is invalid")
- raise exception.InvalidKeypair(explanation=msg)
+ fingerprint = crypto.generate_fingerprint(public_key)
keypair = {'user_id': user_id,
'name': key_name,
diff --git a/nova/tests/compute/test_keypairs.py b/nova/tests/compute/test_keypairs.py
index 82ac2c612..a6fbda71b 100644
--- a/nova/tests/compute/test_keypairs.py
+++ b/nova/tests/compute/test_keypairs.py
@@ -83,32 +83,39 @@ class CreateImportSharedTestMixIn(object):
up by the test runner unless they are part of a 'concrete' test case.
"""
- def assertKeyNameRaises(self, exc_class, name):
+ def assertKeyNameRaises(self, exc_class, expected_message, name):
func = getattr(self.keypair_api, self.func_name)
args = []
if self.func_name == 'import_key_pair':
args.append(self.pub_key)
- self.assertRaises(exc_class, func, self.ctxt, self.ctxt.user_id,
- name, *args)
+ exc = self.assertRaises(exc_class, func, self.ctxt, self.ctxt.user_id,
+ name, *args)
+ self.assertEqual(expected_message, unicode(exc))
def test_name_too_short(self):
- self.assertKeyNameRaises(exception.InvalidKeypair, '')
+ msg = _('Keypair name must be between 1 and 255 characters long')
+ self.assertKeyNameRaises(exception.InvalidKeypair, msg, '')
def test_name_too_long(self):
- self.assertKeyNameRaises(exception.InvalidKeypair, 'x' * 256)
+ msg = _('Keypair name must be between 1 and 255 characters long')
+ self.assertKeyNameRaises(exception.InvalidKeypair, msg, 'x' * 256)
def test_invalid_chars(self):
- self.assertKeyNameRaises(exception.InvalidKeypair,
- '* BAD CHARACTERS! *')
+ msg = _("Keypair name contains unsafe characters")
+ self.assertKeyNameRaises(exception.InvalidKeypair, msg,
+ '* BAD CHARACTERS! *')
def test_already_exists(self):
def db_key_pair_create_duplicate(context, keypair):
raise exception.KeyPairExists(key_name=keypair.get('name', ''))
self.stubs.Set(db, "key_pair_create", db_key_pair_create_duplicate)
- self.assertKeyNameRaises(exception.KeyPairExists,
+
+ msg = (_("Key pair %(key_name)s already exists.") %
+ {'key_name': self.existing_key_name})
+ self.assertKeyNameRaises(exception.KeyPairExists, msg,
self.existing_key_name)
def test_quota_limit(self):
@@ -116,7 +123,9 @@ class CreateImportSharedTestMixIn(object):
return CONF.quota_key_pairs
self.stubs.Set(QUOTAS, "count", fake_quotas_count)
- self.assertKeyNameRaises(exception.KeypairLimitExceeded, 'foo')
+
+ msg = _("Maximum number of key pairs exceeded")
+ self.assertKeyNameRaises(exception.KeypairLimitExceeded, msg, 'foo')
class CreateKeypairTestCase(KeypairAPITestCase, CreateImportSharedTestMixIn):
@@ -141,9 +150,11 @@ class ImportKeypairTestCase(KeypairAPITestCase, CreateImportSharedTestMixIn):
self.assertEqual(self.pub_key, keypair['public_key'])
def test_bad_key_data(self):
- self.assertRaises(exception.InvalidKeypair,
- self.keypair_api.import_key_pair,
- self.ctxt, self.ctxt.user_id, 'foo', 'bad key data')
+ exc = self.assertRaises(exception.InvalidKeypair,
+ self.keypair_api.import_key_pair,
+ self.ctxt, self.ctxt.user_id, 'foo',
+ 'bad key data')
+ self.assertEqual(u'Keypair data is invalid', unicode(exc))
class GetKeypairTestCase(KeypairAPITestCase):