1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

corrected no_log for items and skipped tasks

corrected output from default callback
added new tests for no_log loops
updated makefile test to check for both positive and negative occurrences of no_log
This commit is contained in:
Brian Coca 2015-10-02 14:33:02 -04:00
parent 86ef20c73b
commit e2ae3215f6
5 changed files with 16 additions and 13 deletions

View file

@ -277,7 +277,7 @@ class TaskExecutor:
# variable not being present which would otherwise cause validation to fail # variable not being present which would otherwise cause validation to fail
if not self._task.evaluate_conditional(templar, variables): if not self._task.evaluate_conditional(templar, variables):
self._display.debug("when evaulation failed, skipping this task") self._display.debug("when evaulation failed, skipping this task")
return dict(changed=False, skipped=True, skip_reason='Conditional check failed') return dict(changed=False, skipped=True, skip_reason='Conditional check failed', _ansible_no_log=self._play_context.no_log)
# Now we do final validation on the task, which sets all fields to their final values. # Now we do final validation on the task, which sets all fields to their final values.
# In the case of debug tasks, we save any 'var' params and restore them after validating # In the case of debug tasks, we save any 'var' params and restore them after validating

View file

@ -108,15 +108,14 @@ class CallbackBase:
ret.append(">> the files are different, but the diff library cannot compare unicode strings\n\n") ret.append(">> the files are different, but the diff library cannot compare unicode strings\n\n")
def _get_item(self, result): def _get_item(self, result):
if '_ansible_no_log' in result: if '_ansible_no_log' in result and result['_ansible_no_log']:
item = "(censored due to no_log)" item = "(censored due to no_log)"
else: else:
item = getattr(result, 'item', "(censored due to no_log)") item = result['item']
return item return item
def _process_items(self, result): def _process_items(self, result):
for res in result._result['results']: for res in result._result['results']:
newres = deepcopy(result) newres = deepcopy(result)
res['item'] = self._get_item(res) res['item'] = self._get_item(res)

View file

@ -88,13 +88,13 @@ class CallbackModule(CallbackBase):
def v2_runner_on_skipped(self, result): def v2_runner_on_skipped(self, result):
if C.DISPLAY_SKIPPED_HOSTS: if C.DISPLAY_SKIPPED_HOSTS:
msg = "skipping: [%s]" % result._host.get_name()
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)
else: else:
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='cyan')
def v2_runner_on_unreachable(self, result): def v2_runner_on_unreachable(self, result):
if result._task.delegate_to: if result._task.delegate_to:

View file

@ -192,5 +192,6 @@ test_lookup_paths:
ansible-playbook lookup_paths/play.yml -i $(INVENTORY) -v $(TEST_FLAGS) ansible-playbook lookup_paths/play.yml -i $(INVENTORY) -v $(TEST_FLAGS)
no_log: no_log:
[ "$$(ansible-playbook no_log_local.yml -i $(INVENTORY) -vvvvv | grep DO_NOT_LOG)" = "" ] # This test expects 7 loggable vars and 0 non loggable ones, if either mismatches it fails, run the ansible-playbook command to debug
[ "$$(ansible-playbook no_log_local.yml -i $(INVENTORY) -vvvvv | awk -e 'BEGIN { logme = 0; nolog = 0; } /LOG_ME/ { logme += 1;} /DO_NOT_LOG/ { nolog += 1;} END { printf "%d/%d", logme, nolog; }')" = "7/0" ]

View file

@ -16,10 +16,11 @@
failed_when: true failed_when: true
ignore_errors: true ignore_errors: true
- name: failed item args should be logged in the absence of no_log - name: item args should be logged in the absence of no_log
shell: echo {{ item }} shell: echo {{ item }}
with_items: [ "LOG_ME_ITEM_FAILED" ] with_items: [ "LOG_ME_ITEM", "LOG_ME_SKIPPED", "LOG_ME_ITEM_FAILED" ]
failed_when: true when: item != "LOG_ME_SKIPPED"
failed_when: item == "LOG_ME_ITEM_FAILED"
ignore_errors: true ignore_errors: true
- name: args should not be logged when task-level no_log set - name: args should not be logged when task-level no_log set
@ -49,11 +50,13 @@
no_log: true no_log: true
when: false when: false
- name: skipped item args should be suppressed with no_log - name: items args should be suppressed with no_log in every state
shell: echo {{ item }} shell: echo {{ item }}
no_log: true no_log: true
with_items: [ "DO_NOT_LOG_ITEM_SKIPPED", "DO_NOT_LOG_ITEM_SKIPPED_2" ] with_items: [ "DO_NOT_LOG_ITEM", "DO_NOT_LOG_ITEM_SKIPPED", "DO_NOT_LOG_ITEM_FAILED" ]
when: item == False when: item != "DO_NOT_LOG_ITEM_SKIPPED"
failed_when: item == "DO_NOT_LOG_ITEM_FAILED"
ignore_errors: yes
- name: async task args should suppressed with no_log - name: async task args should suppressed with no_log
async: 10 async: 10