from __future__ import unicode_literals from moto.core.responses import BaseResponse from moto.ec2.utils import ( sequence_from_querystring, filters_from_querystring, ) class InternetGateways(BaseResponse): def attach_internet_gateway(self): igw_id = self.querystring.get("InternetGatewayId", [None])[0] vpc_id = self.querystring.get("VpcId", [None])[0] if self.is_not_dryrun('AttachInternetGateway'): self.ec2_backend.attach_internet_gateway(igw_id, vpc_id) template = self.response_template(ATTACH_INTERNET_GATEWAY_RESPONSE) return template.render() def create_internet_gateway(self): if self.is_not_dryrun('CreateInternetGateway'): igw = self.ec2_backend.create_internet_gateway() template = self.response_template(CREATE_INTERNET_GATEWAY_RESPONSE) return template.render(internet_gateway=igw) def delete_internet_gateway(self): igw_id = self.querystring.get("InternetGatewayId", [None])[0] if self.is_not_dryrun('DeleteInternetGateway'): self.ec2_backend.delete_internet_gateway(igw_id) template = self.response_template(DELETE_INTERNET_GATEWAY_RESPONSE) return template.render() def describe_internet_gateways(self): filter_dict = filters_from_querystring(self.querystring) if "InternetGatewayId.1" in self.querystring: igw_ids = sequence_from_querystring( "InternetGatewayId", self.querystring) igws = self.ec2_backend.describe_internet_gateways(igw_ids, filters=filter_dict) else: igws = self.ec2_backend.describe_internet_gateways(filters=filter_dict) template = self.response_template(DESCRIBE_INTERNET_GATEWAYS_RESPONSE) return template.render(internet_gateways=igws) def detach_internet_gateway(self): # TODO validate no instances with EIPs in VPC before detaching # raise else DependencyViolationError() igw_id = self.querystring.get("InternetGatewayId", [None])[0] vpc_id = self.querystring.get("VpcId", [None])[0] if self.is_not_dryrun('DetachInternetGateway'): self.ec2_backend.detach_internet_gateway(igw_id, vpc_id) template = self.response_template(DETACH_INTERNET_GATEWAY_RESPONSE) return template.render() ATTACH_INTERNET_GATEWAY_RESPONSE = u""" 59dbff89-35bd-4eac-99ed-be587EXAMPLE true """ CREATE_INTERNET_GATEWAY_RESPONSE = u""" 59dbff89-35bd-4eac-99ed-be587EXAMPLE {{ internet_gateway.id }} {% for tag in internet_gateway.get_tags() %} {{ tag.resource_id }} {{ tag.resource_type }} {{ tag.key }} {{ tag.value }} {% endfor %} """ DELETE_INTERNET_GATEWAY_RESPONSE = u""" 59dbff89-35bd-4eac-99ed-be587EXAMPLE true """ DESCRIBE_INTERNET_GATEWAYS_RESPONSE = u""" 59dbff89-35bd-4eac-99ed-be587EXAMPLE {% for igw in internet_gateways %} {{ igw.id }} {% if igw.vpc %} {{ igw.vpc.id }} available {% else %} {% endif %} {% for tag in igw.get_tags() %} {{ tag.resource_id }} {{ tag.resource_type }} {{ tag.key }} {{ tag.value }} {% endfor %} {% endfor %} """ DETACH_INTERNET_GATEWAY_RESPONSE = u""" 59dbff89-35bd-4eac-99ed-be587EXAMPLE true """