from ._base_response import EC2BaseResponse class KeyPairs(EC2BaseResponse): def create_key_pair(self) -> str: name = self._get_param("KeyName") key_type = self._get_param("KeyType") tags = self._parse_tag_specification("key-pair").get("key-pair", {}) self.error_on_dryrun() keypair = self.ec2_backend.create_key_pair(name, key_type, tags=tags) return self.response_template(CREATE_KEY_PAIR_RESPONSE).render(keypair=keypair) def delete_key_pair(self) -> str: name = self._get_param("KeyName") self.error_on_dryrun() self.ec2_backend.delete_key_pair(name) return self.response_template(DELETE_KEY_PAIR_RESPONSE).render() def describe_key_pairs(self) -> str: names = self._get_multi_param("KeyName") filters = self._filters_from_querystring() keypairs = self.ec2_backend.describe_key_pairs(names, filters) template = self.response_template(DESCRIBE_KEY_PAIRS_RESPONSE) return template.render(keypairs=keypairs) def import_key_pair(self) -> str: name = self._get_param("KeyName") material = self._get_param("PublicKeyMaterial") tags = self._parse_tag_specification("key-pair").get("key-pair", {}) self.error_on_dryrun() keypair = self.ec2_backend.import_key_pair(name, material, tags=tags) return self.response_template(IMPORT_KEYPAIR_RESPONSE).render(keypair=keypair) DESCRIBE_KEY_PAIRS_RESPONSE = """<DescribeKeyPairsResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-15/"> <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> <keySet> {% for keypair in keypairs %} <item> <createTime>{{ keypair.created_iso_8601 }}</createTime> <keyPairId>{{ keypair.id }}</keyPairId> <keyName>{{ keypair.name }}</keyName> <keyFingerprint>{{ keypair.fingerprint }}</keyFingerprint> {% if keypair.get_tags() %} <tagSet> {% for tag in keypair.get_tags() %} <item> <key>{{ tag.key }}</key> <value>{{ tag.value }}</value> </item> {% endfor %} </tagSet> {% endif %} </item> {% endfor %} </keySet> </DescribeKeyPairsResponse>""" CREATE_KEY_PAIR_RESPONSE = """<CreateKeyPairResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-15/"> <keyPairId>{{ keypair.id }}</keyPairId> <keyName>{{ keypair.name }}</keyName> <keyFingerprint>{{ keypair.fingerprint }}</keyFingerprint> <keyMaterial>{{ keypair.material }}</keyMaterial> {% if keypair.get_tags() %} <tagSet> {% for tag in keypair.get_tags() %} <item> <key>{{ tag.key }}</key> <value>{{ tag.value }}</value> </item> {% endfor %} </tagSet> {% endif %} </CreateKeyPairResponse>""" DELETE_KEY_PAIR_RESPONSE = """<DeleteKeyPairResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-15/"> <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> <return>true</return> </DeleteKeyPairResponse>""" IMPORT_KEYPAIR_RESPONSE = """<?xml version="1.0" encoding="UTF-8"?> <ImportKeyPairResponse xmlns="http://ec2.amazonaws.com/doc/2013-10-15/"> <requestId>471f9fdd-8fe2-4a84-86b0-bd3d3e350979</requestId> <keyPairId>{{ keypair.id }}</keyPairId> <keyName>{{ keypair.name }}</keyName> <keyFingerprint>{{ keypair.fingerprint }}</keyFingerprint> {% if keypair.get_tags() %} <tagSet> {% for tag in keypair.get_tags() %} <item> <key>{{ tag.key }}</key> <value>{{ tag.value }}</value> </item> {% endfor %} </tagSet> {% endif %} </ImportKeyPairResponse>"""
Memory