From d5f20e6b2163b7bc74f5855f1da58cabd30edcbd Mon Sep 17 00:00:00 2001 From: James Martin Date: Thu, 26 Sep 2013 10:03:23 -0400 Subject: [PATCH 1/2] Optionally display Skipping [host] messages. --- examples/ansible.cfg | 5 +++++ lib/ansible/callbacks.py | 23 ++++++++++++----------- lib/ansible/constants.py | 1 + 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/examples/ansible.cfg b/examples/ansible.cfg index 57e721a77be..d6470cd9d74 100644 --- a/examples/ansible.cfg +++ b/examples/ansible.cfg @@ -72,6 +72,11 @@ timeout = 10 # replacing {file}, {host} and {uid} and strftime codes with proper values. ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host} +# by default, ansible-playbook will display "Skipping [host]" if it determines a task +# should not be run on a host. Set this to "no" if you don't want to see these "Skipping" +# messages. +# display_skipped_hosts: yes + # by default (as of 1.3), Ansible will raise errors when attempting to dereference # Jinja2 variables that are not set in templates or action lines. Uncomment this line # to revert the behavior to pre-1.3. diff --git a/lib/ansible/callbacks.py b/lib/ansible/callbacks.py index ff35ff054fc..f2c7cbbb008 100644 --- a/lib/ansible/callbacks.py +++ b/lib/ansible/callbacks.py @@ -74,7 +74,7 @@ def get_cowsay_info(): cowsay, noncow = get_cowsay_info() def log_lockfile(): - tempdir = tempfile.gettempdir() + tempdir = tempfile.gettempdir() uid = os.getuid() path = os.path.join(tempdir, ".ansible-lock.%s" % uid) return path @@ -93,7 +93,7 @@ def log_flock(runner): fcntl.lockf(LOG_LOCK, fcntl.LOCK_EX) except OSError: pass - + def log_unflock(runner): if runner is not None: @@ -471,7 +471,7 @@ class PlaybookRunnerCallbacks(DefaultRunnerCallbacks): super(PlaybookRunnerCallbacks, self).on_failed(host, results, ignore_errors=ignore_errors) def on_ok(self, host, host_result): - + item = host_result.get('item', None) host_result2 = host_result.copy() @@ -519,13 +519,14 @@ class PlaybookRunnerCallbacks(DefaultRunnerCallbacks): super(PlaybookRunnerCallbacks, self).on_error(host, err) def on_skipped(self, host, item=None): - msg = '' - if item: - msg = "skipping: [%s] => (item=%s)" % (host, item) - else: - msg = "skipping: [%s]" % host - display(msg, color='cyan', runner=self.runner) - super(PlaybookRunnerCallbacks, self).on_skipped(host, item) + if constants.DISPLAY_SKIPPED_HOSTS: + msg = '' + if item: + msg = "skipping: [%s] => (item=%s)" % (host, item) + else: + msg = "skipping: [%s]" % host + display(msg, color='cyan', runner=self.runner) + super(PlaybookRunnerCallbacks, self).on_skipped(host, item) def on_no_hosts(self): display("FATAL: no hosts matched or all hosts have already failed -- aborting\n", color='red', runner=self.runner) @@ -581,7 +582,7 @@ class PlaybookCallbacks(object): msg = "TASK: [%s]" % name if is_conditional: msg = "NOTIFIED: [%s]" % name - + if hasattr(self, 'start_at'): if name == self.start_at or fnmatch.fnmatch(name, self.start_at): # we found out match, we can get rid of this now diff --git a/lib/ansible/constants.py b/lib/ansible/constants.py index dadc87133ff..bb823b574a5 100644 --- a/lib/ansible/constants.py +++ b/lib/ansible/constants.py @@ -130,6 +130,7 @@ DEFAULT_LOG_PATH = shell_expand_path(get_config(p, DEFAULTS, 'log_ ANSIBLE_NOCOLOR = get_config(p, DEFAULTS, 'nocolor', 'ANSIBLE_NOCOLOR', None, boolean=True) ANSIBLE_NOCOWS = get_config(p, DEFAULTS, 'nocows', 'ANSIBLE_NOCOWS', None, boolean=True) +DISPLAY_SKIPPED_HOSTS = get_config(p, DEFAULTS, 'display_skipped_hosts', 'DISPLAY_SKIPPED_HOSTS', True, boolean=True) ANSIBLE_SSH_ARGS = get_config(p, 'ssh_connection', 'ssh_args', 'ANSIBLE_SSH_ARGS', None) ANSIBLE_SSH_CONTROL_PATH = get_config(p, 'ssh_connection', 'control_path', 'ANSIBLE_SSH_CONTROL_PATH', "%(directory)s/ansible-ssh-%%h-%%p-%%r") PARAMIKO_RECORD_HOST_KEYS = get_config(p, 'paramiko_connection', 'record_host_keys', 'ANSIBLE_PARAMIKO_RECORD_HOST_KEYS', True, boolean=True) From c8fa83c93f071247070d4d8add809a33f8338537 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Mon, 30 Sep 2013 21:02:09 -0500 Subject: [PATCH 2/2] Minor tweaks to the skipped config wording and adding documentation --- docsite/latest/rst/intro_configuration.rst | 9 +++++++++ examples/ansible.cfg | 7 ++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docsite/latest/rst/intro_configuration.rst b/docsite/latest/rst/intro_configuration.rst index f6e34c1b9d0..73fa022879a 100644 --- a/docsite/latest/rst/intro_configuration.rst +++ b/docsite/latest/rst/intro_configuration.rst @@ -109,6 +109,15 @@ different locations:: Most users will not need to use this feature. See `developing_plugins` for more details +display_skipped_hosts +===================== + +If set to `False`, ansible will not display any status for a task that is skipped. The default behavior is to display skipped tasks:: + + #display_skipped_hosts=True + +Note that Ansible will always show the task header for any task, regardless of whether or not the task is skipped. + error_on_undefined_vars ======================= diff --git a/examples/ansible.cfg b/examples/ansible.cfg index d6470cd9d74..1649b1d646c 100644 --- a/examples/ansible.cfg +++ b/examples/ansible.cfg @@ -73,9 +73,10 @@ timeout = 10 ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host} # by default, ansible-playbook will display "Skipping [host]" if it determines a task -# should not be run on a host. Set this to "no" if you don't want to see these "Skipping" -# messages. -# display_skipped_hosts: yes +# should not be run on a host. Set this to "False" if you don't want to see these "Skipping" +# messages. NOTE: the task header will still be shown regardless of whether or not the +# task is skipped. +#display_skipped_hosts = True # by default (as of 1.3), Ansible will raise errors when attempting to dereference # Jinja2 variables that are not set in templates or action lines. Uncomment this line