def evaluate_results(self, callback): """ prepare the result of runner call for use with RunnerResults. """ for server, result in callback.unreachable.items(): log.error(u'{} could not be reached'.format(server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_unreachable: continue self.trigger_event(server, 'on_unreachable_host', (self, server)) for server, answer in callback.contacted.items(): success = answer['success'] result = answer['result'] # none of the modules in our tests hit the 'failed' result # codepath (which seems to not be implemented by all modules) # seo we ignore this branch since it's rather trivial if result.get('failed'): # pragma: no cover success = False if 'rc' in result: if self.api.is_valid_return_code(result['rc']): success = True # Add success to result result['success'] = success if not success: log.error(u'{} failed on {}'.format(self, server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_errors: continue self.trigger_event(server, 'on_module_error', (self, server, result)) # XXX this is a weird structure because RunnerResults still works # like it did with Ansible 1.x, where the results where structured # like this return RunnerResults({ 'contacted': { server: answer['result'] for server, answer in callback.contacted.items() }, 'unreachable': { server: result for server, result in callback.unreachable.items() } })
def evaluate_results(self, callback): """ prepare the result of runner call for use with RunnerResults. """ for server, result in callback.unreachable.items(): log.error(u'{} could not be reached'.format(server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_unreachable: continue self.trigger_event(server, 'on_unreachable_host', ( self, server )) for server, answer in callback.contacted.items(): success = answer['success'] result = answer['result'] # none of the modules in our tests hit the 'failed' result # codepath (which seems to not be implemented by all modules) # seo we ignore this branch since it's rather trivial if result.get('failed'): # pragma: no cover success = False if 'rc' in result: if self.api.is_valid_return_code(result['rc']): success = True if not success: log.error(u'{} failed on {}'.format(self, server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_errors: continue self.trigger_event(server, 'on_module_error', ( self, server, result )) # XXX this is a weird structure because RunnerResults still works # like it did with Ansible 1.x, where the results where structured # like this return RunnerResults({ 'contacted': { server: answer['result'] for server, answer in callback.contacted.items() } })
def evaluate_results(self, callback): """ prepare the result of runner call for use with RunnerResults. """ for server, result in callback.unreachable.items(): log.error(u'{} could not be reached'.format(server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_unreachable: continue self.trigger_event(server, 'on_unreachable_host', ( self, server )) for server, answer in callback.contacted.items(): success = answer['success'] result = answer['result'] if 'failed' in result: success = False if 'rc' in result: if self.api.is_valid_return_code(result['rc']): success = True if not success: log.error(u'{} failed on {}'.format(self, server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_errors: continue self.trigger_event(server, 'on_module_error', ( self, server, result )) # XXX this is a weird structure because RunnerResults still works # like it did with Ansible 1.x, where the results where structured # like this return RunnerResults({ 'contacted': { server: answer['result'] for server, answer in callback.contacted.items() } })
def evaluate_results(self, callback): """ prepare the result of runner call for use with RunnerResults. """ for server, result in callback.unreachable.items(): log.error(u'{} could not be reached'.format(server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_unreachable: continue self.trigger_event(server, 'on_unreachable_host', (self, server)) for server, answer in callback.contacted.items(): success = answer['success'] result = answer['result'] if result.get('failed'): success = False if 'rc' in result: if self.api.is_valid_return_code(result['rc']): success = True if not success: log.error(u'{} failed on {}'.format(self, server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_errors: continue self.trigger_event(server, 'on_module_error', (self, server, result)) # XXX this is a weird structure because RunnerResults still works # like it did with Ansible 1.x, where the results where structured # like this return RunnerResults({ 'contacted': { server: answer['result'] for server, answer in callback.contacted.items() } })
def parse_results(self, results): """ Parses the result of runner call. """ unreachable_servers = results['dark'] for server, result in unreachable_servers.items(): log.error(u'{} could not be reached'.format(server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_unreachable: continue self.trigger_event(server, 'on_unreachable_host', ( self, server )) contacted_servers = results['contacted'] for server, result in contacted_servers.items(): failure = False if 'failed' in result: failure = True if 'rc' in result: if not self.api.is_valid_return_code(result['rc']): failure = True if failure: log.error(u'{} failed on {}'.format(self, server)) log.debug(u'ansible-output =>\n{}'.format(pformat(result))) if self.api.ignore_errors: continue self.trigger_event(server, 'on_module_error', ( self, server, result )) return results
def ignore_further_calls_to_server(self, server): """ Takes a server out of the list. """ log.error(u'ignoring further calls to {}'.format(server)) self.api.servers.remove(server)
def ignore_further_calls_to_server(self, server): """ Takes a server out of the list. """ log.error(u'ignoring further calls to {}'.format(server)) del self.api.inventory[server]