mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 05:10:22 -07:00
Load parent groups when processing group_vars
This commit is contained in:
parent
ded0c61750
commit
6de8c27085
3 changed files with 15 additions and 2 deletions
|
@ -200,6 +200,16 @@ class Inventory(object):
|
||||||
hosts[host.name] = host
|
hosts[host.name] = host
|
||||||
return sorted(hosts.values(), key=lambda x: x.name)
|
return sorted(hosts.values(), key=lambda x: x.name)
|
||||||
|
|
||||||
|
def groups_for_host(self, host):
|
||||||
|
results = []
|
||||||
|
groups = self.get_groups()
|
||||||
|
for group in groups:
|
||||||
|
for hostn in group.get_hosts():
|
||||||
|
if host == hostn.name:
|
||||||
|
results.append(group)
|
||||||
|
continue
|
||||||
|
return results
|
||||||
|
|
||||||
def get_groups(self):
|
def get_groups(self):
|
||||||
return self.groups
|
return self.groups
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,11 @@
|
||||||
class Group(object):
|
class Group(object):
|
||||||
''' a group of ansible hosts '''
|
''' a group of ansible hosts '''
|
||||||
|
|
||||||
__slots__ = [ 'name', 'hosts', 'vars', 'child_groups', 'parent_groups' ]
|
__slots__ = [ 'name', 'hosts', 'vars', 'child_groups', 'parent_groups', 'depth' ]
|
||||||
|
|
||||||
def __init__(self, name=None):
|
def __init__(self, name=None):
|
||||||
|
|
||||||
|
self.depth = 0
|
||||||
self.name = name
|
self.name = name
|
||||||
self.hosts = []
|
self.hosts = []
|
||||||
self.vars = {}
|
self.vars = {}
|
||||||
|
@ -35,6 +36,7 @@ class Group(object):
|
||||||
if self == group:
|
if self == group:
|
||||||
raise Exception("can't add group to itself")
|
raise Exception("can't add group to itself")
|
||||||
self.child_groups.append(group)
|
self.child_groups.append(group)
|
||||||
|
group.depth = group.depth + 1
|
||||||
group.parent_groups.append(self)
|
group.parent_groups.append(self)
|
||||||
|
|
||||||
def add_host(self, host):
|
def add_host(self, host):
|
||||||
|
|
|
@ -226,7 +226,8 @@ class Play(object):
|
||||||
if (host is not None):
|
if (host is not None):
|
||||||
inventory = self.playbook.inventory
|
inventory = self.playbook.inventory
|
||||||
hostrec = inventory.get_host(host)
|
hostrec = inventory.get_host(host)
|
||||||
groups = [ g.name for g in hostrec.groups ]
|
groupz = sorted(inventory.groups_for_host(host), key=lambda g: g.depth)
|
||||||
|
groups = [ g.name for g in groupz ]
|
||||||
basedir = inventory.basedir()
|
basedir = inventory.basedir()
|
||||||
if basedir is not None:
|
if basedir is not None:
|
||||||
for x in groups:
|
for x in groups:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue