mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Revert pull request #1091
Automatic quoting of variables in only_if breaks existing playbooks where entire statements are put in a variable, and other cases. See issue #1120 for details.
This commit is contained in:
parent
06cfc52afd
commit
4b29c2cf74
3 changed files with 4 additions and 70 deletions
|
@ -323,7 +323,7 @@ class Runner(object):
|
|||
new_args = new_args + "%s='%s' " % (k,v)
|
||||
module_args = new_args
|
||||
|
||||
conditional = utils.template(self.basedir, self.conditional, inject, do_repr=True)
|
||||
conditional = utils.template(self.basedir, self.conditional, inject)
|
||||
if not utils.check_conditional(conditional):
|
||||
result = utils.jsonify(dict(skipped=True))
|
||||
self.callbacks.on_skipped(host, inject.get('item',None))
|
||||
|
|
|
@ -289,7 +289,7 @@ def varLookup(varname, vars):
|
|||
except VarNotFoundException:
|
||||
return None
|
||||
|
||||
def varReplace(raw, vars, do_repr=False, depth=0):
|
||||
def varReplace(raw, vars, depth=0):
|
||||
''' Perform variable replacement of $variables in string raw using vars dictionary '''
|
||||
# this code originally from yum
|
||||
|
||||
|
@ -315,13 +315,6 @@ def varReplace(raw, vars, do_repr=False, depth=0):
|
|||
replacement = raw[m['start']:m['end']]
|
||||
|
||||
start, end = m['start'], m['end']
|
||||
if do_repr:
|
||||
replacement = repr(replacement)
|
||||
if (start > 0 and
|
||||
((raw[start - 1] == "'" and raw[end] == "'") or
|
||||
(raw[start - 1] == '"' and raw[end] == '"'))):
|
||||
start -= 1
|
||||
end += 1
|
||||
done.append(raw[:start]) # Keep stuff leading up to token
|
||||
done.append(unicode(replacement)) # Append replacement value
|
||||
raw = raw[end:] # Continue with remainder of string
|
||||
|
@ -363,7 +356,7 @@ def varReplaceFilesAndPipes(basedir, raw):
|
|||
return ''.join(done)
|
||||
|
||||
|
||||
def template(basedir, text, vars, do_repr=False):
|
||||
def template(basedir, text, vars):
|
||||
''' run a text buffer through the templating engine until it no longer changes '''
|
||||
|
||||
prev_text = ''
|
||||
|
@ -371,7 +364,7 @@ def template(basedir, text, vars, do_repr=False):
|
|||
text = text.decode('utf-8')
|
||||
except UnicodeEncodeError:
|
||||
pass # already unicode
|
||||
text = varReplace(unicode(text), vars, do_repr)
|
||||
text = varReplace(unicode(text), vars)
|
||||
text = varReplaceFilesAndPipes(basedir, text)
|
||||
return text
|
||||
|
||||
|
|
|
@ -202,65 +202,6 @@ class TestUtils(unittest.TestCase):
|
|||
|
||||
assert res == 'hello world'
|
||||
|
||||
def test_varReplace_repr_basic(self):
|
||||
vars = {
|
||||
'color': '$favorite_color',
|
||||
'favorite_color': 'blue',
|
||||
}
|
||||
|
||||
template = '$color == "blue"'
|
||||
res = ansible.utils.varReplace(template, vars, do_repr=True)
|
||||
assert eval(res)
|
||||
|
||||
def test_varReplace_repr_varinvar(self):
|
||||
vars = {
|
||||
'foo': 'foo',
|
||||
'bar': 'bar',
|
||||
'foobar': '$foo$bar',
|
||||
'var': {
|
||||
'foo': 'foo',
|
||||
'foobar': '$foo$bar',
|
||||
},
|
||||
}
|
||||
|
||||
template = '$foobar == "foobar"'
|
||||
res = ansible.utils.varReplace(template, vars, do_repr=True)
|
||||
assert eval(res)
|
||||
|
||||
def test_varReplace_repr_varindex(self):
|
||||
vars = {
|
||||
'foo': 'foo',
|
||||
'var': {
|
||||
'foo': 'bar',
|
||||
},
|
||||
}
|
||||
|
||||
template = '${var.$foo} == "bar"'
|
||||
res = ansible.utils.varReplace(template, vars, do_repr=True)
|
||||
assert eval(res)
|
||||
|
||||
def test_varReplace_repr_varpartindex(self):
|
||||
vars = {
|
||||
'foo': 'foo',
|
||||
'var': {
|
||||
'foobar': 'foobar',
|
||||
},
|
||||
}
|
||||
|
||||
template = '${var.${foo}bar} == "foobar"'
|
||||
res = ansible.utils.varReplace(template, vars, do_repr=True)
|
||||
assert eval(res)
|
||||
|
||||
def test_varReplace_repr_nonstr(self):
|
||||
vars = {
|
||||
'foo': True,
|
||||
'bar': 1L,
|
||||
}
|
||||
|
||||
template = '${foo} == $bar'
|
||||
res = ansible.utils.varReplace(template, vars, do_repr=True)
|
||||
assert res == 'True == 1L'
|
||||
|
||||
def test_varReplace_consecutive_vars(self):
|
||||
vars = {
|
||||
'foo': 'foo',
|
||||
|
|
Loading…
Reference in a new issue