mirror of
https://github.com/ansible/awx.git
synced 2026-01-13 02:50:02 -03:30
Merge pull request #6382 from chrismeyersfsu/fix-4514
support vmware via source_vars
This commit is contained in:
commit
2d05ffc90e
@ -1094,44 +1094,50 @@ class InventorySourceOptions(BaseModel):
|
||||
|
||||
def clean_instance_filters(self):
|
||||
instance_filters = unicode(self.instance_filters or '')
|
||||
if self.source != 'ec2':
|
||||
if self.source == 'ec2':
|
||||
invalid_filters = []
|
||||
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:
|
||||
continue
|
||||
if not instance_filter_re.match(instance_filter):
|
||||
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:
|
||||
raise ValidationError(_('Invalid filter expression: %(filter)s') %
|
||||
{'filter': ', '.join(invalid_filters)})
|
||||
return instance_filters
|
||||
elif self.source == 'vmware':
|
||||
return instance_filters
|
||||
else:
|
||||
return ''
|
||||
invalid_filters = []
|
||||
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:
|
||||
continue
|
||||
if not instance_filter_re.match(instance_filter):
|
||||
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:
|
||||
raise ValidationError(_('Invalid filter expression: %(filter)s') %
|
||||
{'filter': ', '.join(invalid_filters)})
|
||||
return instance_filters
|
||||
|
||||
def clean_group_by(self):
|
||||
group_by = unicode(self.group_by or '')
|
||||
if self.source != 'ec2':
|
||||
if self.source == 'ec2':
|
||||
get_choices = getattr(self, 'get_%s_group_by_choices' % self.source)
|
||||
valid_choices = [x[0] for x in get_choices()]
|
||||
choice_transform = lambda x: x.strip().lower()
|
||||
valid_choices = [choice_transform(x) for x in valid_choices]
|
||||
choices = [choice_transform(x) for x in group_by.split(',') if x.strip()]
|
||||
invalid_choices = []
|
||||
for c in choices:
|
||||
if c not in valid_choices and c not in invalid_choices:
|
||||
invalid_choices.append(c)
|
||||
if invalid_choices:
|
||||
raise ValidationError(_('Invalid group by choice: %(choice)s') %
|
||||
{'choice': ', '.join(invalid_choices)})
|
||||
return ','.join(choices)
|
||||
elif self.source == 'vmware':
|
||||
return group_by
|
||||
else:
|
||||
return ''
|
||||
get_choices = getattr(self, 'get_%s_group_by_choices' % self.source)
|
||||
valid_choices = [x[0] for x in get_choices()]
|
||||
choice_transform = lambda x: x.strip().lower()
|
||||
valid_choices = [choice_transform(x) for x in valid_choices]
|
||||
choices = [choice_transform(x) for x in group_by.split(',') if x.strip()]
|
||||
invalid_choices = []
|
||||
for c in choices:
|
||||
if c not in valid_choices and c not in invalid_choices:
|
||||
invalid_choices.append(c)
|
||||
if invalid_choices:
|
||||
raise ValidationError(_('Invalid group by choice: %(choice)s') %
|
||||
{'choice': ', '.join(invalid_choices)})
|
||||
return ','.join(choices)
|
||||
|
||||
|
||||
class InventorySource(UnifiedJobTemplate, InventorySourceOptions):
|
||||
|
||||
@ -1598,7 +1598,7 @@ class RunInventoryUpdate(BaseTask):
|
||||
if inventory_update.instance_filters:
|
||||
vmware_opts.setdefault('host_filters', inventory_update.instance_filters)
|
||||
if inventory_update.group_by:
|
||||
vmware_opts.setdefault('groupby_patterns', inventory_update.groupby_patterns)
|
||||
vmware_opts.setdefault('groupby_patterns', inventory_update.group_by)
|
||||
|
||||
for k,v in vmware_opts.items():
|
||||
cp.set(section, k, unicode(v))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user