Ejemplo n.º 1
0
    def get_processor(
        cls,
        key=None,
        event_handler=None,
        popen=None,
        fs_util=None,
        host_selector=None,
    ):
        """Return a processor for the suite engine named by "key"."""

        if cls.SCHEME_HANDLER_MANAGER is None:
            path = os.path.dirname(
                os.path.dirname(sys.modules["metomi.rose"].__file__))
            cls.SCHEME_HANDLER_MANAGER = SchemeHandlersManager(
                [path],
                ns="rose.suite_engine_procs",
                attrs=["SCHEME"],
                can_handle=None,
                event_handler=event_handler,
                popen=popen,
                fs_util=fs_util,
                host_selector=host_selector,
            )
        if key is None:
            key = cls.SCHEME_DEFAULT
        x = cls.SCHEME_HANDLER_MANAGER.get_handler(key)
        return x
Ejemplo n.º 2
0
 def __init__(self, *args, **kwargs):
     Runner.__init__(self, *args, **kwargs)
     path = os.path.dirname(
         os.path.dirname(sys.modules["metomi.rose"].__file__))
     self.builtins_manager = SchemeHandlersManager([path], "rose.apps",
                                                   ["run"], None, *args,
                                                   **kwargs)
     self.date_time_oper = RoseDateTimeOperator()
Ejemplo n.º 3
0
    def _run(self, dao, app_runner, config):
        """Transform and archive suite files.

        This application is designed to work under "rose task-run" in a suite.

        """
        compress_manager = SchemeHandlersManager(
            [os.path.dirname(os.path.dirname(sys.modules["rose"].__file__))],
            "rose.apps.rose_arch_compressions",
            ["compress_sources"],
            None, app_runner)

        # Set up the targets
        s_key_tails = set()
        targets = []
        for t_key, t_node in sorted(config.value.items()):
            if t_node.is_ignored() or ":" not in t_key:
                continue
            s_key_head, s_key_tail = t_key.split(":", 1)
            if s_key_head != self.SECTION or not s_key_tail:
                continue

            # Determine target path.
            s_key_tail = t_key.split(":", 1)[1]
            try:
                s_key_tail = env_var_process(s_key_tail)
            except UnboundEnvironmentVariableError as exc:
                raise ConfigValueError([t_key, ""], "", exc)

            # If parenthesised target is optional.
            is_compulsory_target = True
            if s_key_tail.startswith("(") and s_key_tail.endswith(")"):
                s_key_tail = s_key_tail[1:-1]
                is_compulsory_target = False

            # Don't permit duplicate targets.
            if s_key_tail in s_key_tails:
                raise RoseArchDuplicateError([t_key], '', s_key_tail)
            else:
                s_key_tails.add(s_key_tail)

            target = self._run_target_setup(
                app_runner, compress_manager, config, t_key, s_key_tail,
                t_node, is_compulsory_target)
            old_target = dao.select(target.name)
            if old_target is None or old_target != target:
                dao.delete(target)
            else:
                target.status = target.ST_OLD
            targets.append(target)
        targets.sort(key=lambda target: target.name)
        # Delete from database items that are no longer relevant
        dao.delete_all(filter_targets=targets)
        # Update the targets
        for target in targets:
            self._run_target_update(dao, app_runner, compress_manager, target)
        return [target.status for target in targets].count(
            RoseArchTarget.ST_BAD)
Ejemplo n.º 4
0
 def __init__(self, event_handler=None, popen=None):
     if event_handler is None:
         event_handler = Reporter()
     self.event_handler = event_handler
     if popen is None:
         popen = RosePopener(self.event_handler)
     self.popen = popen
     path = os.path.dirname(
         os.path.dirname(sys.modules["metomi.rosie"].__file__))
     self.usertools_manager = SchemeHandlersManager([path],
                                                    "rosie.usertools",
                                                    ["get_emails"])
Ejemplo n.º 5
0
 def __init__(self, event_handler=None, popen=None):
     super(RosieSvnPostCommitHook, self).__init__(event_handler, popen)
     self.usertools_manager = SchemeHandlersManager([self.path],
                                                    "rosie.usertools",
                                                    ["get_emails"])