from __future__ import unicode_literals import six from jinja2 import Template from moto.core.responses import BaseResponse from moto.ec2.utils import keypair_names_from_querystring, filters_from_querystring class KeyPairs(BaseResponse): def create_key_pair(self): name = self.querystring.get('KeyName')[0] keypair = self.ec2_backend.create_key_pair(name) template = Template(CREATE_KEY_PAIR_RESPONSE) return template.render(**keypair) def delete_key_pair(self): name = self.querystring.get('KeyName')[0] success = six.text_type(self.ec2_backend.delete_key_pair(name)).lower() return Template(DELETE_KEY_PAIR_RESPONSE).render(success=success) def describe_key_pairs(self): names = keypair_names_from_querystring(self.querystring) filters = filters_from_querystring(self.querystring) if len(filters) > 0: raise NotImplementedError('Using filters in KeyPairs.describe_key_pairs is not yet implemented') keypairs = self.ec2_backend.describe_key_pairs(names) template = Template(DESCRIBE_KEY_PAIRS_RESPONSE) return template.render(keypairs=keypairs) def import_key_pair(self): raise NotImplementedError('KeyPairs.import_key_pair is not yet implemented') DESCRIBE_KEY_PAIRS_RESPONSE = """ 59dbff89-35bd-4eac-99ed-be587EXAMPLE {% for keypair in keypairs %} {{ keypair.name }} {{ keypair.fingerprint }} {% endfor %} """ CREATE_KEY_PAIR_RESPONSE = """ {{ name }} {{ fingerprint }} {{ material }} """ DELETE_KEY_PAIR_RESPONSE = """ 59dbff89-35bd-4eac-99ed-be587EXAMPLE {{ success }} """