mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-30 14:21:26 -07:00
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 detect_range
|
||||||
from ansible.inventory.expand_hosts import expand_hostname_range
|
from ansible.inventory.expand_hosts import expand_hostname_range
|
||||||
from ansible import errors
|
from ansible import errors
|
||||||
|
from ansible import utils
|
||||||
import shlex
|
import shlex
|
||||||
import re
|
import re
|
||||||
import ast
|
import ast
|
||||||
|
@ -65,7 +66,7 @@ class InventoryParser(object):
|
||||||
active_group_name = 'ungrouped'
|
active_group_name = 'ungrouped'
|
||||||
|
|
||||||
for line in self.lines:
|
for line in self.lines:
|
||||||
line = line.split("#")[0].strip()
|
line = utils.before_comment(line).strip()
|
||||||
if line.startswith("[") and line.endswith("]"):
|
if line.startswith("[") and line.endswith("]"):
|
||||||
active_group_name = line.replace("[","").replace("]","")
|
active_group_name = line.replace("[","").replace("]","")
|
||||||
if line.find(":vars") != -1 or line.find(":children") != -1:
|
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)
|
password.append(new_char)
|
||||||
|
|
||||||
return ''.join(password)
|
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):
|
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
|
### check_conditional tests
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue