diff options
| author | Dan Prince <dprince@redhat.com> | 2012-08-15 12:01:12 -0400 |
|---|---|---|
| committer | Dan Prince <dprince@redhat.com> | 2012-08-15 12:44:37 -0400 |
| commit | a8024cd667b9d1a3aa5ce2fcfb6725b25ace9b6c (patch) | |
| tree | 004801e3cf186fc35371d1c054f7ec9848fa6cc1 | |
| parent | 35c12feb8c9467b9b4a7eac7a3f3d63bd620a35b (diff) | |
| download | nova-a8024cd667b9d1a3aa5ce2fcfb6725b25ace9b6c.tar.gz nova-a8024cd667b9d1a3aa5ce2fcfb6725b25ace9b6c.tar.xz nova-a8024cd667b9d1a3aa5ce2fcfb6725b25ace9b6c.zip | |
Add get_key_pair to compute API.
This will be used to implement a GET keypair API call.
Partial fix for LP Bug #925731.
Change-Id: Ie9976c0168842c7491d80be6213814192a2024df
| -rw-r--r-- | nova/compute/api.py | 7 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 24 |
2 files changed, 26 insertions, 5 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index 2d62c00ed..e59b400ad 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -2062,6 +2062,13 @@ class KeypairAPI(base.Base): }) return rval + def get_key_pair(self, context, user_id, key_name): + """Get a keypair by name.""" + key_pair = self.db.key_pair_get(context, user_id, key_name) + return {'name': key_pair['name'], + 'public_key': key_pair['public_key'], + 'fingerprint': key_pair['fingerprint']} + class SecurityGroupAPI(base.Base): """ diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 776bb8237..1ebe889c1 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -4500,6 +4500,7 @@ class KeypairAPITestCase(BaseTestCase): self.keypair_api = compute_api.KeypairAPI() self.ctxt = context.RequestContext('fake', 'fake') self._keypair_db_call_stubs() + self.existing_key_name = 'fake existing key name' self.pub_key = ('ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLnVkqJu9WVf' '/5StU3JCrBR2r1s1j8K1tux+5XeSvdqaM8lMFNorzbY5iyoBbR' 'S56gy1jmm43QsMPJsrpfUZKcJpRENSe3OxIIwWXRoiapZe78u/' @@ -4521,12 +4522,22 @@ class KeypairAPITestCase(BaseTestCase): def db_key_pair_destroy(context, user_id, name): pass + def db_key_pair_get(context, user_id, name): + if name == self.existing_key_name: + return {'name': self.existing_key_name, + 'public_key': self.pub_key, + 'fingerprint': self.fingerprint} + else: + raise exception.KeypairNotFound(user_id=user_id, name=name) + self.stubs.Set(db, "key_pair_get_all_by_user", db_key_pair_get_all_by_user) self.stubs.Set(db, "key_pair_create", db_key_pair_create) self.stubs.Set(db, "key_pair_destroy", db_key_pair_destroy) + self.stubs.Set(db, "key_pair_get", + db_key_pair_get) def test_create_keypair(self): keypair = self.keypair_api.create_key_pair(self.ctxt, @@ -4544,13 +4555,10 @@ class KeypairAPITestCase(BaseTestCase): self.ctxt, self.ctxt.user_id, '* BAD CHARACTERS! *') def test_create_keypair_already_exists(self): - def db_key_pair_get(context, user_id, name): - pass - self.stubs.Set(db, "key_pair_get", - db_key_pair_get) self.assertRaises(exception.KeyPairExists, self.keypair_api.create_key_pair, - self.ctxt, self.ctxt.user_id, 'foo') + self.ctxt, self.ctxt.user_id, + self.existing_key_name) def test_create_keypair_quota_limit(self): def fake_quotas_count(self, context, resource, *args, **kwargs): @@ -4594,6 +4602,12 @@ class KeypairAPITestCase(BaseTestCase): self.keypair_api.import_key_pair, self.ctxt, self.ctxt.user_id, 'foo', self.pub_key) + def test_get_keypair(self): + keypair = self.keypair_api.get_key_pair(self.ctxt, + self.ctxt.user_id, + self.existing_key_name) + self.assertEqual(self.existing_key_name, keypair['name']) + class DisabledInstanceTypesTestCase(BaseTestCase): """ |
