From b9f5a343c4f2ab576bba4d26f1522530d8a0d18c Mon Sep 17 00:00:00 2001 From: jainnikhil30 Date: Fri, 25 Jan 2019 19:12:14 +0530 Subject: [PATCH] Add scm_update_cache_timeout, job_timeout and custom_virtualenv to tower_project (#51330) * adding scm_update_cache_timeout and job_timeout to tower_project module * add support for cache_timeout, job_timeout and custom_venv for tower_project module * add the version_added --- .../ansible_tower/tower_project.py | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py b/lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py index c1b4a0c972c..38adfd4a36c 100644 --- a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py +++ b/lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py @@ -62,6 +62,21 @@ options: - Before an update to the local repository before launching a job with this project. type: bool default: 'no' + scm_update_cache_timeout: + version_added: "2.8" + description: + - Cache Timeout to cache prior project syncs for a certain number of seconds. + Only valid if scm_update_on_launch is to True, otherwise ignored. + default: 0 + job_timeout: + version_added: "2.8" + description: + - The amount of time (in seconds) to run before the SCM Update is canceled. A value of 0 means no timeout. + default: 0 + custom_virtualenv: + version_added: "2.8" + description: + - Local absolute file path containing a custom Python virtualenv to use organization: description: - Primary key of organization for project. @@ -82,6 +97,17 @@ EXAMPLES = ''' organization: "test" state: present tower_config_file: "~/tower_cli.cfg" + +- name: Add Tower Project with cache timeout and custom virtualenv + tower_project: + name: "Foo" + description: "Foo bar project" + organization: "test" + scm_update_on_launch: True + scm_update_cache_timeout: 60 + custom_virtualenv: "/var/lib/awx/venv/ansible-2.2" + state: present + tower_config_file: "~/tower_cli.cfg" ''' from ansible.module_utils.ansible_tower import TowerModule, tower_auth_config, tower_check_mode @@ -107,8 +133,10 @@ def main(): scm_clean=dict(type='bool', default=False), scm_delete_on_update=dict(type='bool', default=False), scm_update_on_launch=dict(type='bool', default=False), + scm_update_cache_timeout=dict(type='int', default=0), + job_timeout=dict(type='int', default=0), + custom_virtualenv=dict(), local_path=dict(), - state=dict(choices=['present', 'absent'], default='present'), ) @@ -127,6 +155,9 @@ def main(): scm_clean = module.params.get('scm_clean') scm_delete_on_update = module.params.get('scm_delete_on_update') scm_update_on_launch = module.params.get('scm_update_on_launch') + scm_update_cache_timeout = module.params.get('scm_update_cache_timeout') + job_timeout = module.params.get('job_timeout') + custom_virtualenv = module.params.get('custom_virtualenv') state = module.params.get('state') json_output = {'project': name, 'state': state} @@ -155,12 +186,18 @@ def main(): except (exc.NotFound) as excinfo: module.fail_json(msg='Failed to update project, credential not found: {0}'.format(scm_credential), changed=False) + if (scm_update_cache_timeout is not None) and (scm_update_on_launch is not True): + module.warn('scm_update_cache_timeout will be ignored since scm_update_on_launch was not set to true') + result = project.modify(name=name, description=description, organization=org['id'], scm_type=scm_type, scm_url=scm_url, local_path=local_path, scm_branch=scm_branch, scm_clean=scm_clean, credential=scm_credential, scm_delete_on_update=scm_delete_on_update, scm_update_on_launch=scm_update_on_launch, + scm_update_cache_timeout=scm_update_cache_timeout, + job_timeout=job_timeout, + custom_virtualenv=custom_virtualenv, create_on_missing=True) json_output['id'] = result['id'] elif state == 'absent':