mirror of
https://github.com/ansible/awx.git
synced 2026-01-15 20:00:43 -03:30
Update validation for instance filters to allow 'tag:key=value'. Fixes https://trello.com/c/VH9Vnd8z.
This commit is contained in:
parent
ee97e83b2c
commit
844e1b7343
@ -1017,7 +1017,7 @@ class InventorySourceOptions(BaseModel):
|
||||
if self.source != 'ec2':
|
||||
return ''
|
||||
invalid_filters = []
|
||||
instance_filter_re = re.compile(r'^(?:tag:.+)|(?:[a-z][a-z\.-]*[a-z])=.*$')
|
||||
instance_filter_re = re.compile(r'^((tag:.+)|([a-z][a-z\.-]*[a-z]))=.*$')
|
||||
for instance_filter in instance_filters.split(','):
|
||||
instance_filter = instance_filter.strip()
|
||||
if not instance_filter:
|
||||
@ -1026,6 +1026,8 @@ class InventorySourceOptions(BaseModel):
|
||||
invalid_filters.append(instance_filter)
|
||||
continue
|
||||
instance_filter_name = instance_filter.split('=', 1)[0]
|
||||
if instance_filter_name.startswith('tag:'):
|
||||
continue
|
||||
if instance_filter_name not in self.INSTANCE_FILTER_NAMES:
|
||||
invalid_filters.append(instance_filter)
|
||||
if invalid_filters:
|
||||
|
||||
@ -1306,10 +1306,26 @@ class InventoryUpdatesTest(BaseTransactionTest):
|
||||
response = self.put(inv_src_url1, inv_src_data, expect=400)
|
||||
# Invalid field name for instance filters.
|
||||
inv_src_data['instance_filters'] = 'foo=bar,'
|
||||
with self.current_user(self.super_django_user):
|
||||
response = self.put(inv_src_url1, inv_src_data, expect=400)
|
||||
# Invalid tag expression for instance filters.
|
||||
inv_src_data['instance_filters'] = 'tag:=,'
|
||||
with self.current_user(self.super_django_user):
|
||||
response = self.put(inv_src_url1, inv_src_data, expect=400)
|
||||
# Another invalid tag expression for instance filters.
|
||||
inv_src_data['instance_filters'] = 'tag:Name,'
|
||||
with self.current_user(self.super_django_user):
|
||||
response = self.put(inv_src_url1, inv_src_data, expect=400)
|
||||
# Valid string for instance filters.
|
||||
inv_src_data['instance_filters'] = 'tag-key=Name'
|
||||
with self.current_user(self.super_django_user):
|
||||
response = self.put(inv_src_url1, inv_src_data, expect=200)
|
||||
# Another valid value for instance filters.
|
||||
inv_src_data['instance_filters'] = 'tag:Name=test*'
|
||||
with self.current_user(self.super_django_user):
|
||||
response = self.put(inv_src_url1, inv_src_data, expect=200)
|
||||
# Another valid instance filter with nothing after =.
|
||||
inv_src_data['instance_filters'] = 'tag:Name='
|
||||
with self.current_user(self.super_django_user):
|
||||
response = self.put(inv_src_url1, inv_src_data, expect=200)
|
||||
# Invalid string for group_by.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user