diff --git a/lib/ansible/plugins/callback/tree.py b/lib/ansible/plugins/callback/tree.py index afeaa93f87a..717afd6bdfa 100644 --- a/lib/ansible/plugins/callback/tree.py +++ b/lib/ansible/plugins/callback/tree.py @@ -34,24 +34,28 @@ class CallbackModule(CallbackBase): CALLBACK_TYPE = 'aggregate' CALLBACK_NAME = 'tree' - def write_tree_file(self, tree, hostname, buf): + def __init__(self, display): + super(CallbackModule, self).__init__(display) + + self.tree = TREE_DIR + if not self.tree: + self._display.warnings("Disabling tree callback, invalid directory provided to tree option: %s" % self.tree) + + def write_tree_file(self, hostname, buf): ''' write something into treedir/hostname ''' - makedirs_safe(tree) try: - path = os.path.join(tree, hostname) - fd = open(path, "a+") + makedirs_safe(self.tree) + path = os.path.join(self.tree, hostname) + fd = open(path, "w+") fd.write(buf) fd.close() except (OSError, IOError) as e: self._display.warnings("Unable to write to %s's file: %s" % (hostname, str(e))) def result_to_tree(self, result): - tree = TREE_DIR - if tree: - self.write_tree_file(tree, result._host.get_name(), self._dump_results(result._result)) - else: - self._display.warnings("Invalid directory provided to tree option: %s" % tree) + if self.tree: + self.write_tree_file(result._host.get_name(), self._dump_results(result._result)) def v2_runner_on_ok(self, result): self.result_to_tree(result)