Fixes related to uncommenting test_dir_inventory in TestInventory.
0. Uncomment the test. 1. Test fails. 2. Make vars unique per file in test inventory files. 3. Modify token addition to not ast.literal_eval(v) a variable containing a hash. 4. Modify vars to have an escape in test inventory file. 5. Catch exceptions explicitly. Any unknown exceptions should be a bug. 6. Test passes.
This commit is contained in:
parent
616d7e53b1
commit
16fe09eef8
5 changed files with 33 additions and 21 deletions
|
@ -123,12 +123,22 @@ class InventoryParser(object):
|
||||||
(k,v) = t.split("=", 1)
|
(k,v) = t.split("=", 1)
|
||||||
except ValueError, e:
|
except ValueError, e:
|
||||||
raise errors.AnsibleError("Invalid ini entry: %s - %s" % (t, str(e)))
|
raise errors.AnsibleError("Invalid ini entry: %s - %s" % (t, str(e)))
|
||||||
try:
|
|
||||||
host.set_variable(k,ast.literal_eval(v))
|
# If there is a hash in the value don't pass it through to ast at ast will split at the hash.
|
||||||
except:
|
if "#" in v:
|
||||||
# most likely a string that literal_eval
|
host.set_variable(k, v)
|
||||||
# doesn't like, so just set it
|
else:
|
||||||
host.set_variable(k,v)
|
try:
|
||||||
|
host.set_variable(k,ast.literal_eval(v))
|
||||||
|
# Using explicit exceptions.
|
||||||
|
# Likely a string that literal_eval does not like. We wil then just set it.
|
||||||
|
except ValueError:
|
||||||
|
# For some reason this was thought to be malformed.
|
||||||
|
host.set_variable(k, v)
|
||||||
|
except SyntaxError:
|
||||||
|
# Is this a hash with an equals at the end?
|
||||||
|
host.set_variable(k, v)
|
||||||
|
|
||||||
self.groups[active_group_name].add_host(host)
|
self.groups[active_group_name].add_host(host)
|
||||||
|
|
||||||
# [southeast:children]
|
# [southeast:children]
|
||||||
|
|
|
@ -417,15 +417,17 @@ class TestInventory(unittest.TestCase):
|
||||||
auth = inventory.get_variables('neptun')['auth']
|
auth = inventory.get_variables('neptun')['auth']
|
||||||
assert auth == 'YWRtaW46YWRtaW4='
|
assert auth == 'YWRtaW46YWRtaW4='
|
||||||
|
|
||||||
# test disabled as needs to be updated to model desired behavior
|
def test_dir_inventory(self):
|
||||||
#
|
inventory = self.dir_inventory()
|
||||||
#def test_dir_inventory(self):
|
|
||||||
# inventory = self.dir_inventory()
|
host_vars = inventory.get_variables('zeus')
|
||||||
# vars = inventory.get_variables('zeus')
|
|
||||||
#
|
expected_vars = {'inventory_hostname': 'zeus',
|
||||||
# print "VARS=%s" % vars
|
'inventory_hostname_short': 'zeus',
|
||||||
#
|
'group_names': ['greek', 'major-god', 'ungrouped'],
|
||||||
# assert vars == {'inventory_hostname': 'zeus',
|
'var_a': '3#4'}
|
||||||
# 'inventory_hostname_short': 'zeus',
|
|
||||||
# 'group_names': ['greek', 'major-god', 'ungrouped'],
|
print "HOST VARS=%s" % host_vars
|
||||||
# 'var_a': '1#2'}
|
print "EXPECTED VARS=%s" % expected_vars
|
||||||
|
|
||||||
|
assert host_vars == expected_vars
|
|
@ -1,3 +1,3 @@
|
||||||
zeus var_a=2
|
zeus var_a=0
|
||||||
morpheus
|
morpheus
|
||||||
thor
|
thor
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[major-god]
|
[major-god]
|
||||||
zeus var_a=1
|
zeus var_a=2
|
||||||
thor
|
thor
|
||||||
|
|
||||||
[minor-god]
|
[minor-god]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[major-god] # group with inline comments
|
[major-god] # group with inline comments
|
||||||
zeus var_a="1#2" # host with inline comments and "#" in the var string
|
zeus var_a="3\#4" # host with inline comments and "#" in the var string
|
||||||
# A comment
|
# A comment
|
||||||
thor
|
thor
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue