List hosts in no group in the ungrouped group.

pull/146/head
Jeroen Hoekx 12 years ago
parent 3a24aa9a70
commit 961ccdb2f4

@ -168,6 +168,8 @@ class Inventory(object):
hosts = []
groups = {}
ungrouped = []
for item in data:
if type(item) == dict:
if "group" in item:
@ -186,13 +188,14 @@ class Inventory(object):
groups[group_name] = group_hosts
hosts.extend(group_hosts)
# or a host
elif "host" in item:
host_name = self._parse_yaml_host(item)
hosts.append(host_name)
ungrouped.append(host_name)
else:
host_name = self._parse_yaml_host(item)
hosts.append(host_name)
ungrouped.append(host_name)
# filter duplicate hosts
output_hosts = []
@ -200,6 +203,18 @@ class Inventory(object):
if host not in output_hosts:
output_hosts.append(host)
if len(ungrouped) > 0 :
# hosts can be defined top-level, but also in a group
really_ungrouped = []
for host in ungrouped:
already_grouped = False
for name, group_hosts in groups.items():
if host in group_hosts:
already_grouped = True
if not already_grouped:
really_ungrouped.append(host)
groups["ungrouped"] = really_ungrouped
return output_hosts, groups
def _parse_yaml_host(self, item, variables=[]):

@ -51,6 +51,13 @@ class TestInventory(unittest.TestCase):
expected_hosts=['thor', 'odin', 'loki']
assert hosts == expected_hosts
def test_simple_ungrouped(self):
inventory = self.simple_inventory()
hosts = inventory.list_hosts("ungrouped")
expected_hosts=['jupiter', 'saturn']
assert hosts == expected_hosts
def test_simple_combined(self):
inventory = self.simple_inventory()
hosts = inventory.list_hosts("norse:greek")
@ -176,6 +183,13 @@ class TestInventory(unittest.TestCase):
expected_hosts=['thor', 'odin', 'loki']
assert hosts == expected_hosts
def test_simple_ungrouped(self):
inventory = self.yaml_inventory()
hosts = inventory.list_hosts("ungrouped")
expected_hosts=['jupiter']
assert hosts == expected_hosts
def test_yaml_combined(self):
inventory = self.yaml_inventory()
hosts = inventory.list_hosts("norse:greek")

@ -5,6 +5,8 @@
vars:
- moon: titan
- zeus
- group: greek
hosts:
- zeus

Loading…
Cancel
Save