def run_next_plugin(context, requirements=None, interactive=False, clear_down=True, done_requirements=None, outputs=None): discover = discover_single if not interactive: discover = discover.delay to_run = plugin.next('discovery', requirements) - done_requirements if to_run: plugin_name = plugin.highest_priority('discovery', to_run) discover(context, plugin_name, requirements, interactive, clear_down, done_requirements) return to_run = plugin.next('postprocess', requirements) - done_requirements for plugin_name in plugin.prioritize('postprocess', to_run): _run_plugin(context, 'postprocess', plugin_name, requirements, interactive, clear_down, done_requirements, outputs)
def discover_single_synchro(ip): requirements = set() done_requirements = set() to_run = ['ping'] context = {'ip': ip} messages = [] def output(*args, **kwargs): messages.append(''.join(args)) messages.append(kwargs.get('end', '\n')) outputs = (output, output, output) while to_run: messages[:] = [] plugin_name = plugin.highest_priority('discovery', to_run) for retry in range(5): try: _run_plugin(context, 'discovery', plugin_name, requirements, True, False, done_requirements, outputs) except plugin.Restart: pass else: break else: messages.append('Plugin failed after %d retries.\n' % retry) to_run = plugin.next('discovery', requirements) - done_requirements yield ''.join(messages) yield '\n' to_run = plugin.next('postprocess', requirements) - done_requirements for plugin_name in plugin.prioritize('postprocess', to_run): messages[:] = [] _run_plugin(context, 'postprocess', plugin_name, requirements, True, False, done_requirements, outputs) yield ''.join(messages) yield '\n' yield 'Finished.\n'
def discover_single_synchro(ip): """Run discovery of a single host in a synchronous way.""" requirements = set() done_requirements = set() to_run = ['ping'] context = {'ip': ip} messages = [] def output(*args, **kwargs): messages.append(''.join(args)) messages.append(kwargs.get('end', '\n')) outputs = (output, output, output) while to_run: messages[:] = [] plugin_name = plugin.highest_priority('discovery', to_run) for retry in range(5): try: _run_plugin(context, 'discovery', plugin_name, requirements, True, False, done_requirements, outputs) except plugin.Restart: pass else: break else: messages.append('Plugin failed after %d retries.\n' % retry) to_run = plugin.next('discovery', requirements) - done_requirements yield ''.join(messages) yield '\n' to_run = plugin.next('postprocess', requirements) - done_requirements for plugin_name in plugin.prioritize('postprocess', to_run): messages[:] = [] _run_plugin(context, 'postprocess', plugin_name, requirements, True, False, done_requirements, outputs) yield ''.join(messages) yield '\n' yield 'Finished.\n'
def discover_single_synchro(ip): requirements = set() done_requirements = set() to_run = ["ping"] context = {"ip": ip} messages = [] def output(*args, **kwargs): messages.append("".join(args)) messages.append(kwargs.get("end", "\n")) outputs = (output, output, output) while to_run: messages[:] = [] plugin_name = plugin.highest_priority("discovery", to_run) for retry in range(5): try: _run_plugin(context, "discovery", plugin_name, requirements, True, False, done_requirements, outputs) except plugin.Restart: pass else: break else: messages.append("Plugin failed after %d retries.\n" % retry) to_run = plugin.next("discovery", requirements) - done_requirements yield "".join(messages) yield "\n" to_run = plugin.next("postprocess", requirements) - done_requirements for plugin_name in plugin.prioritize("postprocess", to_run): messages[:] = [] _run_plugin(context, "postprocess", plugin_name, requirements, True, False, done_requirements, outputs) yield "".join(messages) yield "\n" yield "Finished.\n"