Merge "Collect logging information into ara callback" into feature/zuulv3
diff --git a/zuul/executor/server.py b/zuul/executor/server.py
index 95e8e0b..499b4d8 100644
--- a/zuul/executor/server.py
+++ b/zuul/executor/server.py
@@ -29,6 +29,10 @@
 from zuul.lib.yamlutil import yaml
 from zuul.lib.config import get_default
 
+try:
+    import ara.plugins.callbacks as ara_callbacks
+except ImportError:
+    ara_callbacks = None
 import gear
 
 import zuul.merger.merger
@@ -1394,6 +1398,17 @@
                     yaml.safe_dump(secrets, default_flow_style=False))
             jobdir_playbook.has_secrets = True
 
+        # TODO(mordred) This should likely be extracted into a more generalized
+        #               mechanism for deployers being able to add callback
+        #               plugins.
+        if ara_callbacks:
+            callback_path = '%s:%s' % (
+                self.executor_server.callback_dir,
+                os.path.dirname(ara_callbacks.__file__))
+            callback_whitelist = 'zuul_json,ara'
+        else:
+            callback_path = self.executor_server.callback_dir
+            callback_whitelist = 'zuul_json'
         with open(jobdir_playbook.ansible_config, 'w') as config:
             config.write('[defaults]\n')
             config.write('hostfile = %s\n' % self.jobdir.inventory)
@@ -1409,10 +1424,9 @@
             config.write('library = %s\n'
                          % self.executor_server.library_dir)
             config.write('command_warnings = False\n')
-            config.write('callback_plugins = %s\n'
-                         % self.executor_server.callback_dir)
+            config.write('callback_plugins = %s\n' % callback_path)
             config.write('stdout_callback = zuul_stream\n')
-            config.write('callback_whitelist = zuul_json\n')
+            config.write('callback_whitelist = %s\n' % callback_whitelist)
             # bump the timeout because busy nodes may take more than
             # 10s to respond
             config.write('timeout = 30\n')