From 88684f10f2df6e594707d9b06352d05158603b15 Mon Sep 17 00:00:00 2001 From: Hugo Lopes Tavares Date: Wed, 5 Nov 2014 14:02:45 -0500 Subject: [PATCH] Move filter logic from responses.InternetGateways to models.InternetGatewayBackend --- moto/ec2/models.py | 23 +++++++++++++++-------- moto/ec2/responses/internet_gateways.py | 9 +++------ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/moto/ec2/models.py b/moto/ec2/models.py index 92e1ac1af..cd5be45db 100644 --- a/moto/ec2/models.py +++ b/moto/ec2/models.py @@ -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) diff --git a/moto/ec2/responses/internet_gateways.py b/moto/ec2/responses/internet_gateways.py index e6fb09962..d55e29f49 100644 --- a/moto/ec2/responses/internet_gateways.py +++ b/moto/ec2/responses/internet_gateways.py @@ -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)