diff options
Diffstat (limited to 'zuul/executor/server.py')
-rw-r--r-- | zuul/executor/server.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/zuul/executor/server.py b/zuul/executor/server.py index 381dc53d3..4f73e20de 100644 --- a/zuul/executor/server.py +++ b/zuul/executor/server.py @@ -861,6 +861,7 @@ class AnsibleJob(object): self.callback_dir = os.path.join(plugin_dir, 'callback') self.lookup_dir = os.path.join(plugin_dir, 'lookup') self.filter_dir = os.path.join(plugin_dir, 'filter') + self.ansible_callbacks = self.executor_server.ansible_callbacks def run(self): self.running = True @@ -2076,6 +2077,11 @@ class AnsibleJob(object): # and reduces CPU load of the ansible process. config.write('internal_poll_interval = 0.01\n') + if self.ansible_callbacks: + config.write('callback_whitelist =\n') + for callback in self.ansible_callbacks.keys(): + config.write(' %s,\n' % callback) + config.write('[ssh_connection]\n') # NOTE(pabelanger): Try up to 3 times to run a task on a host, this # helps to mitigate UNREACHABLE host errors with SSH. @@ -2095,6 +2101,12 @@ class AnsibleJob(object): "-o UserKnownHostsFile=%s" % self.jobdir.known_hosts config.write('ssh_args = %s\n' % ssh_args) + if self.ansible_callbacks: + for cb_name, cb_config in self.ansible_callbacks.items(): + config.write("[callback_%s]\n" % cb_name) + for k, n in cb_config.items(): + config.write("%s = %s\n" % (k, n)) + def _ansibleTimeout(self, msg): self.log.warning(msg) self.abortRunningProc() @@ -2551,6 +2563,17 @@ class ExecutorServer(BaseMergeServer): 'ansible_setup_timeout', 60)) self.zone = get_default(self.config, 'executor', 'zone') + self.ansible_callbacks = {} + for section_name in self.config.sections(): + cb_match = re.match(r'^ansible_callback ([\'\"]?)(.*)(\1)$', + section_name, re.I) + if not cb_match: + continue + cb_name = cb_match.group(2) + self.ansible_callbacks[cb_name] = dict( + self.config.items(section_name) + ) + # TODO(tobiash): Take cgroups into account self.update_workers = multiprocessing.cpu_count() self.update_threads = [] |