This is something we have already talked about in the past and I believe that now (pre 1.0 release) is the right time to do it.
*Proposal* I propose the following methods for the key pair management to be promoted and be a part of the standard / base compute API: * ex_list_keypairs -> list_keypairs() * ex_create_keypair -> create_key_pair(name) * ex_import_keypair -> import_key_pair_from_file(name, public_key_file) * ex_import_keypair_fom_string -> import_key_pair_fom_string(name, public_key_material) * ex_delete_keypair -> delete_keypair(keypair) This also means adding a new "KeyPair" / "SSHKeyPair" class which represents a key pair object. Whole proposal for those methods and a new class is also available in a more readable format as a gist - https://gist.github.com/Kami/7810989 Currently, this functionality is already implemented as the aforementioned extension methods in the following drivers: * CloudStack * OpenStack * Rackspace * EC2 To preserve backward compatibility, we should also modify existing extension methods to call new methods and emit a deprecation warning. *Open questions* Here are a couple of things I'm still not too sure about so a feedback would be greatly appreciated. 1. Should all the methods and a key pair class be prefixed with "ssh" so it's clear that it references a SSH key pair or just calling it key pair is clear enough? 2. "keypair "vs "key_pair". Existing extension methods use #1, but to be consistent with other methods, we should use #2. 3. "import_key_pair" vs "import_public_key". Existing extension methods use #1, but imo it's confusing and not obvious since you are importing just a public key, so a better name would be "import_public_key". Feedback is welcome. Thanks.
