diff --git a/awx/main/conf.py b/awx/main/conf.py index d8e8b97206..cfe7ebe80d 100644 --- a/awx/main/conf.py +++ b/awx/main/conf.py @@ -408,6 +408,21 @@ register( unit=_('seconds'), ) +register( + 'DEFAULT_JOB_IDLE_TIMEOUT', + field_class=fields.IntegerField, + min_value=0, + default=0, + label=_('Default Job Idle Timeout'), + help_text=_( + 'If no output is detected from ansible in this number of seconds the execution will be terminated. ' + 'Use value of 0 to used default idle_timeout is 600s.' + ), + category=_('Jobs'), + category_slug='jobs', + unit=_('seconds'), +) + register( 'DEFAULT_INVENTORY_UPDATE_TIMEOUT', field_class=fields.IntegerField, diff --git a/awx/main/tasks.py b/awx/main/tasks.py index daf96484cf..01c13bb661 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -1487,6 +1487,10 @@ class BaseTask(object): }, } + idle_timeout = getattr(settings, 'DEFAULT_JOB_IDLE_TIMEOUT', 0) + if idle_timeout > 0: + params['settings']['idle_timeout'] = idle_timeout + if isinstance(self.instance, AdHocCommand): params['module'] = self.build_module_name(self.instance) params['module_args'] = self.build_module_args(self.instance) diff --git a/awx/ui/src/screens/Setting/Jobs/JobsDetail/JobsDetail.test.js b/awx/ui/src/screens/Setting/Jobs/JobsDetail/JobsDetail.test.js index afcdc3c990..9b0dda4233 100644 --- a/awx/ui/src/screens/Setting/Jobs/JobsDetail/JobsDetail.test.js +++ b/awx/ui/src/screens/Setting/Jobs/JobsDetail/JobsDetail.test.js @@ -64,6 +64,7 @@ describe('', () => { ); assertDetail(wrapper, 'Maximum Scheduled Jobs', '10'); assertDetail(wrapper, 'Default Job Timeout', '0 seconds'); + assertDetail(wrapper, 'Default Job Idle Timeout', '0 seconds'); assertDetail(wrapper, 'Default Inventory Update Timeout', '0 seconds'); assertDetail(wrapper, 'Default Project Update Timeout', '0 seconds'); assertDetail(wrapper, 'Per-Host Ansible Fact Cache Timeout', '0 seconds'); diff --git a/awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js b/awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js index 81aedde43f..1e6d8cef73 100644 --- a/awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js +++ b/awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js @@ -155,6 +155,11 @@ function JobsEdit() { config={jobs.DEFAULT_JOB_TIMEOUT} type="number" /> +