mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-02 14:29:10 -07:00
Fix include param precedence in variable manager
This commit is contained in:
parent
78e4f176e6
commit
91500f8f5f
3 changed files with 15 additions and 0 deletions
|
@ -272,6 +272,14 @@ class Task(Base, Conditional, Taggable, Become):
|
||||||
|
|
||||||
return all_vars
|
return all_vars
|
||||||
|
|
||||||
|
def get_include_params(self):
|
||||||
|
all_vars = dict()
|
||||||
|
if self._task_include:
|
||||||
|
all_vars.update(self._task_include.get_include_params())
|
||||||
|
if self.action == 'include':
|
||||||
|
all_vars.update(self.vars)
|
||||||
|
return all_vars
|
||||||
|
|
||||||
def copy(self, exclude_block=False):
|
def copy(self, exclude_block=False):
|
||||||
new_me = super(Task, self).copy()
|
new_me = super(Task, self).copy()
|
||||||
|
|
||||||
|
|
|
@ -319,6 +319,12 @@ class VariableManager:
|
||||||
all_vars = combine_vars(all_vars, self._vars_cache.get(host.get_name(), dict()))
|
all_vars = combine_vars(all_vars, self._vars_cache.get(host.get_name(), dict()))
|
||||||
all_vars = combine_vars(all_vars, self._nonpersistent_fact_cache.get(host.name, dict()))
|
all_vars = combine_vars(all_vars, self._nonpersistent_fact_cache.get(host.name, dict()))
|
||||||
|
|
||||||
|
# special case for include tasks, where the include params
|
||||||
|
# may be specified in the vars field for the task, which should
|
||||||
|
# have higher precedence than the vars/np facts above
|
||||||
|
if task:
|
||||||
|
all_vars = combine_vars(all_vars, task.get_include_params())
|
||||||
|
|
||||||
all_vars = combine_vars(all_vars, self._extra_vars)
|
all_vars = combine_vars(all_vars, self._extra_vars)
|
||||||
all_vars = combine_vars(all_vars, magic_variables)
|
all_vars = combine_vars(all_vars, magic_variables)
|
||||||
|
|
||||||
|
|
|
@ -173,6 +173,7 @@ class TestVariableManager(unittest.TestCase):
|
||||||
mock_task._role = None
|
mock_task._role = None
|
||||||
mock_task.loop = None
|
mock_task.loop = None
|
||||||
mock_task.get_vars.return_value = dict(foo="bar")
|
mock_task.get_vars.return_value = dict(foo="bar")
|
||||||
|
mock_task.get_include_params.return_value = dict()
|
||||||
|
|
||||||
v = VariableManager()
|
v = VariableManager()
|
||||||
self.assertEqual(v.get_vars(loader=fake_loader, task=mock_task, use_cache=False).get("foo"), "bar")
|
self.assertEqual(v.get_vars(loader=fake_loader, task=mock_task, use_cache=False).get("foo"), "bar")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue