Parsing time errors

pull/82893/head
Martin Krizek 2 months ago
parent 052f858e90
commit 053636bd91

@ -293,8 +293,12 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
else:
if use_handlers:
t = Handler.load(task_ds, block=block, role=role, task_include=task_include, variable_manager=variable_manager, loader=loader)
if t.action in C._ACTION_META and t.args.get('_raw_params') == "end_role":
raise AnsibleParserError("Cannot execute 'end_role' from a handler")
else:
t = Task.load(task_ds, block=block, role=role, task_include=task_include, variable_manager=variable_manager, loader=loader)
if t.action in C._ACTION_META and t.args.get('_raw_params') == "end_role" and role is None:
raise AnsibleParserError("Cannot execute 'end_role' from outside of a role")
task_list.append(t)

@ -1038,10 +1038,6 @@ class StrategyBase:
# TODO: Nix msg here? Left for historical reasons, but skip_reason exists now.
msg = "end_host conditional evaluated to false, continuing execution for %s" % target_host.name
elif meta_action == 'end_role':
if task._role is None: # FIXME fail during parsing time?
raise AnsibleError("Cannot execute 'end_role' from outside of a role")
if isinstance(task, Handler): # FIXME fail during parsing time?
raise AnsibleError("Cannot execute 'end_role' from a handler")
if task.implicit:
role_obj = self._get_cached_role(task, iterator._play)
if target_host.name in role_obj._had_task_run:

@ -0,0 +1,9 @@
- hosts: localhost
gather_facts: false
tasks:
- debug:
changed_when: true
notify: invalid_handler
handlers:
- name: invalid_handler
meta: end_role

@ -58,3 +58,6 @@ for strategy in linear free; do
ANSIBLE_STRATEGY=$strategy ansible-playbook end_role.yml "$@"
ANSIBLE_STRATEGY=$strategy ansible-playbook -i host1,host2 end_role_nested.yml "$@"
done
[ $(ansible localhost -m meta -a "end_role" 2>&1 | grep -c "ERROR! Cannot execute 'end_role' from outside of a role") -eq 1 ]
[ $(ansible-playbook end_role_handler_error.yml 2>&1 | grep -c "ERROR! Cannot execute 'end_role' from a handler") -eq 1 ]

Loading…
Cancel
Save