Fix correct variable expansion in includes only_if.

There's not need to run the complete include through the templating engine.
Several variables were not included before the conditional was evaluated.
This commit is contained in:
Jeroen Hoekx
2012-05-11 15:06:34 +02:00
parent dab50574e0
commit cd9f926b5f
6 changed files with 61 additions and 6 deletions

View File

@@ -172,3 +172,28 @@ class TestPlaybook(unittest.TestCase):
print data
assert data.find("ears") != -1, "template success"
def test_includes(self):
pb = os.path.join(self.test_dir, 'playbook_includes.yml')
actual = self._run(pb)
for i, event in enumerate(EVENTS):
print "EVENT %s"%(i)
print event
if i == 6:
assert 'blue' in event[1][1]['cmd']
if i == 8:
assert 'quack' in event[1][1]['cmd']
if i == 10:
assert 'RAN' in event[1][1]['cmd']
if i == 12:
assert 'RAN' in event[1][1]['cmd']
if i == 14:
assert 'red' in event[1][1]['cmd']
if i == 18 or i == 20:
assert 'skipped' in event[0]

View File

@@ -1,3 +1,4 @@
---
duck: quack
cow: moo
extguard: " '$favcolor' == 'blue' "

View File

@@ -0,0 +1,14 @@
---
- name: test vars
action: shell echo $favcolor
- name: test vars_files
action: shell echo $duck
- name: test vars condition
action: shell echo RAN
only_if: $guard
- name: test vars_files condition
action: shell echo RAN
only_if: $extguard

View File

@@ -0,0 +1,15 @@
---
# Test correct variable expansion in included files and only if
- hosts: all
vars:
favcolor: "blue"
guard: ' "$favcolor" == "blue" '
vars_files:
- common_vars.yml
tasks:
- include: playbook_included.yml
# test overrides of variables
- include: playbook_included.yml favcolor=red