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)
|
(https://github.com/ansible/ansible/pull/32190)
|
||||||
* Fix failure during upgrade due to NON_RESPONSIVE state for ovirt_hosts module
|
* Fix failure during upgrade due to NON_RESPONSIVE state for ovirt_hosts module
|
||||||
(https://github.com/ansible/ansible/pull/32192)
|
(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>
|
<a id="2.4.1"></a>
|
||||||
|
|
||||||
|
|
|
@ -193,9 +193,7 @@ class InventoryModule(BaseFileInventoryPlugin):
|
||||||
|
|
||||||
if groupname in pending_declarations and state != 'vars':
|
if groupname in pending_declarations and state != 'vars':
|
||||||
if pending_declarations[groupname]['state'] == 'children':
|
if pending_declarations[groupname]['state'] == 'children':
|
||||||
for parent in pending_declarations[groupname]['parents']:
|
self._add_pending_children(groupname, pending_declarations)
|
||||||
self.inventory.add_child(parent, groupname)
|
|
||||||
del pending_declarations[groupname]
|
|
||||||
|
|
||||||
continue
|
continue
|
||||||
elif line.startswith('[') and line.endswith(']'):
|
elif line.startswith('[') and line.endswith(']'):
|
||||||
|
@ -248,6 +246,13 @@ class InventoryModule(BaseFileInventoryPlugin):
|
||||||
elif decl['state'] == 'children':
|
elif decl['state'] == 'children':
|
||||||
raise AnsibleError("%s:%d: Section [%s:children] includes undefined group: %s" % (path, decl['line'], decl['parents'].pop(), decl['name']))
|
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):
|
def _parse_group_name(self, line):
|
||||||
'''
|
'''
|
||||||
Takes a single line and tries to parse it as a group name. Returns the
|
Takes a single line and tries to parse it as a group name. Returns the
|
||||||
|
|
Loading…
Reference in a new issue