diff options
| author | John Tran <jtran@attinteractive.com> | 2011-05-20 06:51:29 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-05-20 06:51:29 +0000 |
| commit | ff35d64de0228ed0ce7f0e617289d4423935fa3d (patch) | |
| tree | 06c788cf9e590c6fce971eb12171f6ecc5d6b322 /nova/api | |
| parent | b6d45a7eda26847922377ace4c7f7fbc3a7f72e3 (diff) | |
| parent | cbe89f150f6c1e209405da6cbba4c3cf9163fd2e (diff) | |
| download | nova-ff35d64de0228ed0ce7f0e617289d4423935fa3d.tar.gz nova-ff35d64de0228ed0ce7f0e617289d4423935fa3d.tar.xz nova-ff35d64de0228ed0ce7f0e617289d4423935fa3d.zip | |
Added an EC2 API endpoint that'll allow import of public key. Prior, api only allowed generation of new keys.
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/ec2/cloud.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index 1fa07d042..c35b6024e 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -27,6 +27,8 @@ import datetime import IPy import os import urllib +import tempfile +import shutil from nova import compute from nova import context @@ -316,6 +318,27 @@ class CloudController(object): 'keyMaterial': data['private_key']} # TODO(vish): when context is no longer an object, pass it here + def import_public_key(self, context, key_name, public_key, + fingerprint=None): + LOG.audit(_("Import key %s"), key_name, context=context) + key = {} + key['user_id'] = context.user_id + key['name'] = key_name + key['public_key'] = public_key + if fingerprint is None: + tmpdir = tempfile.mkdtemp() + pubfile = os.path.join(tmpdir, 'temp.pub') + fh = open(pubfile, 'w') + fh.write(public_key) + fh.close() + (out, err) = utils.execute('ssh-keygen', '-q', '-l', '-f', + '%s' % (pubfile)) + fingerprint = out.split(' ')[1] + shutil.rmtree(tmpdir) + key['fingerprint'] = fingerprint + db.key_pair_create(context, key) + return True + def delete_key_pair(self, context, key_name, **kwargs): LOG.audit(_("Delete key pair %s"), key_name, context=context) try: |
