inventory groups: make sure group.depth is updated on all grandchildren

This commit is contained in:
Serge van Ginderachter 2014-03-05 16:43:48 +01:00
parent 1c86909875
commit cc8efb4aab
2 changed files with 11 additions and 1 deletions

View file

@ -68,7 +68,6 @@ class InventoryDirectory(object):
self.groups[name] = group
else:
# group is already there, copy variables
# note: depth numbers on duplicates may be bogus
for k, v in group.get_variables().iteritems():
self.groups[name].set_variable(k, v)
for host in group.hosts:

View file

@ -40,8 +40,13 @@ class Group(object):
# don't add if it's already there
if not group in self.child_groups:
self.child_groups.append(group)
# update the depth of the child
group.depth = max([self.depth+1, group.depth])
# update the depth of the grandchildren
group._check_children_depth()
# now add self to child's parent_groups list, but only if there
# isn't already a group with the same name
if not self.name in [g.name for g in group.parent_groups]:
@ -49,6 +54,12 @@ class Group(object):
self.clear_hosts_cache()
def _check_children_depth(self):
for group in self.child_groups:
group.depth = max([self.depth+1, group.depth])
group._check_children_depth()
def add_host(self, host):
self.hosts.append(host)