diff options
| author | Brian Waldon <bcwaldon@gmail.com> | 2012-01-28 19:26:29 -0800 |
|---|---|---|
| committer | Brian Waldon <bcwaldon@gmail.com> | 2012-01-30 08:58:17 -0800 |
| commit | 271acd8a0434a1e23d29df26cb1a211d1c28d8cf (patch) | |
| tree | ffcd0ae906cdaea03145ecf829fbf20eb3ee68ce | |
| parent | 3146044b772b3c431e63fc898a86aabca2e52878 (diff) | |
| download | nova-271acd8a0434a1e23d29df26cb1a211d1c28d8cf.tar.gz nova-271acd8a0434a1e23d29df26cb1a211d1c28d8cf.tar.xz nova-271acd8a0434a1e23d29df26cb1a211d1c28d8cf.zip | |
Handle kepair delete when not found
Fixes bug 900924
Change-Id: Icd0a1f69c0fb7c15110bbf0c416e38cdc1147f4d
| -rw-r--r-- | nova/api/openstack/compute/contrib/keypairs.py | 10 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/contrib/test_keypairs.py | 19 |
2 files changed, 19 insertions, 10 deletions
diff --git a/nova/api/openstack/compute/contrib/keypairs.py b/nova/api/openstack/compute/contrib/keypairs.py index 512f8660a..57ac48dbc 100644 --- a/nova/api/openstack/compute/contrib/keypairs.py +++ b/nova/api/openstack/compute/contrib/keypairs.py @@ -17,11 +17,8 @@ """ Keypair management extension""" -import os -import shutil -import tempfile - import webob +import webob.exc from nova.api.openstack import wsgi from nova.api.openstack import xmlutil @@ -122,7 +119,10 @@ class KeypairController(object): """ context = req.environ['nova.context'] authorize(context) - db.key_pair_destroy(context, context.user_id, id) + try: + db.key_pair_destroy(context, context.user_id, id) + except exception.KeypairNotFound: + raise webob.exc.HTTPNotFound() return webob.Response(status_int=202) @wsgi.serializers(xml=KeypairsTemplate) diff --git a/nova/tests/api/openstack/compute/contrib/test_keypairs.py b/nova/tests/api/openstack/compute/contrib/test_keypairs.py index 7bf65a741..ff59e174b 100644 --- a/nova/tests/api/openstack/compute/contrib/test_keypairs.py +++ b/nova/tests/api/openstack/compute/contrib/test_keypairs.py @@ -22,6 +22,7 @@ from nova.api.openstack import wsgi from nova.api.openstack.compute.contrib import keypairs from nova import context from nova import db +from nova import exception from nova import test from nova.tests.api.openstack import fakes @@ -92,11 +93,7 @@ class KeypairsTest(test.TestCase): def test_keypair_create_with_invalid_name(self): body = { 'keypair': { - 'name': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + 'name': 'a' * 256 } } req = webob.Request.blank('/v2/fake/os-keypairs') @@ -155,6 +152,18 @@ class KeypairsTest(test.TestCase): res = req.get_response(fakes.wsgi_app()) self.assertEqual(res.status_int, 202) + def test_keypair_delete_not_found(self): + + def db_key_pair_get_not_found(context, user_id, name): + raise exception.KeyPairNotFound() + + self.stubs.Set(db, "key_pair_get", + db_key_pair_get_not_found) + req = webob.Request.blank('/v2/fake/os-keypairs/WHAT') + res = req.get_response(fakes.wsgi_app()) + print res + self.assertEqual(res.status_int, 404) + class KeypairsXMLSerializerTest(test.TestCase): def setUp(self): |
