Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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'
Beispiel #4
0
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'
Beispiel #5
0
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"