Fix hosts being in multiple groups, and duplicate host references in the same inventory file.
This commit is contained in:
parent
7302b7bbc4
commit
8e88667f82
3 changed files with 27 additions and 3 deletions
|
@ -37,6 +37,7 @@ class InventoryParser(object):
|
||||||
fh = open(filename)
|
fh = open(filename)
|
||||||
self.lines = fh.readlines()
|
self.lines = fh.readlines()
|
||||||
self.groups = {}
|
self.groups = {}
|
||||||
|
self.hosts = {}
|
||||||
self._parse()
|
self._parse()
|
||||||
|
|
||||||
def _parse(self):
|
def _parse(self):
|
||||||
|
@ -81,7 +82,12 @@ class InventoryParser(object):
|
||||||
tokens2 = hostname.split(":")
|
tokens2 = hostname.split(":")
|
||||||
hostname = tokens2[0]
|
hostname = tokens2[0]
|
||||||
port = tokens2[1]
|
port = tokens2[1]
|
||||||
host = Host(name=hostname, port=port)
|
host = None
|
||||||
|
if hostname in self.hosts:
|
||||||
|
host = self.hosts[hostname]
|
||||||
|
else:
|
||||||
|
host = Host(name=hostname, port=port)
|
||||||
|
self.hosts[hostname] = host
|
||||||
if len(tokens) > 1:
|
if len(tokens) > 1:
|
||||||
for t in tokens[1:]:
|
for t in tokens[1:]:
|
||||||
(k,v) = t.split("=")
|
(k,v) = t.split("=")
|
||||||
|
|
|
@ -128,9 +128,9 @@ class TestInventory(unittest.TestCase):
|
||||||
print vars
|
print vars
|
||||||
|
|
||||||
expected = dict(
|
expected = dict(
|
||||||
a='1', b='2', c='3', d='100002',
|
a='1', b='2', c='3', d='100002', rga='1', rgb='2', rgc='3',
|
||||||
inventory_hostname='rtp_a',
|
inventory_hostname='rtp_a',
|
||||||
group_names=[ 'eastcoast', 'nc', 'rtp', 'us' ]
|
group_names=[ 'eastcoast', 'nc', 'redundantgroup', 'redundantgroup2', 'redundantgroup3', 'rtp', 'us' ]
|
||||||
)
|
)
|
||||||
print vars
|
print vars
|
||||||
print expected
|
print expected
|
||||||
|
|
|
@ -12,6 +12,24 @@ florida
|
||||||
[us:children]
|
[us:children]
|
||||||
eastcoast
|
eastcoast
|
||||||
|
|
||||||
|
[redundantgroup]
|
||||||
|
rtp_a
|
||||||
|
|
||||||
|
[redundantgroup2]
|
||||||
|
rtp_a
|
||||||
|
|
||||||
|
[redundantgroup3:children]
|
||||||
|
rtp
|
||||||
|
|
||||||
|
[redundantgroup:vars]
|
||||||
|
rga=1
|
||||||
|
|
||||||
|
[redundantgroup2:vars]
|
||||||
|
rgb=2
|
||||||
|
|
||||||
|
[redundantgroup3:vars]
|
||||||
|
rgc=3
|
||||||
|
|
||||||
[nc:vars]
|
[nc:vars]
|
||||||
b=10000
|
b=10000
|
||||||
c=10001
|
c=10001
|
||||||
|
|
Loading…
Reference in a new issue