fix for include_role conflating vars/directives
(cherry picked from commit 54ce6a9b7a
)
This commit is contained in:
parent
767dba8f24
commit
6b85c31fdf
1 changed files with 9 additions and 6 deletions
|
@ -92,22 +92,25 @@ class IncludeRole(Task):
|
||||||
ir = IncludeRole(block, role, task_include=task_include).load_data(data, variable_manager=variable_manager, loader=loader)
|
ir = IncludeRole(block, role, task_include=task_include).load_data(data, variable_manager=variable_manager, loader=loader)
|
||||||
|
|
||||||
|
|
||||||
|
# deal with options
|
||||||
|
|
||||||
|
# name is needed
|
||||||
ir._role_name = ir.args.get('name')
|
ir._role_name = ir.args.get('name')
|
||||||
if ir._role_name is None:
|
if ir._role_name is None:
|
||||||
raise AnsibleParserError("'name' is a required field.")
|
raise AnsibleParserError("'name' is a required field.")
|
||||||
|
|
||||||
# set built in's
|
|
||||||
attributes = frozenset(ir._valid_attrs.keys())
|
|
||||||
for builtin in attributes:
|
|
||||||
if ir.args.get(builtin):
|
|
||||||
setattr(ir, builtin, ir.args.get(builtin))
|
|
||||||
|
|
||||||
# build options for role includes
|
# build options for role includes
|
||||||
for key in ['tasks', 'vars', 'defaults']:
|
for key in ['tasks', 'vars', 'defaults']:
|
||||||
from_key = key + '_from'
|
from_key = key + '_from'
|
||||||
if ir.args.get(from_key):
|
if ir.args.get(from_key):
|
||||||
ir._from_files[key] = basename(ir.args.get(from_key))
|
ir._from_files[key] = basename(ir.args.get(from_key))
|
||||||
|
|
||||||
|
#TODO: find a way to make this list come from object ( attributes does not work as per below)
|
||||||
|
# manual list as otherwise the options would set other task parameters we don't want.
|
||||||
|
for option in ['static', 'private']:
|
||||||
|
if option in ir.args:
|
||||||
|
setattr(ir, option, ir.args.get(option))
|
||||||
|
|
||||||
return ir.load_data(data, variable_manager=variable_manager, loader=loader)
|
return ir.load_data(data, variable_manager=variable_manager, loader=loader)
|
||||||
|
|
||||||
def copy(self, exclude_parent=False, exclude_tasks=False):
|
def copy(self, exclude_parent=False, exclude_tasks=False):
|
||||||
|
|
Loading…
Reference in a new issue