Пример #1
0
def get_runner_module(name):
    """
    Load runner driver and return reference to the runner driver module.
    """

    # NOTE: For backward compatibility we also support "_" in place of "-"
    from stevedore.exception import NoMatches

    try:
        module = get_plugin_instance(RUNNERS_NAMESPACE,
                                     name,
                                     invoke_on_load=False)
    except NoMatches:
        name = name.replace('_', '-')

        try:
            module = get_plugin_instance(RUNNERS_NAMESPACE,
                                         name,
                                         invoke_on_load=False)
        except Exception as e:
            available_runners = get_available_plugins(
                namespace=RUNNERS_NAMESPACE)
            available_runners = ', '.join(available_runners)
            msg = (
                'Failed to find runner %s. Make sure that the runner is available and installed '
                'in StackStorm virtual environment. Available runners are: %s'
                % (name, available_runners))
            LOG.exception(msg)

            raise exc.ActionRunnerCreateError('%s\n\n%s' %
                                              (msg, six.text_type(e)))

    return module
Пример #2
0
def get_runner(package_name, module_name, config=None):
    """
    Load the module and return an instance of the runner.
    """

    if not package_name:
        # Backward compatibility for Pre 2.7.0 where package name always equaled module name
        package_name = module_name

    LOG.debug('Runner loading Python module: %s.%s', package_name, module_name)

    try:
        # TODO: Explore modifying this to support register_plugin
        module = register_runner(package_name=package_name,
                                 module_name=module_name)
    except Exception as e:
        msg = ('Failed to import runner module %s.%s' %
               (package_name, module_name))
        LOG.exception(msg)

        raise exc.ActionRunnerCreateError('%s\n\n%s' % (msg, str(e)))

    LOG.debug('Instance of runner module: %s', module)

    if config:
        runner_kwargs = {'config': config}
    else:
        runner_kwargs = {}

    runner = module.get_runner(**runner_kwargs)
    LOG.debug('Instance of runner: %s', runner)
    return runner
Пример #3
0
def get_runner(name, config=None):
    """
    Load the module and return an instance of the runner.
    """
    LOG.debug('Runner loading Python module: %s', name)

    # NOTE: For backward compatibility we also support "_" in place of "-"
    from stevedore.exception import NoMatches

    try:
        module = get_plugin_instance(RUNNERS_NAMESPACE,
                                     name,
                                     invoke_on_load=False)
    except NoMatches:
        name = name.replace('_', '-')

        try:
            module = get_plugin_instance(RUNNERS_NAMESPACE,
                                         name,
                                         invoke_on_load=False)
        except Exception as e:
            available_runners = get_available_plugins(
                namespace=RUNNERS_NAMESPACE)
            available_runners = ', '.join(available_runners)
            msg = (
                'Failed to find runner %s. Make sure that the runner is available and installed '
                'in StackStorm virtual environment. Available runners are: %s'
                % (name, available_runners))
            LOG.exception(msg)

            raise exc.ActionRunnerCreateError('%s\n\n%s' %
                                              (msg, six.text_type(e)))

    LOG.debug('Instance of runner module: %s', module)

    if config:
        runner_kwargs = {'config': config}
    else:
        runner_kwargs = {}

    runner = module.get_runner(**runner_kwargs)
    LOG.debug('Instance of runner: %s', runner)
    return runner