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:
Daniel Hokka Zakrisson 2012-09-28 13:58:23 +02:00
parent 06cfc52afd
commit 4b29c2cf74
3 changed files with 4 additions and 70 deletions

View file

@ -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))

View file

@ -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

View file

@ -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',