diff options
| author | Dan Prince <dprince@redhat.com> | 2012-08-15 12:34:30 -0400 |
|---|---|---|
| committer | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-08-16 16:57:57 -0700 |
| commit | 06d1f0dfd5d22ace96b414fd0b71fbaa668b95ce (patch) | |
| tree | 5158241240bee346dd43bb06ab0916b14eba66b6 | |
| parent | 12257fa089686ac3ca6a11a7c262b8f0f0dcf8ca (diff) | |
| download | nova-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.py | 9 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/contrib/test_keypairs.py | 37 |
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) |
