From 271acd8a0434a1e23d29df26cb1a211d1c28d8cf Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Sat, 28 Jan 2012 19:26:29 -0800 Subject: Handle kepair delete when not found Fixes bug 900924 Change-Id: Icd0a1f69c0fb7c15110bbf0c416e38cdc1147f4d --- nova/api/openstack/compute/contrib/keypairs.py | 10 +++++----- .../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): -- cgit