mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
output color is now configurable
This commit is contained in:
parent
2d11cfab92
commit
d3deb24ead
10 changed files with 86 additions and 60 deletions
|
@ -262,3 +262,14 @@
|
||||||
# the default behaviour that copies the existing context or uses the user default
|
# the default behaviour that copies the existing context or uses the user default
|
||||||
# needs to be changed to use the file system dependent context.
|
# needs to be changed to use the file system dependent context.
|
||||||
#special_context_filesystems=nfs,vboxsf,fuse,ramfs
|
#special_context_filesystems=nfs,vboxsf,fuse,ramfs
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
#verbose = blue
|
||||||
|
#warn = bright purple
|
||||||
|
#error = red
|
||||||
|
#debug = dark gray
|
||||||
|
#deprecate = purple
|
||||||
|
#skip = cyan
|
||||||
|
#unreachable = red
|
||||||
|
#ok = green
|
||||||
|
#changed = yellow
|
||||||
|
|
|
@ -514,7 +514,7 @@ class GalaxyCLI(CLI):
|
||||||
tags=self.options.tags, author=self.options.author, page_size=page_size)
|
tags=self.options.tags, author=self.options.author, page_size=page_size)
|
||||||
|
|
||||||
if response['count'] == 0:
|
if response['count'] == 0:
|
||||||
display.display("No roles match your search.", color="yellow")
|
display.display("No roles match your search.", color=C.COLOR_ERROR)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
data = ''
|
data = ''
|
||||||
|
@ -570,10 +570,10 @@ class GalaxyCLI(CLI):
|
||||||
|
|
||||||
colors = {
|
colors = {
|
||||||
'INFO': 'normal',
|
'INFO': 'normal',
|
||||||
'WARNING': 'yellow',
|
'WARNING': C.COLOR_WARN,
|
||||||
'ERROR': 'red',
|
'ERROR': C.COLOR_ERROR,
|
||||||
'SUCCESS': 'green',
|
'SUCCESS': C.COLOR_OK,
|
||||||
'FAILED': 'red'
|
'FAILED': C.COLOR_ERROR,
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(self.args) < 2:
|
if len(self.args) < 2:
|
||||||
|
@ -592,11 +592,10 @@ class GalaxyCLI(CLI):
|
||||||
# found multiple roles associated with github_user/github_repo
|
# found multiple roles associated with github_user/github_repo
|
||||||
display.display("WARNING: More than one Galaxy role associated with Github repo %s/%s." % (github_user,github_repo),
|
display.display("WARNING: More than one Galaxy role associated with Github repo %s/%s." % (github_user,github_repo),
|
||||||
color='yellow')
|
color='yellow')
|
||||||
display.display("The following Galaxy roles are being updated:" + u'\n', color='yellow')
|
display.display("The following Galaxy roles are being updated:" + u'\n', color=C.COLOR_CHANGED)
|
||||||
for t in task:
|
for t in task:
|
||||||
display.display('%s.%s' % (t['summary_fields']['role']['namespace'],t['summary_fields']['role']['name']), color='yellow')
|
display.display('%s.%s' % (t['summary_fields']['role']['namespace'],t['summary_fields']['role']['name']), color=C.COLOR_CHANGED)
|
||||||
display.display(u'\n' + "To properly namespace this role, remove each of the above and re-import %s/%s from scratch" % (github_user,github_repo),
|
display.display(u'\n' + "To properly namespace this role, remove each of the above and re-import %s/%s from scratch" % (github_user,github_repo), color=C.COLOR_CHANGED)
|
||||||
color='yellow')
|
|
||||||
return 0
|
return 0
|
||||||
# found a single role as expected
|
# found a single role as expected
|
||||||
display.display("Successfully submitted import request %d" % task[0]['id'])
|
display.display("Successfully submitted import request %d" % task[0]['id'])
|
||||||
|
@ -633,17 +632,17 @@ class GalaxyCLI(CLI):
|
||||||
# None found
|
# None found
|
||||||
display.display("No integrations found.")
|
display.display("No integrations found.")
|
||||||
return 0
|
return 0
|
||||||
display.display(u'\n' + "ID Source Repo", color="green")
|
display.display(u'\n' + "ID Source Repo", color=C.COLOR_OK)
|
||||||
display.display("---------- ---------- ----------", color="green")
|
display.display("---------- ---------- ----------", color=C.COLOR_OK)
|
||||||
for secret in secrets:
|
for secret in secrets:
|
||||||
display.display("%-10s %-10s %s/%s" % (secret['id'], secret['source'], secret['github_user'],
|
display.display("%-10s %-10s %s/%s" % (secret['id'], secret['source'], secret['github_user'],
|
||||||
secret['github_repo']),color="green")
|
secret['github_repo']),color=C.COLOR_OK)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if self.options.remove_id:
|
if self.options.remove_id:
|
||||||
# Remove a secret
|
# Remove a secret
|
||||||
self.api.remove_secret(self.options.remove_id)
|
self.api.remove_secret(self.options.remove_id)
|
||||||
display.display("Secret removed. Integrations using this secret will not longer work.", color="green")
|
display.display("Secret removed. Integrations using this secret will not longer work.", color=C.COLOR_OK)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if len(self.args) < 4:
|
if len(self.args) < 4:
|
||||||
|
|
|
@ -268,6 +268,17 @@ GALAXY_SCMS = get_config(p, 'galaxy', 'scms', 'ANSIBLE_GALAXY
|
||||||
DEFAULT_PASSWORD_CHARS = ascii_letters + digits + ".,:-_"
|
DEFAULT_PASSWORD_CHARS = ascii_letters + digits + ".,:-_"
|
||||||
STRING_TYPE_FILTERS = get_config(p, 'jinja2', 'dont_type_filters', 'ANSIBLE_STRING_TYPE_FILTERS', ['string', 'to_json', 'to_nice_json', 'to_yaml', 'ppretty', 'json'], islist=True )
|
STRING_TYPE_FILTERS = get_config(p, 'jinja2', 'dont_type_filters', 'ANSIBLE_STRING_TYPE_FILTERS', ['string', 'to_json', 'to_nice_json', 'to_yaml', 'ppretty', 'json'], islist=True )
|
||||||
|
|
||||||
|
# colors
|
||||||
|
COLOR_VERBOSE = get_config(p, 'colors', 'verbose', 'ANSIBLE_COLOR_VERBOSE', 'blue')
|
||||||
|
COLOR_WARN = get_config(p, 'colors', 'warn', 'ANSIBLE_COLOR_WARN', 'bright purple')
|
||||||
|
COLOR_ERROR = get_config(p, 'colors', 'error', 'ANSIBLE_COLOR_ERROR', 'red')
|
||||||
|
COLOR_DEBUG = get_config(p, 'colors', 'debug', 'ANSIBLE_COLOR_DEBUG', 'dark gray')
|
||||||
|
COLOR_DEPRECATE = get_config(p, 'colors', 'deprecate', 'ANSIBLE_COLOR_DEPRECATE', 'purple')
|
||||||
|
COLOR_SKIP = get_config(p, 'colors', 'skip', 'ANSIBLE_COLOR_SKIP', 'cyan')
|
||||||
|
COLOR_UNREACHABLE = get_config(p, 'colors', 'unreachable', 'ANSIBLE_COLOR_UNREACHABLE', 'bright red')
|
||||||
|
COLOR_OK = get_config(p, 'colors', 'ok', 'ANSIBLE_COLOR_OK', 'green')
|
||||||
|
COLOR_CHANGED = get_config(p, 'colors', 'ok', 'ANSIBLE_COLOR_CHANGED', 'yellow')
|
||||||
|
|
||||||
# non-configurable things
|
# non-configurable things
|
||||||
MODULE_REQUIRE_ARGS = ['command', 'shell', 'raw', 'script']
|
MODULE_REQUIRE_ARGS = ['command', 'shell', 'raw', 'script']
|
||||||
MODULE_NO_JSON = ['command', 'shell', 'raw']
|
MODULE_NO_JSON = ['command', 'shell', 'raw']
|
||||||
|
|
|
@ -393,7 +393,7 @@ class TaskExecutor:
|
||||||
result = None
|
result = None
|
||||||
for attempt in range(retries):
|
for attempt in range(retries):
|
||||||
if attempt > 0:
|
if attempt > 0:
|
||||||
display.display("FAILED - RETRYING: %s (%d retries left). Result was: %s" % (self._task, retries-attempt, result), color="dark gray")
|
display.display("FAILED - RETRYING: %s (%d retries left). Result was: %s" % (self._task, retries-attempt, result), color=C.COLOR_DEBUG)
|
||||||
result['attempts'] = attempt + 1
|
result['attempts'] = attempt + 1
|
||||||
|
|
||||||
display.debug("running the handler")
|
display.debug("running the handler")
|
||||||
|
|
|
@ -25,6 +25,7 @@ from ansible.errors import AnsibleParserError
|
||||||
from ansible.playbook.play import Play
|
from ansible.playbook.play import Play
|
||||||
from ansible.playbook.playbook_include import PlaybookInclude
|
from ansible.playbook.playbook_include import PlaybookInclude
|
||||||
from ansible.plugins import get_all_plugin_loaders
|
from ansible.plugins import get_all_plugin_loaders
|
||||||
|
from ansible import constants as C
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from __main__ import display
|
from __main__ import display
|
||||||
|
@ -87,7 +88,7 @@ class Playbook:
|
||||||
if pb is not None:
|
if pb is not None:
|
||||||
self._entries.extend(pb._entries)
|
self._entries.extend(pb._entries)
|
||||||
else:
|
else:
|
||||||
display.display("skipping playbook include '%s' due to conditional test failure" % entry.get('include', entry), color='cyan')
|
display.display("skipping playbook include '%s' due to conditional test failure" % entry.get('include', entry), color=C.COLOR_SKIP)
|
||||||
else:
|
else:
|
||||||
entry_obj = Play.load(entry, variable_manager=variable_manager, loader=self._loader)
|
entry_obj = Play.load(entry, variable_manager=variable_manager, loader=self._loader)
|
||||||
self._entries.append(entry_obj)
|
self._entries.append(entry_obj)
|
||||||
|
|
|
@ -44,7 +44,7 @@ class CallbackModule(CallbackBase):
|
||||||
else:
|
else:
|
||||||
msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception']
|
msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception']
|
||||||
|
|
||||||
self._display.display(msg, color='red')
|
self._display.display(msg, color=C.COLOR_ERROR)
|
||||||
|
|
||||||
# finally, remove the exception from the result so it's not shown every time
|
# finally, remove the exception from the result so it's not shown every time
|
||||||
del result._result['exception']
|
del result._result['exception']
|
||||||
|
@ -53,12 +53,12 @@ class CallbackModule(CallbackBase):
|
||||||
self._process_items(result)
|
self._process_items(result)
|
||||||
else:
|
else:
|
||||||
if delegated_vars:
|
if delegated_vars:
|
||||||
self._display.display("fatal: [%s -> %s]: FAILED! => %s" % (result._host.get_name(), delegated_vars['ansible_host'], self._dump_results(result._result)), color='red')
|
self._display.display("fatal: [%s -> %s]: FAILED! => %s" % (result._host.get_name(), delegated_vars['ansible_host'], self._dump_results(result._result)), color=C.COLOR_ERROR)
|
||||||
else:
|
else:
|
||||||
self._display.display("fatal: [%s]: FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result)), color='red')
|
self._display.display("fatal: [%s]: FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result)), color=C.COLOR_ERROR)
|
||||||
|
|
||||||
if result._task.ignore_errors:
|
if result._task.ignore_errors:
|
||||||
self._display.display("...ignoring", color='cyan')
|
self._display.display("...ignoring", color=C.COLOR_SKIP)
|
||||||
|
|
||||||
def v2_runner_on_ok(self, result):
|
def v2_runner_on_ok(self, result):
|
||||||
|
|
||||||
|
@ -71,13 +71,13 @@ class CallbackModule(CallbackBase):
|
||||||
msg = "changed: [%s -> %s]" % (result._host.get_name(), delegated_vars['ansible_host'])
|
msg = "changed: [%s -> %s]" % (result._host.get_name(), delegated_vars['ansible_host'])
|
||||||
else:
|
else:
|
||||||
msg = "changed: [%s]" % result._host.get_name()
|
msg = "changed: [%s]" % result._host.get_name()
|
||||||
color = 'yellow'
|
color = C.COLOR_CHANGED
|
||||||
else:
|
else:
|
||||||
if delegated_vars:
|
if delegated_vars:
|
||||||
msg = "ok: [%s -> %s]" % (result._host.get_name(), delegated_vars['ansible_host'])
|
msg = "ok: [%s -> %s]" % (result._host.get_name(), delegated_vars['ansible_host'])
|
||||||
else:
|
else:
|
||||||
msg = "ok: [%s]" % result._host.get_name()
|
msg = "ok: [%s]" % result._host.get_name()
|
||||||
color = 'green'
|
color = C.COLOR_OK
|
||||||
|
|
||||||
if result._task.loop and 'results' in result._result:
|
if result._task.loop and 'results' in result._result:
|
||||||
self._process_items(result)
|
self._process_items(result)
|
||||||
|
@ -97,17 +97,17 @@ class CallbackModule(CallbackBase):
|
||||||
msg = "skipping: [%s]" % result._host.get_name()
|
msg = "skipping: [%s]" % result._host.get_name()
|
||||||
if (self._display.verbosity > 0 or '_ansible_verbose_always' in result._result) and not '_ansible_verbose_override' in result._result:
|
if (self._display.verbosity > 0 or '_ansible_verbose_always' in result._result) and not '_ansible_verbose_override' in result._result:
|
||||||
msg += " => %s" % self._dump_results(result._result)
|
msg += " => %s" % self._dump_results(result._result)
|
||||||
self._display.display(msg, color='cyan')
|
self._display.display(msg, color=C.COLOR_SKIP)
|
||||||
|
|
||||||
def v2_runner_on_unreachable(self, result):
|
def v2_runner_on_unreachable(self, result):
|
||||||
delegated_vars = result._result.get('_ansible_delegated_vars', None)
|
delegated_vars = result._result.get('_ansible_delegated_vars', None)
|
||||||
if delegated_vars:
|
if delegated_vars:
|
||||||
self._display.display("fatal: [%s -> %s]: UNREACHABLE! => %s" % (result._host.get_name(), delegated_vars['ansible_host'], self._dump_results(result._result)), color='red')
|
self._display.display("fatal: [%s -> %s]: UNREACHABLE! => %s" % (result._host.get_name(), delegated_vars['ansible_host'], self._dump_results(result._result)), color=C.COLOR_ERROR)
|
||||||
else:
|
else:
|
||||||
self._display.display("fatal: [%s]: UNREACHABLE! => %s" % (result._host.get_name(), self._dump_results(result._result)), color='red')
|
self._display.display("fatal: [%s]: UNREACHABLE! => %s" % (result._host.get_name(), self._dump_results(result._result)), color=C.COLOR_ERROR)
|
||||||
|
|
||||||
def v2_playbook_on_no_hosts_matched(self):
|
def v2_playbook_on_no_hosts_matched(self):
|
||||||
self._display.display("skipping: no hosts matched", color='cyan')
|
self._display.display("skipping: no hosts matched", color=C.COLOR_SKIP)
|
||||||
|
|
||||||
def v2_playbook_on_no_hosts_remaining(self):
|
def v2_playbook_on_no_hosts_remaining(self):
|
||||||
self._display.banner("NO MORE HOSTS LEFT")
|
self._display.banner("NO MORE HOSTS LEFT")
|
||||||
|
@ -117,7 +117,7 @@ class CallbackModule(CallbackBase):
|
||||||
if self._display.verbosity > 2:
|
if self._display.verbosity > 2:
|
||||||
path = task.get_path()
|
path = task.get_path()
|
||||||
if path:
|
if path:
|
||||||
self._display.display("task path: %s" % path, color='dark gray')
|
self._display.display("task path: %s" % path, color=C.COLOR_DEBUG)
|
||||||
|
|
||||||
def v2_playbook_on_cleanup_task_start(self, task):
|
def v2_playbook_on_cleanup_task_start(self, task):
|
||||||
self._display.banner("CLEANUP TASK [%s]" % task.get_name().strip())
|
self._display.banner("CLEANUP TASK [%s]" % task.get_name().strip())
|
||||||
|
@ -155,13 +155,13 @@ class CallbackModule(CallbackBase):
|
||||||
msg = "changed: [%s -> %s]" % (result._host.get_name(), delegated_vars['ansible_host'])
|
msg = "changed: [%s -> %s]" % (result._host.get_name(), delegated_vars['ansible_host'])
|
||||||
else:
|
else:
|
||||||
msg = "changed: [%s]" % result._host.get_name()
|
msg = "changed: [%s]" % result._host.get_name()
|
||||||
color = 'yellow'
|
color = C.COLOR_CHANGED
|
||||||
else:
|
else:
|
||||||
if delegated_vars:
|
if delegated_vars:
|
||||||
msg = "ok: [%s -> %s]" % (result._host.get_name(), delegated_vars['ansible_host'])
|
msg = "ok: [%s -> %s]" % (result._host.get_name(), delegated_vars['ansible_host'])
|
||||||
else:
|
else:
|
||||||
msg = "ok: [%s]" % result._host.get_name()
|
msg = "ok: [%s]" % result._host.get_name()
|
||||||
color = 'green'
|
color = C.COLOR_OK
|
||||||
|
|
||||||
msg += " => (item=%s)" % (result._result['item'],)
|
msg += " => (item=%s)" % (result._result['item'],)
|
||||||
|
|
||||||
|
@ -179,15 +179,15 @@ class CallbackModule(CallbackBase):
|
||||||
else:
|
else:
|
||||||
msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception']
|
msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception']
|
||||||
|
|
||||||
self._display.display(msg, color='red')
|
self._display.display(msg, color=C.COLOR_ERROR)
|
||||||
|
|
||||||
# finally, remove the exception from the result so it's not shown every time
|
# finally, remove the exception from the result so it's not shown every time
|
||||||
del result._result['exception']
|
del result._result['exception']
|
||||||
|
|
||||||
if delegated_vars:
|
if delegated_vars:
|
||||||
self._display.display("failed: [%s -> %s] => (item=%s) => %s" % (result._host.get_name(), delegated_vars['ansible_host'], result._result['item'], self._dump_results(result._result)), color='red')
|
self._display.display("failed: [%s -> %s] => (item=%s) => %s" % (result._host.get_name(), delegated_vars['ansible_host'], result._result['item'], self._dump_results(result._result)), color=C.COLOR_ERROR)
|
||||||
else:
|
else:
|
||||||
self._display.display("failed: [%s] => (item=%s) => %s" % (result._host.get_name(), result._result['item'], self._dump_results(result._result)), color='red')
|
self._display.display("failed: [%s] => (item=%s) => %s" % (result._host.get_name(), result._result['item'], self._dump_results(result._result)), color=C.COLOR_ERROR)
|
||||||
|
|
||||||
self._handle_warnings(result._result)
|
self._handle_warnings(result._result)
|
||||||
|
|
||||||
|
@ -195,12 +195,12 @@ class CallbackModule(CallbackBase):
|
||||||
msg = "skipping: [%s] => (item=%s) " % (result._host.get_name(), result._result['item'])
|
msg = "skipping: [%s] => (item=%s) " % (result._host.get_name(), result._result['item'])
|
||||||
if (self._display.verbosity > 0 or '_ansible_verbose_always' in result._result) and not '_ansible_verbose_override' in result._result:
|
if (self._display.verbosity > 0 or '_ansible_verbose_always' in result._result) and not '_ansible_verbose_override' in result._result:
|
||||||
msg += " => %s" % self._dump_results(result._result)
|
msg += " => %s" % self._dump_results(result._result)
|
||||||
self._display.display(msg, color='cyan')
|
self._display.display(msg, color=C.COLOR_SKIP)
|
||||||
|
|
||||||
def v2_playbook_on_include(self, included_file):
|
def v2_playbook_on_include(self, included_file):
|
||||||
msg = 'included: %s for %s' % (included_file._filename, ", ".join([h.name for h in included_file._hosts]))
|
msg = 'included: %s for %s' % (included_file._filename, ", ".join([h.name for h in included_file._hosts]))
|
||||||
color = 'cyan'
|
color = C.COLOR_SKIP
|
||||||
self._display.display(msg, color='cyan')
|
self._display.display(msg, color=C.COLOR_SKIP)
|
||||||
|
|
||||||
def v2_playbook_on_stats(self, stats):
|
def v2_playbook_on_stats(self, stats):
|
||||||
self._display.banner("PLAY RECAP")
|
self._display.banner("PLAY RECAP")
|
||||||
|
@ -211,10 +211,10 @@ class CallbackModule(CallbackBase):
|
||||||
|
|
||||||
self._display.display(u"%s : %s %s %s %s" % (
|
self._display.display(u"%s : %s %s %s %s" % (
|
||||||
hostcolor(h, t),
|
hostcolor(h, t),
|
||||||
colorize(u'ok', t['ok'], 'green'),
|
colorize(u'ok', t['ok'], C.COLOR_OK),
|
||||||
colorize(u'changed', t['changed'], 'yellow'),
|
colorize(u'changed', t['changed'], C.COLOR_CHANGED),
|
||||||
colorize(u'unreachable', t['unreachable'], 'red'),
|
colorize(u'unreachable', t['unreachable'], C.COLOR_UNREACHABLE),
|
||||||
colorize(u'failed', t['failures'], 'red')),
|
colorize(u'failed', t['failures'], C.COLOR_ERROR)),
|
||||||
screen_only=True
|
screen_only=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -53,29 +53,32 @@ class CallbackModule(CallbackBase):
|
||||||
else:
|
else:
|
||||||
msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception']
|
msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception']
|
||||||
|
|
||||||
self._display.display(msg, color='red')
|
self._display.display(msg, color=C.COLOR_ERROR)
|
||||||
|
|
||||||
# finally, remove the exception from the result so it's not shown every time
|
# finally, remove the exception from the result so it's not shown every time
|
||||||
del result._result['exception']
|
del result._result['exception']
|
||||||
|
|
||||||
if result._task.action in C.MODULE_NO_JSON:
|
if result._task.action in C.MODULE_NO_JSON:
|
||||||
self._display.display(self._command_generic_msg(result._host.get_name(), result._result, "FAILED"), color='red')
|
self._display.display(self._command_generic_msg(result._host.get_name(), result._result, "FAILED"), color=C.COLOR_ERROR)
|
||||||
else:
|
else:
|
||||||
self._display.display("%s | FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result, indent=4)), color='red')
|
self._display.display("%s | FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result, indent=4)), color=C.COLOR_ERROR)
|
||||||
|
|
||||||
def v2_runner_on_ok(self, result):
|
def v2_runner_on_ok(self, result):
|
||||||
self._clean_results(result._result, result._task.action)
|
self._clean_results(result._result, result._task.action)
|
||||||
if result._task.action in C.MODULE_NO_JSON:
|
if result._task.action in C.MODULE_NO_JSON:
|
||||||
self._display.display(self._command_generic_msg(result._host.get_name(), result._result, "SUCCESS"), color='green')
|
self._display.display(self._command_generic_msg(result._host.get_name(), result._result, "SUCCESS"), color=C.COLOR_OK)
|
||||||
else:
|
else:
|
||||||
self._display.display("%s | SUCCESS => %s" % (result._host.get_name(), self._dump_results(result._result, indent=4)), color='green')
|
if 'changed' in result._result and result._result['changed']:
|
||||||
|
self._display.display("%s | SUCCESS => %s" % (result._host.get_name(), self._dump_results(result._result, indent=4)), color=C.COLOR_CHANGED)
|
||||||
|
else:
|
||||||
|
self._display.display("%s | SUCCESS => %s" % (result._host.get_name(), self._dump_results(result._result, indent=4)), color=C.COLOR_OK)
|
||||||
self._handle_warnings(result._result)
|
self._handle_warnings(result._result)
|
||||||
|
|
||||||
def v2_runner_on_skipped(self, result):
|
def v2_runner_on_skipped(self, result):
|
||||||
self._display.display("%s | SKIPPED" % (result._host.get_name()), color='cyan')
|
self._display.display("%s | SKIPPED" % (result._host.get_name()), color=C.COLOR_SKIP)
|
||||||
|
|
||||||
def v2_runner_on_unreachable(self, result):
|
def v2_runner_on_unreachable(self, result):
|
||||||
self._display.display("%s | UNREACHABLE! => %s" % (result._host.get_name(), self._dump_results(result._result, indent=4)), color='yellow')
|
self._display.display("%s | UNREACHABLE! => %s" % (result._host.get_name(), self._dump_results(result._result, indent=4)), color=C.COLOR_UNREACHABLE)
|
||||||
|
|
||||||
def v2_on_file_diff(self, result):
|
def v2_on_file_diff(self, result):
|
||||||
if 'diff' in result._result and result._result['diff']:
|
if 'diff' in result._result and result._result['diff']:
|
||||||
|
|
|
@ -52,24 +52,24 @@ class CallbackModule(CallbackBase):
|
||||||
msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception'].replace('\n','')
|
msg = "An exception occurred during task execution. The full traceback is:\n" + result._result['exception'].replace('\n','')
|
||||||
|
|
||||||
if result._task.action in C.MODULE_NO_JSON:
|
if result._task.action in C.MODULE_NO_JSON:
|
||||||
self._display.display(self._command_generic_msg(result._host.get_name(), result._result,'FAILED'), color='red')
|
self._display.display(self._command_generic_msg(result._host.get_name(), result._result,'FAILED'), color=C.COLOR_ERROR)
|
||||||
else:
|
else:
|
||||||
self._display.display(msg, color='red')
|
self._display.display(msg, color=C.COLOR_ERROR)
|
||||||
|
|
||||||
# finally, remove the exception from the result so it's not shown every time
|
# finally, remove the exception from the result so it's not shown every time
|
||||||
del result._result['exception']
|
del result._result['exception']
|
||||||
|
|
||||||
self._display.display("%s | FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result, indent=0).replace('\n','')), color='red')
|
self._display.display("%s | FAILED! => %s" % (result._host.get_name(), self._dump_results(result._result, indent=0).replace('\n','')), color=C.COLOR_ERROR)
|
||||||
|
|
||||||
def v2_runner_on_ok(self, result):
|
def v2_runner_on_ok(self, result):
|
||||||
if result._task.action in C.MODULE_NO_JSON:
|
if result._task.action in C.MODULE_NO_JSON:
|
||||||
self._display.display(self._command_generic_msg(result._host.get_name(), result._result,'SUCCESS'), color='green')
|
self._display.display(self._command_generic_msg(result._host.get_name(), result._result,'SUCCESS'), color=C.COLOR_OK)
|
||||||
else:
|
else:
|
||||||
self._display.display("%s | SUCCESS => %s" % (result._host.get_name(), self._dump_results(result._result, indent=0).replace('\n','')), color='green')
|
self._display.display("%s | SUCCESS => %s" % (result._host.get_name(), self._dump_results(result._result, indent=0).replace('\n','')), color=C.COLOR_OK)
|
||||||
|
|
||||||
|
|
||||||
def v2_runner_on_unreachable(self, result):
|
def v2_runner_on_unreachable(self, result):
|
||||||
self._display.display("%s | UNREACHABLE!" % result._host.get_name(), color='yellow')
|
self._display.display("%s | UNREACHABLE!" % result._host.get_name(), color=C.COLOR_UNREACHABLE)
|
||||||
|
|
||||||
def v2_runner_on_skipped(self, result):
|
def v2_runner_on_skipped(self, result):
|
||||||
self._display.display("%s | SKIPPED" % (result._host.get_name()), color='cyan')
|
self._display.display("%s | SKIPPED" % (result._host.get_name()), color=C.COLOR_SKIP)
|
||||||
|
|
|
@ -62,7 +62,8 @@ codeCodes = {
|
||||||
'purple': u'0;35', 'bright red': u'1;31',
|
'purple': u'0;35', 'bright red': u'1;31',
|
||||||
'yellow': u'0;33', 'bright purple': u'1;35',
|
'yellow': u'0;33', 'bright purple': u'1;35',
|
||||||
'dark gray': u'1;30', 'bright yellow': u'1;33',
|
'dark gray': u'1;30', 'bright yellow': u'1;33',
|
||||||
'normal': u'0'
|
'magenta': u'0;35', 'bright magenta': u'1;35',
|
||||||
|
'normal': u'0' ,
|
||||||
}
|
}
|
||||||
|
|
||||||
def stringc(text, color):
|
def stringc(text, color):
|
||||||
|
|
|
@ -145,7 +145,7 @@ class Display:
|
||||||
# characters that are invalid in the user's locale
|
# characters that are invalid in the user's locale
|
||||||
msg2 = to_unicode(msg2, self._output_encoding(stderr=stderr))
|
msg2 = to_unicode(msg2, self._output_encoding(stderr=stderr))
|
||||||
|
|
||||||
if color == 'red':
|
if color == C.COLOR_ERROR:
|
||||||
logger.error(msg2)
|
logger.error(msg2)
|
||||||
else:
|
else:
|
||||||
logger.info(msg2)
|
logger.info(msg2)
|
||||||
|
@ -168,7 +168,7 @@ class Display:
|
||||||
def debug(self, msg):
|
def debug(self, msg):
|
||||||
if C.DEFAULT_DEBUG:
|
if C.DEFAULT_DEBUG:
|
||||||
debug_lock.acquire()
|
debug_lock.acquire()
|
||||||
self.display("%6d %0.5f: %s" % (os.getpid(), time.time(), msg), color='dark gray')
|
self.display("%6d %0.5f: %s" % (os.getpid(), time.time(), msg), color=C.COLOR_DEBUG)
|
||||||
debug_lock.release()
|
debug_lock.release()
|
||||||
|
|
||||||
def verbose(self, msg, host=None, caplevel=2):
|
def verbose(self, msg, host=None, caplevel=2):
|
||||||
|
@ -176,9 +176,9 @@ class Display:
|
||||||
#msg = utils.sanitize_output(msg)
|
#msg = utils.sanitize_output(msg)
|
||||||
if self.verbosity > caplevel:
|
if self.verbosity > caplevel:
|
||||||
if host is None:
|
if host is None:
|
||||||
self.display(msg, color='blue')
|
self.display(msg, color=C.COLOR_VERBOSE)
|
||||||
else:
|
else:
|
||||||
self.display("<%s> %s" % (host, msg), color='blue', screen_only=True)
|
self.display("<%s> %s" % (host, msg), color=C.COLOR_VERBOSE, screen_only=True)
|
||||||
|
|
||||||
def deprecated(self, msg, version=None, removed=False):
|
def deprecated(self, msg, version=None, removed=False):
|
||||||
''' used to print out a deprecation message.'''
|
''' used to print out a deprecation message.'''
|
||||||
|
@ -199,7 +199,7 @@ class Display:
|
||||||
new_msg = "\n".join(wrapped) + "\n"
|
new_msg = "\n".join(wrapped) + "\n"
|
||||||
|
|
||||||
if new_msg not in self._deprecations:
|
if new_msg not in self._deprecations:
|
||||||
self.display(new_msg.strip(), color='purple', stderr=True)
|
self.display(new_msg.strip(), color=C.COLOR_DEPRECATE, stderr=True)
|
||||||
self._deprecations[new_msg] = 1
|
self._deprecations[new_msg] = 1
|
||||||
|
|
||||||
def warning(self, msg):
|
def warning(self, msg):
|
||||||
|
@ -207,7 +207,7 @@ class Display:
|
||||||
wrapped = textwrap.wrap(new_msg, self.columns)
|
wrapped = textwrap.wrap(new_msg, self.columns)
|
||||||
new_msg = "\n".join(wrapped) + "\n"
|
new_msg = "\n".join(wrapped) + "\n"
|
||||||
if new_msg not in self._warns:
|
if new_msg not in self._warns:
|
||||||
self.display(new_msg, color='bright purple', stderr=True)
|
self.display(new_msg, color=C.COLOR_WARN, stderr=True)
|
||||||
self._warns[new_msg] = 1
|
self._warns[new_msg] = 1
|
||||||
|
|
||||||
def system_warning(self, msg):
|
def system_warning(self, msg):
|
||||||
|
@ -258,7 +258,7 @@ class Display:
|
||||||
else:
|
else:
|
||||||
new_msg = msg
|
new_msg = msg
|
||||||
if new_msg not in self._errors:
|
if new_msg not in self._errors:
|
||||||
self.display(new_msg, color='red', stderr=True)
|
self.display(new_msg, color=C.COLOR_ERROR, stderr=True)
|
||||||
self._errors[new_msg] = 1
|
self._errors[new_msg] = 1
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
Loading…
Reference in a new issue