summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Waldon <bcwaldon@gmail.com>2012-01-28 19:26:29 -0800
committerBrian Waldon <bcwaldon@gmail.com>2012-01-30 08:58:17 -0800
commit271acd8a0434a1e23d29df26cb1a211d1c28d8cf (patch)
treeffcd0ae906cdaea03145ecf829fbf20eb3ee68ce
parent3146044b772b3c431e63fc898a86aabca2e52878 (diff)
downloadnova-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.py10
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_keypairs.py19
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):