Add tests for new advanced inventory features (groups of groups, group variables) in the default INI format file.
This commit is contained in:
parent
46c661b3e3
commit
a7b9bf958d
4 changed files with 94 additions and 10 deletions
|
@ -57,6 +57,6 @@ class Host(object):
|
||||||
results.update(self.vars)
|
results.update(self.vars)
|
||||||
results['inventory_hostname'] = self.name
|
results['inventory_hostname'] = self.name
|
||||||
groups = self.get_groups()
|
groups = self.get_groups()
|
||||||
results['group_names'] = [ g.name for g in groups if g.name != 'all']
|
results['group_names'] = sorted([ g.name for g in groups if g.name != 'all'])
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ class Inventory(object):
|
||||||
results = utils.parse_json(out)
|
results = utils.parse_json(out)
|
||||||
results['inventory_hostname'] = hostname
|
results['inventory_hostname'] = hostname
|
||||||
groups = [ g.name for g in host.get_groups() if g.name != 'all' ]
|
groups = [ g.name for g in host.get_groups() if g.name != 'all' ]
|
||||||
results['group_names'] = groups
|
results['group_names'] = sorted(groups)
|
||||||
return results
|
return results
|
||||||
|
|
||||||
host = self.get_host(hostname)
|
host = self.get_host(hostname)
|
||||||
|
|
|
@ -11,9 +11,10 @@ class TestInventory(unittest.TestCase):
|
||||||
self.cwd = os.getcwd()
|
self.cwd = os.getcwd()
|
||||||
self.test_dir = os.path.join(self.cwd, 'test')
|
self.test_dir = os.path.join(self.cwd, 'test')
|
||||||
|
|
||||||
self.inventory_file = os.path.join(self.test_dir, 'simple_hosts')
|
self.inventory_file = os.path.join(self.test_dir, 'simple_hosts')
|
||||||
self.inventory_script = os.path.join(self.test_dir, 'inventory_api.py')
|
self.complex_inventory_file = os.path.join(self.test_dir, 'complex_hosts')
|
||||||
self.inventory_yaml = os.path.join(self.test_dir, 'yaml_hosts')
|
self.inventory_script = os.path.join(self.test_dir, 'inventory_api.py')
|
||||||
|
self.inventory_yaml = os.path.join(self.test_dir, 'yaml_hosts')
|
||||||
|
|
||||||
os.chmod(self.inventory_script, 0755)
|
os.chmod(self.inventory_script, 0755)
|
||||||
|
|
||||||
|
@ -28,16 +29,20 @@ class TestInventory(unittest.TestCase):
|
||||||
assert left == right
|
assert left == right
|
||||||
|
|
||||||
|
|
||||||
### Simple inventory format tests
|
|
||||||
|
|
||||||
def simple_inventory(self):
|
def simple_inventory(self):
|
||||||
return Inventory( self.inventory_file )
|
return Inventory(self.inventory_file)
|
||||||
|
|
||||||
def script_inventory(self):
|
def script_inventory(self):
|
||||||
return Inventory( self.inventory_script )
|
return Inventory(self.inventory_script)
|
||||||
|
|
||||||
def yaml_inventory(self):
|
def yaml_inventory(self):
|
||||||
return Inventory( self.inventory_yaml )
|
return Inventory(self.inventory_yaml)
|
||||||
|
|
||||||
|
def complex_inventory(self):
|
||||||
|
return Inventory(self.complex_inventory_file)
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
### Simple inventory format tests
|
||||||
|
|
||||||
def test_simple(self):
|
def test_simple(self):
|
||||||
inventory = self.simple_inventory()
|
inventory = self.simple_inventory()
|
||||||
|
@ -113,6 +118,27 @@ class TestInventory(unittest.TestCase):
|
||||||
print expected
|
print expected
|
||||||
assert vars == expected
|
assert vars == expected
|
||||||
|
|
||||||
|
###################################################
|
||||||
|
### INI file advanced tests
|
||||||
|
|
||||||
|
def test_complex_vars(self):
|
||||||
|
inventory = self.complex_inventory()
|
||||||
|
|
||||||
|
vars = inventory.get_variables('rtp_a')
|
||||||
|
print vars
|
||||||
|
|
||||||
|
expected = dict(
|
||||||
|
a='1', b='2', c='3', d='100002',
|
||||||
|
inventory_hostname='rtp_a',
|
||||||
|
group_names=[ 'eastcoast', 'nc', 'rtp', 'us' ]
|
||||||
|
)
|
||||||
|
print vars
|
||||||
|
print expected
|
||||||
|
assert vars == expected
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
###################################################
|
||||||
### Inventory API tests
|
### Inventory API tests
|
||||||
|
|
||||||
def test_script(self):
|
def test_script(self):
|
||||||
|
|
58
test/complex_hosts
Normal file
58
test/complex_hosts
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
# order of groups, children, and vars is not signficant
|
||||||
|
# so this example mixes them up for maximum testing
|
||||||
|
|
||||||
|
[nc:children]
|
||||||
|
rtp
|
||||||
|
triangle
|
||||||
|
|
||||||
|
[eastcoast:children]
|
||||||
|
nc
|
||||||
|
florida
|
||||||
|
|
||||||
|
[us:children]
|
||||||
|
eastcoast
|
||||||
|
|
||||||
|
[nc:vars]
|
||||||
|
b=10000
|
||||||
|
c=10001
|
||||||
|
d=10002
|
||||||
|
|
||||||
|
[rtp]
|
||||||
|
rtp_a
|
||||||
|
rtp_b
|
||||||
|
rtb_c
|
||||||
|
|
||||||
|
[rtp:vars]
|
||||||
|
a=1
|
||||||
|
b=2
|
||||||
|
c=3
|
||||||
|
|
||||||
|
[triangle]
|
||||||
|
tri_a
|
||||||
|
tri_b
|
||||||
|
tri_c
|
||||||
|
|
||||||
|
[triangle:vars]
|
||||||
|
a=11
|
||||||
|
b=12
|
||||||
|
c=13
|
||||||
|
|
||||||
|
[florida]
|
||||||
|
orlando
|
||||||
|
miami
|
||||||
|
|
||||||
|
[florida:vars]
|
||||||
|
a=100
|
||||||
|
b=101
|
||||||
|
c=102
|
||||||
|
|
||||||
|
|
||||||
|
[eastcoast:vars]
|
||||||
|
b=100000
|
||||||
|
c=100001
|
||||||
|
d=100002
|
||||||
|
|
||||||
|
[us:vars]
|
||||||
|
c=1000000
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue