Commit a8947917 by Michael DeHaan

Slightly friendlier error on missing hosts file, slightly friendlier error on…

Slightly friendlier error on missing hosts file, slightly friendlier error on inventory script returning invalid syntax
(or if inventory is non-script and accidentally executable).
parent 1163c23c
......@@ -93,7 +93,7 @@ class Inventory(object):
else:
raise errors.AnsibleError("YAML inventory support is deprecated in 0.6 and removed in 0.7, see the migration script in examples/scripts in the git checkout")
else:
raise errors.AnsibleError("No valid hosts inventory file found")
raise errors.AnsibleError("Unable to find an inventory file, specify one with -i ?")
def _match(self, str, pattern_str):
if pattern_str.startswith('~'):
......
......@@ -39,27 +39,37 @@ class InventoryScript(object):
self.groups = self._parse()
def _parse(self):
all_hosts = {}
self.raw = utils.parse_json(self.data)
all = Group('all')
groups = dict(all=all)
group = None
if 'failed' in self.raw:
raise errors.AnsibleError("failed to parse executable inventory script results")
self.raw = utils.parse_json(self.data)
all=Group('all')
groups = dict(all=all)
group = None
for (group_name, data) in self.raw.items():
group = groups[group_name] = Group(group_name)
host = None
if not isinstance(data, dict):
data = {'hosts': data}
if 'hosts' in data:
for hostname in data['hosts']:
if not hostname in all_hosts:
all_hosts[hostname] = Host(hostname)
host = all_hosts[hostname]
group.add_host(host)
if 'vars' in data:
for k, v in data['vars'].iteritems():
group.set_variable(k, v)
all.add_child_group(group)
# Separate loop to ensure all groups are defined
for (group_name, data) in self.raw.items():
if isinstance(data, dict) and 'children' in data:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment