Allow escaped comments in inventory files.
This commit is contained in:
parent
4e8ed92130
commit
94a7fb60fe
3 changed files with 34 additions and 1 deletions
|
@ -23,6 +23,7 @@ from ansible.inventory.group import Group
|
|||
from ansible.inventory.expand_hosts import detect_range
|
||||
from ansible.inventory.expand_hosts import expand_hostname_range
|
||||
from ansible import errors
|
||||
from ansible import utils
|
||||
import shlex
|
||||
import re
|
||||
import ast
|
||||
|
@ -65,7 +66,7 @@ class InventoryParser(object):
|
|||
active_group_name = 'ungrouped'
|
||||
|
||||
for line in self.lines:
|
||||
line = line.split("#")[0].strip()
|
||||
line = utils.before_comment(line).strip()
|
||||
if line.startswith("[") and line.endswith("]"):
|
||||
active_group_name = line.replace("[","").replace("]","")
|
||||
if line.find(":vars") != -1 or line.find(":children") != -1:
|
||||
|
|
|
@ -1071,3 +1071,12 @@ def random_password(length=20, chars=C.DEFAULT_PASSWORD_CHARS):
|
|||
password.append(new_char)
|
||||
|
||||
return ''.join(password)
|
||||
|
||||
def before_comment(msg):
|
||||
''' what's the part of a string before a comment? '''
|
||||
msg = msg.replace("\#","**NOT_A_COMMENT**")
|
||||
msg = msg.split("#")[0]
|
||||
msg = msg.replace("**NOT_A_COMMENT**","#")
|
||||
return msg
|
||||
|
||||
|
||||
|
|
|
@ -16,6 +16,29 @@ sys.setdefaultencoding("utf8")
|
|||
|
||||
class TestUtils(unittest.TestCase):
|
||||
|
||||
def test_before_comment(self):
|
||||
''' see if we can detect the part of a string before a comment. Used by INI parser in inventory '''
|
||||
|
||||
input = "before # comment"
|
||||
expected = "before "
|
||||
actual = ansible.utils.before_comment(input)
|
||||
assert expected == actual
|
||||
|
||||
input = "before \# not a comment"
|
||||
expected = "before # not a comment"
|
||||
actual = ansible.utils.before_comment(input)
|
||||
assert expected == actual
|
||||
|
||||
input = ""
|
||||
expected = ""
|
||||
actual = ansible.utils.before_comment(input)
|
||||
assert expected == actual
|
||||
|
||||
input = "#"
|
||||
expected = ""
|
||||
actual = ansible.utils.before_comment(input)
|
||||
assert expected == actual
|
||||
|
||||
#####################################
|
||||
### check_conditional tests
|
||||
|
||||
|
|
Loading…
Reference in a new issue