Move filter logic from responses.InternetGateways to models.InternetGatewayBackend

This commit is contained in:
Hugo Lopes Tavares 2014-11-05 14:02:45 -05:00
parent 32af875386
commit 88684f10f2
2 changed files with 18 additions and 14 deletions

View File

@ -83,7 +83,9 @@ from .utils import (
is_valid_resource_id,
get_prefix,
simple_aws_filter_to_re,
is_valid_cidr)
is_valid_cidr,
filter_internet_gateways,
)
def validate_resource_ids(resource_ids):
@ -1885,14 +1887,19 @@ class InternetGatewayBackend(object):
self.internet_gateways[igw.id] = igw
return igw
def describe_internet_gateways(self, internet_gateway_ids=None):
def describe_internet_gateways(self, internet_gateway_ids=None, filters=None):
igws = []
for igw_id in internet_gateway_ids or []:
if igw_id in self.internet_gateways:
igws.append(self.internet_gateways[igw_id])
else:
raise InvalidInternetGatewayIdError(igw_id)
return igws or self.internet_gateways.values()
if internet_gateway_ids is None:
igws = self.internet_gateways.values()
else:
for igw_id in internet_gateway_ids:
if igw_id in self.internet_gateways:
igws.append(self.internet_gateways[igw_id])
else:
raise InvalidInternetGatewayIdError(igw_id)
if filters is not None:
igws = filter_internet_gateways(igws, filters)
return igws
def delete_internet_gateway(self, internet_gateway_id):
igw = self.get_internet_gateway(internet_gateway_id)

View File

@ -3,7 +3,6 @@ from moto.core.responses import BaseResponse
from moto.ec2.utils import (
sequence_from_querystring,
filters_from_querystring,
filter_internet_gateways,
)
from jinja2 import Template
@ -28,15 +27,13 @@ class InternetGateways(BaseResponse):
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)
igws = self.ec2_backend.describe_internet_gateways(igw_ids, filters=filter_dict)
else:
igws = self.ec2_backend.describe_internet_gateways()
filter_dict = filters_from_querystring(self.querystring)
igws = filter_internet_gateways(igws, filter_dict)
igws = self.ec2_backend.describe_internet_gateways(filters=filter_dict)
template = Template(DESCRIBE_INTERNET_GATEWAYS_RESPONSE)
return template.render(internet_gateways=igws)