From 5552c049763c2f91f4f1f2f5b622408b563f423e Mon Sep 17 00:00:00 2001
From: Brian Coca <brian.coca+git@gmail.com>
Date: Thu, 18 Feb 2016 06:58:43 -0800
Subject: [PATCH] allow skipping debug depending on verbosity

---
 lib/ansible/plugins/action/debug.py | 44 +++++++++++++++++------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/lib/ansible/plugins/action/debug.py b/lib/ansible/plugins/action/debug.py
index f07d8ea5d05..7728d45cc22 100644
--- a/lib/ansible/plugins/action/debug.py
+++ b/lib/ansible/plugins/action/debug.py
@@ -26,7 +26,7 @@ class ActionModule(ActionBase):
     ''' Print statements during execution '''
 
     TRANSFERS_FILES = False
-    VALID_ARGS = set(['msg', 'var'])
+    VALID_ARGS = set(['msg', 'var', 'verbosity'])
 
     def run(self, tmp=None, task_vars=None):
         if task_vars is None:
@@ -41,26 +41,34 @@ class ActionModule(ActionBase):
 
         result = super(ActionModule, self).run(tmp, task_vars)
 
-        if 'msg' in self._task.args:
-            result['msg'] = self._task.args['msg']
+        verbosity = 0
+        # get task verbosity
+        if 'verbosity' in self._task.args:
+            verbosity = int(self._task.args['verbosity'])
 
-        elif 'var' in self._task.args:
-            try:
-                results = self._templar.template(self._task.args['var'], convert_bare=True, fail_on_undefined=True, bare_deprecated=False)
-                if results == self._task.args['var']:
-                    raise AnsibleUndefinedVariable
-            except AnsibleUndefinedVariable:
-                results = "VARIABLE IS NOT DEFINED!"
+        if verbosity <= self._display.verbosity:
+            if 'msg' in self._task.args:
+                result['msg'] = self._task.args['msg']
 
-            if type(self._task.args['var']) in (list, dict):
-                # If var is a list or dict, use the type as key to display
-                result[to_unicode(type(self._task.args['var']))] = results
+            elif 'var' in self._task.args:
+                try:
+                    results = self._templar.template(self._task.args['var'], convert_bare=True, fail_on_undefined=True, bare_deprecated=False)
+                    if results == self._task.args['var']:
+                        raise AnsibleUndefinedVariable
+                except AnsibleUndefinedVariable:
+                    results = "VARIABLE IS NOT DEFINED!"
+
+                if type(self._task.args['var']) in (list, dict):
+                    # If var is a list or dict, use the type as key to display
+                    result[to_unicode(type(self._task.args['var']))] = results
+                else:
+                    result[self._task.args['var']] = results
             else:
-                result[self._task.args['var']] = results
-        else:
-            result['msg'] = 'Hello world!'
+                result['msg'] = 'Hello world!'
 
-        # force flag to make debug output module always verbose
-        result['_ansible_verbose_always'] = True
+            # force flag to make debug output module always verbose
+            result['_ansible_verbose_always'] = True
+        else:
+            result['skipped'] = True
 
         return result