Keep result pristine for ignore_errors

This commit is contained in:
Daniel Hokka Zakrisson 2012-09-04 22:40:07 +02:00
parent 7c2fe3da16
commit 7a201dbb2e
3 changed files with 4 additions and 8 deletions

View file

@ -76,11 +76,12 @@ class AggregateStats(object):
prev = (getattr(self, what)).get(host, 0)
getattr(self, what)[host] = prev+1
def compute(self, runner_results, setup=False, poll=False):
def compute(self, runner_results, setup=False, poll=False, ignore_errors=False):
''' walk through all results and increment stats '''
for (host, value) in runner_results.get('contacted', {}).iteritems():
if ('failed' in value and bool(value['failed'])) or ('rc' in value and value['rc'] != 0):
if not ignore_errors and (('failed' in value and bool(value['failed'])) or
('rc' in value and value['rc'] != 0)):
self._increment('failures', host)
elif 'skipped' in value and bool(value['skipped']):
self._increment('skipped', host)

View file

@ -246,7 +246,7 @@ class PlayBook(object):
if results is None:
results = {}
self.stats.compute(results)
self.stats.compute(results, ignore_errors=task.ignore_errors)
# add facts to the global setup cache
for host, result in results['contacted'].iteritems():

View file

@ -616,11 +616,6 @@ class Runner(object):
elif not result.is_successful():
ignore_errors = self.module_vars.get('ignore_errors', False)
self.callbacks.on_failed(host, data, ignore_errors)
if ignore_errors:
if 'failed' in result.result:
result.result['failed'] = False
if 'rc' in result.result:
result.result['rc'] = 0
else:
self.callbacks.on_ok(host, data)
return result