check type to avoid typeerror tb
fixes #31290 by giving more meaningful message
(cherry picked from commit 8aa33419c9
)
This commit is contained in:
parent
64b569635d
commit
dff33071d0
2 changed files with 9 additions and 3 deletions
|
@ -93,6 +93,7 @@ Ansible Changes By Release
|
|||
* inventory_file variable again returns full path, not just basename
|
||||
* added info about cwd group/host vars to porting guide
|
||||
* Fix name parsing out of envra in the yum module
|
||||
* give user friendly error on badly formatted yaml inventory source
|
||||
|
||||
<a id="2.4"></a>
|
||||
|
||||
|
|
|
@ -49,7 +49,6 @@ all: # keys must be unique, i.e. only one 'hosts' per group
|
|||
last_var: MYVALUE
|
||||
'''
|
||||
|
||||
import re
|
||||
import os
|
||||
from collections import MutableMapping
|
||||
|
||||
|
@ -106,8 +105,14 @@ class InventoryModule(BaseFileInventoryPlugin):
|
|||
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 section in group_data:
|
||||
# convert strings to dicts as these are allowed
|
||||
if isinstance(group_data[section], string_types):
|
||||
group_data[section] = {group_data[section]: None}
|
||||
|
||||
if not isinstance(group_data[section], MutableMapping):
|
||||
raise AnsibleParserError('Invalid %s entry for %s group, requires a dictionary, found %s instead.' %
|
||||
(section, group, type(group_data[section])))
|
||||
|
||||
if group_data.get('vars', False):
|
||||
for var in group_data['vars']:
|
||||
|
|
Loading…
Reference in a new issue