mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
dont validate group names in yaml plugin
This commit is contained in:
parent
aaaf88908d
commit
a819cfcad7
1 changed files with 17 additions and 30 deletions
|
@ -68,9 +68,6 @@ class InventoryModule(BaseFileInventoryPlugin):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
||||||
super(InventoryModule, self).__init__()
|
super(InventoryModule, self).__init__()
|
||||||
self.patterns = {}
|
|
||||||
|
|
||||||
self._compile_patterns()
|
|
||||||
|
|
||||||
def verify_file(self, path):
|
def verify_file(self, path):
|
||||||
|
|
||||||
|
@ -104,31 +101,27 @@ class InventoryModule(BaseFileInventoryPlugin):
|
||||||
|
|
||||||
def _parse_group(self, group, group_data):
|
def _parse_group(self, group, group_data):
|
||||||
|
|
||||||
if self.patterns['groupname'].match(group):
|
self.inventory.add_group(group)
|
||||||
|
|
||||||
self.inventory.add_group(group)
|
if isinstance(group_data, MutableMapping):
|
||||||
|
# make sure they are dicts
|
||||||
|
for section in ['vars', 'children', 'hosts']:
|
||||||
|
if section in group_data and isinstance(group_data[section], string_types):
|
||||||
|
group_data[section] = {group_data[section]: None}
|
||||||
|
|
||||||
if isinstance(group_data, MutableMapping):
|
if group_data.get('vars', False):
|
||||||
# make sure they are dicts
|
for var in group_data['vars']:
|
||||||
for section in ['vars', 'children', 'hosts']:
|
self.inventory.set_variable(group, var, group_data['vars'][var])
|
||||||
if section in group_data and isinstance(group_data[section], string_types):
|
|
||||||
group_data[section] = {group_data[section]: None}
|
|
||||||
|
|
||||||
if group_data.get('vars', False):
|
if group_data.get('children', False):
|
||||||
for var in group_data['vars']:
|
for subgroup in group_data['children']:
|
||||||
self.inventory.set_variable(group, var, group_data['vars'][var])
|
self._parse_group(subgroup, group_data['children'][subgroup])
|
||||||
|
self.inventory.add_child(group, subgroup)
|
||||||
|
|
||||||
if group_data.get('children', False):
|
if group_data.get('hosts', False):
|
||||||
for subgroup in group_data['children']:
|
for host_pattern in group_data['hosts']:
|
||||||
self._parse_group(subgroup, group_data['children'][subgroup])
|
hosts, port = self._parse_host(host_pattern)
|
||||||
self.inventory.add_child(group, subgroup)
|
self.populate_host_vars(hosts, group_data['hosts'][host_pattern] or {}, group, port)
|
||||||
|
|
||||||
if group_data.get('hosts', False):
|
|
||||||
for host_pattern in group_data['hosts']:
|
|
||||||
hosts, port = self._parse_host(host_pattern)
|
|
||||||
self.populate_host_vars(hosts, group_data['hosts'][host_pattern] or {}, group, port)
|
|
||||||
else:
|
|
||||||
self.display.warning("Skipping '%s' as this is not a valid group name" % group)
|
|
||||||
|
|
||||||
def _parse_host(self, host_pattern):
|
def _parse_host(self, host_pattern):
|
||||||
'''
|
'''
|
||||||
|
@ -162,9 +155,3 @@ class InventoryModule(BaseFileInventoryPlugin):
|
||||||
hostnames = [pattern]
|
hostnames = [pattern]
|
||||||
|
|
||||||
return (hostnames, port)
|
return (hostnames, port)
|
||||||
|
|
||||||
def _compile_patterns(self):
|
|
||||||
'''
|
|
||||||
Compiles the regular expressions required to parse the inventory and stores them in self.patterns.
|
|
||||||
'''
|
|
||||||
self.patterns['groupname'] = re.compile(u'''^[A-Za-z_][A-Za-z0-9_]*$''')
|
|
||||||
|
|
Loading…
Reference in a new issue