From 619255e25aa08d335130d34a781f498dabc352e5 Mon Sep 17 00:00:00 2001 From: Kieran Doonan Date: Tue, 5 Jul 2016 11:44:39 +0100 Subject: [PATCH] tag-key and tag-value filters now do a regex match --- moto/ec2/utils.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/moto/ec2/utils.py b/moto/ec2/utils.py index d8bc6528a..d9ebb4258 100644 --- a/moto/ec2/utils.py +++ b/moto/ec2/utils.py @@ -341,17 +341,19 @@ def get_obj_tag_values(obj): return tags def tag_filter_matches(obj, filter_name, filter_values): + regex_filters = [re.compile(simple_aws_filter_to_re(f)) for f in filter_values] if filter_name == 'tag-key': - tag_names = get_obj_tag_names(obj) - return len(set(filter_values).intersection(tag_names)) > 0 + tag_values = get_obj_tag_names(obj) elif filter_name == 'tag-value': tag_values = get_obj_tag_values(obj) - return len(set(filter_values).intersection(tag_values)) > 0 else: - import re - tag_value = get_obj_tag(obj, filter_name) or '' - regex_filters = [re.compile(simple_aws_filter_to_re(f)) for f in filter_values] - return any(regex.match(tag_value) for regex in regex_filters) + tag_values = [get_obj_tag(obj, filter_name) or ''] + + for tag_value in tag_values: + if any(regex.match(tag_value) for regex in regex_filters): + return True + + return False filter_dict_attribute_mapping = {