From 04d74fd6804b5a851cc8762cecf07b100e4dcc6f Mon Sep 17 00:00:00 2001
From: Brian Coca <brian.coca+git@gmail.com>
Date: Wed, 9 Dec 2015 10:13:50 -0800
Subject: [PATCH] reenabled --tree for ansible adhoc command

previous fix to avoid callbacks now conflicted with tree optoin
which is implemented as a callback in 2.0
---
 lib/ansible/cli/adhoc.py                   | 3 +++
 lib/ansible/executor/task_queue_manager.py | 5 ++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
index f6dcb37a8a..3de0e55b7b 100644
--- a/lib/ansible/cli/adhoc.py
+++ b/lib/ansible/cli/adhoc.py
@@ -163,9 +163,11 @@ class AdHocCLI(CLI):
         else:
             cb = 'minimal'
 
+        run_tree=False
         if self.options.tree:
             C.DEFAULT_CALLBACK_WHITELIST.append('tree')
             C.TREE_DIR = self.options.tree
+            run_tree=True
 
         # now create a task queue manager to execute the play
         self._tqm = None
@@ -178,6 +180,7 @@ class AdHocCLI(CLI):
                     passwords=passwords,
                     stdout_callback=cb,
                     run_additional_callbacks=C.DEFAULT_LOAD_CALLBACK_PLUGINS,
+                    run_tree=run_tree,
                 )
             result = self._tqm.run(play)
         finally:
diff --git a/lib/ansible/executor/task_queue_manager.py b/lib/ansible/executor/task_queue_manager.py
index 70cefee510..7411138293 100644
--- a/lib/ansible/executor/task_queue_manager.py
+++ b/lib/ansible/executor/task_queue_manager.py
@@ -56,7 +56,7 @@ class TaskQueueManager:
     which dispatches the Play's tasks to hosts.
     '''
 
-    def __init__(self, inventory, variable_manager, loader, options, passwords, stdout_callback=None, run_additional_callbacks=True):
+    def __init__(self, inventory, variable_manager, loader, options, passwords, stdout_callback=None, run_additional_callbacks=True, run_tree=False):
 
         self._inventory        = inventory
         self._variable_manager = variable_manager
@@ -66,6 +66,7 @@ class TaskQueueManager:
         self.passwords         = passwords
         self._stdout_callback  = stdout_callback
         self._run_additional_callbacks = run_additional_callbacks
+        self._run_tree         = run_tree
 
         self._callbacks_loaded = False
         self._callback_plugins = []
@@ -160,6 +161,8 @@ class TaskQueueManager:
                     if callback_name != self._stdout_callback or stdout_callback_loaded:
                         continue
                     stdout_callback_loaded = True
+                elif callback_name == 'tree' and self._run_tree:
+                    pass
                 elif not self._run_additional_callbacks or (callback_needs_whitelist and (C.DEFAULT_CALLBACK_WHITELIST is None or callback_name not in C.DEFAULT_CALLBACK_WHITELIST)):
                     continue