mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
virtualbox: Fix crash when handling deeply nested hostvars (#5348)
* virtualbox: Fix nested data parsing - Skip parsing values with keys that have both a value and nested data. - Skip parsing values that are nested more than two keys deep. * Update changelogs/fragments/5348-fix-vbox-deeply-nested-hostvars.yml Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
dfe1f9a29e
commit
b0bb994c3e
2 changed files with 7 additions and 2 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- virtualbox inventory plugin - skip parsing values with keys that have both a value and nested data. Skip parsing values that are nested more than two keys deep (https://github.com/ansible-collections/community.general/issues/5332, https://github.com/ansible-collections/community.general/pull/5348).
|
|
@ -186,10 +186,13 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||||
else:
|
else:
|
||||||
# found vars, accumulate in hostvars for clean inventory set
|
# found vars, accumulate in hostvars for clean inventory set
|
||||||
pref_k = 'vbox_' + k.strip().replace(' ', '_')
|
pref_k = 'vbox_' + k.strip().replace(' ', '_')
|
||||||
if k.startswith(' '):
|
leading_spaces = len(k) - len(k.lstrip(' '))
|
||||||
if prevkey not in hostvars[current_host]:
|
if 0 < leading_spaces <= 2:
|
||||||
|
if prevkey not in hostvars[current_host] or not isinstance(hostvars[current_host][prevkey], dict):
|
||||||
hostvars[current_host][prevkey] = {}
|
hostvars[current_host][prevkey] = {}
|
||||||
hostvars[current_host][prevkey][pref_k] = v
|
hostvars[current_host][prevkey][pref_k] = v
|
||||||
|
elif leading_spaces > 2:
|
||||||
|
continue
|
||||||
else:
|
else:
|
||||||
if v != '':
|
if v != '':
|
||||||
hostvars[current_host][pref_k] = v
|
hostvars[current_host][pref_k] = v
|
||||||
|
|
Loading…
Reference in a new issue