summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2012-08-15 12:34:30 -0400
committerVishvananda Ishaya <vishvananda@gmail.com>2012-08-16 16:57:57 -0700
commit06d1f0dfd5d22ace96b414fd0b71fbaa668b95ce (patch)
tree5158241240bee346dd43bb06ab0916b14eba66b6
parent12257fa089686ac3ca6a11a7c262b8f0f0dcf8ca (diff)
downloadnova-06d1f0dfd5d22ace96b414fd0b71fbaa668b95ce.tar.gz
nova-06d1f0dfd5d22ace96b414fd0b71fbaa668b95ce.tar.xz
nova-06d1f0dfd5d22ace96b414fd0b71fbaa668b95ce.zip
Implement GET (show) in OS API keypairs extension.
Includes test for showing a keypair (existing and non-existing). This commit also corrects the name of the KeyPairNotFound exception in the test_keypair_delete_not_found test case. Additionally some extra print statements in the tests were removed. DocImpact - need to add documentation for GET on: v2/{tenant_id}/os-keypairs/{keypair_name} Fixes LP Bug #925731. Change-Id: I9eeb47ccb9bf352c554aa44aa562c47e3eb33cae
-rw-r--r--nova/api/openstack/compute/contrib/keypairs.py9
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_keypairs.py37
2 files changed, 41 insertions, 5 deletions
diff --git a/nova/api/openstack/compute/contrib/keypairs.py b/nova/api/openstack/compute/contrib/keypairs.py
index db503ffdd..ab264f9da 100644
--- a/nova/api/openstack/compute/contrib/keypairs.py
+++ b/nova/api/openstack/compute/contrib/keypairs.py
@@ -108,6 +108,15 @@ class KeypairController(object):
raise webob.exc.HTTPNotFound()
return webob.Response(status_int=202)
+ @wsgi.serializers(xml=KeypairTemplate)
+ def show(self, req, id):
+ """Return data for the given key name."""
+ context = req.environ['nova.context']
+ authorize(context)
+
+ keypair = self.api.get_key_pair(context, context.user_id, id)
+ return {'keypair': keypair}
+
@wsgi.serializers(xml=KeypairsTemplate)
def index(self, req):
"""
diff --git a/nova/tests/api/openstack/compute/contrib/test_keypairs.py b/nova/tests/api/openstack/compute/contrib/test_keypairs.py
index 795e3dcec..d59ca3164 100644
--- a/nova/tests/api/openstack/compute/contrib/test_keypairs.py
+++ b/nova/tests/api/openstack/compute/contrib/test_keypairs.py
@@ -249,16 +249,45 @@ class KeypairsTest(test.TestCase):
def test_keypair_delete_not_found(self):
def db_key_pair_get_not_found(context, user_id, name):
- raise exception.KeyPairNotFound()
+ raise exception.KeypairNotFound(user_id=user_id, name=name)
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)
- def test_show(self):
+ def test_keypair_show(self):
+
+ def _db_key_pair_get(context, user_id, name):
+ return {'name': 'foo', 'public_key': 'XXX', 'fingerprint': 'YYY'}
+
+ self.stubs.Set(db, "key_pair_get", _db_key_pair_get)
+
+ req = webob.Request.blank('/v2/fake/os-keypairs/FAKE')
+ req.method = 'GET'
+ req.headers['Content-Type'] = 'application/json'
+ res = req.get_response(fakes.wsgi_app())
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(res.status_int, 200)
+ self.assertEqual('foo', res_dict['keypair']['name'])
+ self.assertEqual('XXX', res_dict['keypair']['public_key'])
+ self.assertEqual('YYY', res_dict['keypair']['fingerprint'])
+
+ def test_keypair_show_not_found(self):
+
+ def _db_key_pair_get(context, user_id, name):
+ raise exception.KeypairNotFound(user_id=user_id, name=name)
+
+ self.stubs.Set(db, "key_pair_get", _db_key_pair_get)
+
+ req = webob.Request.blank('/v2/fake/os-keypairs/FAKE')
+ req.method = 'GET'
+ req.headers['Content-Type'] = 'application/json'
+ res = req.get_response(fakes.wsgi_app())
+ self.assertEqual(res.status_int, 404)
+
+ def test_show_server(self):
self.stubs.Set(db, 'instance_get',
fakes.fake_instance_get())
req = webob.Request.blank('/v2/fake/servers/1')
@@ -296,7 +325,6 @@ class KeypairsXMLSerializerTest(test.TestCase):
serializer = keypairs.KeypairTemplate()
text = serializer.serialize(exemplar)
- print text
tree = etree.fromstring(text)
self.assertEqual('keypair', tree.tag)
@@ -317,7 +345,6 @@ class KeypairsXMLSerializerTest(test.TestCase):
serializer = keypairs.KeypairsTemplate()
text = serializer.serialize(exemplar)
- print text
tree = etree.fromstring(text)
self.assertEqual('keypairs', tree.tag)