mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-07 22:02:50 +00:00
Correct variable blending from vars_files with hostvars in them
Fixes #8638
This commit is contained in:
@@ -3,3 +3,4 @@
|
||||
- 'extra_var == "extra_var"'
|
||||
- 'vars_var == "vars_var"'
|
||||
- 'vars_files_var == "vars_files_var"'
|
||||
- 'vars_files_var_role == "vars_files_var_role3"'
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
- debug: var=param_var
|
||||
- debug: var=vars_var
|
||||
- debug: var=vars_files_var
|
||||
- debug: var=vars_files_var_role
|
||||
- debug: var=defaults_file_var_role1
|
||||
- assert:
|
||||
that:
|
||||
@@ -9,4 +10,5 @@
|
||||
- 'param_var == "param_var_role1"'
|
||||
- 'vars_var == "vars_var"'
|
||||
- 'vars_files_var == "vars_files_var"'
|
||||
- 'vars_files_var_role == "vars_files_var_role3"'
|
||||
- 'defaults_file_var_role1 == "defaults_file_var_role1"'
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
# should override the global vars_files_var since it's local to the role
|
||||
vars_files_var: "vars_files_var_role1"
|
||||
# but will be set to the value in the last role included which defines it
|
||||
vars_files_var_role: "vars_files_var_role1"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
- debug: var=param_var
|
||||
- debug: var=vars_var
|
||||
- debug: var=vars_files_var
|
||||
- debug: var=vars_files_var_role
|
||||
- debug: var=defaults_file_var_role1
|
||||
- assert:
|
||||
that:
|
||||
@@ -9,4 +10,5 @@
|
||||
- 'param_var == "param_var_role2"'
|
||||
- 'vars_var == "vars_var"'
|
||||
- 'vars_files_var == "vars_files_var"'
|
||||
- 'vars_files_var_role == "vars_files_var_role3"'
|
||||
- 'defaults_file_var_role2 == "overridden by role vars"'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
# should override the global vars_files_var since it's local to the role
|
||||
vars_files_var: "vars_files_var_role1"
|
||||
vars_files_var_role: "vars_files_var_role2"
|
||||
# should override the value in defaults/main.yml for role 2
|
||||
defaults_file_var_role2: "overridden by role vars"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
- debug: var=param_var
|
||||
- debug: var=vars_var
|
||||
- debug: var=vars_files_var
|
||||
- debug: var=vars_files_var_role
|
||||
- debug: var=defaults_file_var_role1
|
||||
- assert:
|
||||
that:
|
||||
@@ -9,4 +10,5 @@
|
||||
- 'param_var == "param_var_role3"'
|
||||
- 'vars_var == "vars_var"'
|
||||
- 'vars_files_var == "vars_files_var"'
|
||||
- 'vars_files_var_role == "vars_files_var_role3"'
|
||||
- 'defaults_file_var_role3 == "overridden from inventory"'
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
---
|
||||
# should override the global vars_files_var since it's local to the role
|
||||
vars_files_var: "vars_files_var_role1"
|
||||
vars_files_var_role: "vars_files_var_role3"
|
||||
|
||||
@@ -12,8 +12,10 @@
|
||||
- debug: var=extra_var
|
||||
- debug: var=vars_var
|
||||
- debug: var=vars_files_var
|
||||
- debug: var=vars_files_var_role
|
||||
- assert:
|
||||
that:
|
||||
- 'extra_var == "extra_var"'
|
||||
- 'vars_var == "vars_var"'
|
||||
- 'vars_files_var == "vars_files_var"'
|
||||
- 'vars_files_var_role == "vars_files_var_role3"'
|
||||
|
||||
@@ -2,3 +2,4 @@
|
||||
extra_var: "BAD!"
|
||||
role_var: "BAD!"
|
||||
vars_files_var: "vars_files_var"
|
||||
vars_files_var_role: "should be overridden by roles"
|
||||
|
||||
@@ -266,37 +266,6 @@ class TestMe(unittest.TestCase):
|
||||
assert 'foo' in play.playbook.VARS_CACHE['localhost'], "vars_file vars were not loaded into vars_cache"
|
||||
assert play.playbook.VARS_CACHE['localhost']['foo'] == 'bar', "foo does not equal bar"
|
||||
|
||||
def test_vars_files_for_host_with_extra_vars(self):
|
||||
|
||||
# host != None
|
||||
# vars in filename2
|
||||
# no vars in filename3
|
||||
|
||||
# make a vars file
|
||||
fd, temp_path = mkstemp()
|
||||
f = open(temp_path, "wb")
|
||||
f.write("foo: bar\n")
|
||||
f.close()
|
||||
|
||||
# build play attributes
|
||||
playbook = FakePlayBook()
|
||||
ds = { "hosts": "localhost",
|
||||
"vars_files": ["{{ temp_path }}"]}
|
||||
basedir = "."
|
||||
playbook.VARS_CACHE['localhost']['temp_path'] = temp_path
|
||||
playbook.extra_vars = {"foo": "extra"}
|
||||
|
||||
# create play and do first run
|
||||
play = Play(playbook, ds, basedir)
|
||||
|
||||
# the second run is started by calling update_vars_files
|
||||
play.update_vars_files(['localhost'])
|
||||
os.remove(temp_path)
|
||||
|
||||
assert 'foo' in play.vars, "extra vars were not set in play.vars"
|
||||
assert 'foo' in play.playbook.VARS_CACHE['localhost'], "vars_file vars were not loaded into vars_cache"
|
||||
assert play.playbook.VARS_CACHE['localhost']['foo'] == 'extra', "extra vars did not overwrite vars_files vars"
|
||||
|
||||
|
||||
########################################
|
||||
# COMPLEX FILENAME TEMPLATING TESTS
|
||||
|
||||
Reference in New Issue
Block a user