コード例 #1
0
ファイル: plugin_manager.py プロジェクト: tosobright/hoplite
import pkg_resources

from hoplite.utils import server_logging
logger = server_logging.get_server_logger(__name__)


class EntryPointManager(object):
    """
    Interface to the hoplite.jobs set of entry points
    """
    def __init__(self, group_name='hoplite.jobs'):
        self.entry_point_group_name = group_name

    def get_plugin_names(self):
        names = []
        for entry_point in self._entry_points():
            names.append(entry_point.name)
        return names

    def get_plugin_module_by_name(self, name):
        # TODO: Should we validate the module implements the correct methods
        # before returning it to the caller?
        for entry_point in self._entry_points():
            if entry_point.name == name:
                return entry_point.load()

    def _entry_points(self):
        # TODO: If it takes too long to reload pkg_resources, it might be worth
        # looking into only loading if a package
        # TODO: isn't found and then try again.
        reload(pkg_resources)  # makes sure entry points are up-to-date
コード例 #2
0
ファイル: job_plugins.py プロジェクト: ni/hoplite
from hoplite.utils import server_logging
from flask import Blueprint, request
from hoplite.api.helpers import job_manager, jsonify

logger = server_logging.get_server_logger(__name__)

bp = Blueprint("job_plugins", __name__)


@bp.route("")
def available_job_plugins():
    logger.debug(
        "HTTP: Get Available Job Plugins- From: {0}".format(
            request.remote_addr))
    return jsonify(job_plugins=job_manager.available_job_plugins())