tag-key and tag-value filters now do a regex match

This commit is contained in:
Kieran Doonan 2016-07-05 11:44:39 +01:00
parent 5f770ffabb
commit 619255e25a

View File

@ -341,17 +341,19 @@ def get_obj_tag_values(obj):
return tags return tags
def tag_filter_matches(obj, filter_name, filter_values): 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': if filter_name == 'tag-key':
tag_names = get_obj_tag_names(obj) tag_values = get_obj_tag_names(obj)
return len(set(filter_values).intersection(tag_names)) > 0
elif filter_name == 'tag-value': elif filter_name == 'tag-value':
tag_values = get_obj_tag_values(obj) tag_values = get_obj_tag_values(obj)
return len(set(filter_values).intersection(tag_values)) > 0
else: else:
import re tag_values = [get_obj_tag(obj, filter_name) or '']
tag_value = get_obj_tag(obj, filter_name) or ''
regex_filters = [re.compile(simple_aws_filter_to_re(f)) for f in filter_values] for tag_value in tag_values:
return any(regex.match(tag_value) for regex in regex_filters) if any(regex.match(tag_value) for regex in regex_filters):
return True
return False
filter_dict_attribute_mapping = { filter_dict_attribute_mapping = {