diff --git a/awx_collection/plugins/modules/tower_workflow_job_template_node.py b/awx_collection/plugins/modules/tower_workflow_job_template_node.py index 14e02d6f70..f559e1ec16 100644 --- a/awx_collection/plugins/modules/tower_workflow_job_template_node.py +++ b/awx_collection/plugins/modules/tower_workflow_job_template_node.py @@ -205,13 +205,17 @@ def main(): state=dict(choices=['present', 'absent'], default='present'), ) mutually_exclusive = [("unified_job_template", "approval_node")] - required_one_of = [["unified_job_template", "approval_node", "success_nodes", "always_nodes", "failure_nodes"]] + required_if=[ + ['state', 'absent', ['identifier']], + ['state', 'present', ['identifier']], + ['state', 'present', ['unified_job_template', 'approval_node', 'success_nodes', 'always_nodes', 'failure_nodes'], 'true'], + ] # Create a module for ourselves module = TowerAPIModule( argument_spec=argument_spec, mutually_exclusive=mutually_exclusive, - required_one_of=required_one_of, + required_if=required_if, ) # Extract our parameters diff --git a/awx_collection/tests/integration/targets/tower_workflow_job_template/tasks/main.yml b/awx_collection/tests/integration/targets/tower_workflow_job_template/tasks/main.yml index 1542b42029..2d916f584d 100644 --- a/awx_collection/tests/integration/targets/tower_workflow_job_template/tasks/main.yml +++ b/awx_collection/tests/integration/targets/tower_workflow_job_template/tasks/main.yml @@ -159,6 +159,30 @@ that: - "no_name_results.msg == 'Approval node name is required to create approval node.'" +- name: Fail if absent and no identifier set + tower_workflow_job_template_node: + approval_node: + description: "{{ approval_node_name }}" + workflow: "{{ wfjt_name }}" + state: absent + register: no_identifier_results + ignore_errors: true + +- assert: + that: + - "no_identifier_results.msg == 'missing required arguments: identifier'" + +- name: Fail if present and no unified job template set + tower_workflow_job_template_node: + identifier: approval_test + workflow: "{{ wfjt_name }}" + register: no_unified_results + ignore_errors: true + +- assert: + that: + - "no_unified_results.msg == 'state is present but any of the following are missing: unified_job_template, approval_node, success_nodes, always_nodes, failure_nodes'" + - name: Create approval node tower_workflow_job_template_node: identifier: approval_test