diff --git a/awx_collection/plugins/modules/tower_job_launch.py b/awx_collection/plugins/modules/tower_job_launch.py index 1d37548d2b..94828c8b77 100644 --- a/awx_collection/plugins/modules/tower_job_launch.py +++ b/awx_collection/plugins/modules/tower_job_launch.py @@ -37,6 +37,12 @@ options: description: - Inventory to use for the job, only used if prompt for inventory is set. type: str + organization: + description: + - Organization the job template exists in. + - Used to help lookup the object, cannot be modified using this module. + - If not provided, will lookup by name only, which does not work with duplicates. + type: str credentials: description: - Credential to use for job, only used if prompt for credential is set. @@ -149,6 +155,7 @@ def main(): name=dict(required=True, aliases=['job_template']), job_type=dict(choices=['run', 'check']), inventory=dict(default=None), + organization=dict(), # Credentials will be a str instead of a list for backwards compatability credentials=dict(type='list', default=None, aliases=['credential'], elements='str'), limit=dict(), @@ -172,6 +179,7 @@ def main(): name = module.params.get('name') optional_args['job_type'] = module.params.get('job_type') inventory = module.params.get('inventory') + organization = module.params.get('organization') credentials = module.params.get('credentials') optional_args['limit'] = module.params.get('limit') optional_args['tags'] = module.params.get('tags') @@ -201,7 +209,10 @@ def main(): post_data['credentials'].append(module.resolve_name_to_id('credentials', credential)) # Attempt to look up job_template based on the provided name - job_template = module.get_one('job_templates', name_or_id=name) + lookup_data = {} + if organization: + lookup_data['organization'] = module.resolve_name_to_id('organizations', organization) + job_template = module.get_one('job_templates', name_or_id=name, data=lookup_data) if job_template is None: module.fail_json(msg="Unable to find job template by name {0}".format(name)) diff --git a/awx_collection/test/awx/test_job_template.py b/awx_collection/test/awx/test_job_template.py index 5d4100dac1..8ec3d67bfc 100644 --- a/awx_collection/test/awx/test_job_template.py +++ b/awx_collection/test/awx/test_job_template.py @@ -81,10 +81,11 @@ def test_resets_job_template_values(run_module, admin_user, project, inventory): @pytest.mark.django_db -def test_job_launch_with_prompting(run_module, admin_user, project, inventory, machine_credential): +def test_job_launch_with_prompting(run_module, admin_user, project, organization, inventory, machine_credential): JobTemplate.objects.create( name='foo', project=project, + organization=organization, playbook='helloworld.yml', ask_variables_on_launch=True, ask_inventory_on_launch=True, diff --git a/awx_collection/tests/integration/targets/tower_job_launch/tasks/main.yml b/awx_collection/tests/integration/targets/tower_job_launch/tasks/main.yml index 22b31f042f..14d7f7c236 100644 --- a/awx_collection/tests/integration/targets/tower_job_launch/tasks/main.yml +++ b/awx_collection/tests/integration/targets/tower_job_launch/tasks/main.yml @@ -157,6 +157,7 @@ - name: Launch job template with inventory and credential for prompt on launch tower_job_launch: job_template: "{{ jt_name2 }}" + organization: Default register: result - assert: