From 3a228b9d55b00aa419b8beb8b3f24040cf52b2b5 Mon Sep 17 00:00:00 2001 From: Serge van Ginderachter Date: Thu, 21 Aug 2014 17:53:11 +0200 Subject: [PATCH] InventoryScript: better syntax checking for json stream --- lib/ansible/inventory/script.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/ansible/inventory/script.py b/lib/ansible/inventory/script.py index 8b2e4619a9c..e43cf249724 100644 --- a/lib/ansible/inventory/script.py +++ b/lib/ansible/inventory/script.py @@ -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)