ini plugin should recursively instantiate pending
solves inconsistent behaviour on ini host format depending on definition order
fixes #32196
(cherry picked from commit 9d28973b5e
)
This commit is contained in:
parent
dd930344b6
commit
07674f5062
2 changed files with 10 additions and 3 deletions
|
@ -126,6 +126,8 @@ Ansible Changes By Release
|
|||
(https://github.com/ansible/ansible/pull/32190)
|
||||
* Fix failure during upgrade due to NON_RESPONSIVE state for ovirt_hosts module
|
||||
(https://github.com/ansible/ansible/pull/32192)
|
||||
* ini inventory format now correclty handles group creation w/o need for specific orders
|
||||
https://github.com/ansible/ansible/pull/32471
|
||||
|
||||
<a id="2.4.1"></a>
|
||||
|
||||
|
|
|
@ -193,9 +193,7 @@ class InventoryModule(BaseFileInventoryPlugin):
|
|||
|
||||
if groupname in pending_declarations and state != 'vars':
|
||||
if pending_declarations[groupname]['state'] == 'children':
|
||||
for parent in pending_declarations[groupname]['parents']:
|
||||
self.inventory.add_child(parent, groupname)
|
||||
del pending_declarations[groupname]
|
||||
self._add_pending_children(groupname, pending_declarations)
|
||||
|
||||
continue
|
||||
elif line.startswith('[') and line.endswith(']'):
|
||||
|
@ -248,6 +246,13 @@ class InventoryModule(BaseFileInventoryPlugin):
|
|||
elif decl['state'] == 'children':
|
||||
raise AnsibleError("%s:%d: Section [%s:children] includes undefined group: %s" % (path, decl['line'], decl['parents'].pop(), decl['name']))
|
||||
|
||||
def _add_pending_children(self, group, pending):
|
||||
for parent in pending[group]['parents']:
|
||||
self.inventory.add_child(parent, group)
|
||||
if parent in pending and pending[parent]['state'] == 'children':
|
||||
self._add_pending_children(parent, pending)
|
||||
del pending[group]
|
||||
|
||||
def _parse_group_name(self, line):
|
||||
'''
|
||||
Takes a single line and tries to parse it as a group name. Returns the
|
||||
|
|
Loading…
Reference in a new issue