mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 13:20:23 -07:00
Correct variable blending from vars_files with hostvars in them
Fixes #8638
This commit is contained in:
parent
8956c636a5
commit
8a1fbed5d6
14 changed files with 69 additions and 64 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue