InventoryScript: better syntax checking for json stream
This commit is contained in:
parent
b8d057296a
commit
3a228b9d55
1 changed files with 8 additions and 0 deletions
|
@ -84,10 +84,14 @@ class InventoryScript(object):
|
|||
|
||||
if not isinstance(data, dict):
|
||||
data = {'hosts': data}
|
||||
# is not those subkeys, then simplified syntax, host with vars
|
||||
elif not any(k in data for k in ('hosts','vars')):
|
||||
data = {'hosts': [group_name], 'vars': data}
|
||||
|
||||
if 'hosts' in data:
|
||||
if not isinstance(data['hosts'], list):
|
||||
raise errors.AnsibleError("You defined a group \"%s\" with bad "
|
||||
"data for the host list:\n %s" % (group_name, data))
|
||||
|
||||
for hostname in data['hosts']:
|
||||
if not hostname in all_hosts:
|
||||
|
@ -96,6 +100,10 @@ class InventoryScript(object):
|
|||
group.add_host(host)
|
||||
|
||||
if 'vars' in data:
|
||||
if not isinstance(data['vars'], dict):
|
||||
raise errors.AnsibleError("You defined a group \"%s\" with bad "
|
||||
"data for variables:\n %s" % (group_name, data))
|
||||
|
||||
for k, v in data['vars'].iteritems():
|
||||
if group.name == all.name:
|
||||
all.set_variable(k, v)
|
||||
|
|
Loading…
Reference in a new issue