コード例 #1
0
ファイル: task_handler.py プロジェクト: dennybaa/mistral
def defer_task(wf_cmd):
    """Defers a task"""
    ctx = wf_cmd.ctx
    wf_ex = wf_cmd.wf_ex
    task_spec = wf_cmd.task_spec

    if not wf_utils.find_task_executions_by_spec(wf_ex, task_spec):
        _create_task_execution(wf_ex, task_spec, ctx, state=states.WAITING)
コード例 #2
0
    def _find_task_execution_by_spec(self, task_spec):
        in_t_execs = wf_utils.find_task_executions_by_spec(
            self.wf_ex,
            task_spec
        )

        # TODO(rakhmerov): Temporary hack. See the previous comment.
        return in_t_execs[-1] if in_t_execs else None
コード例 #3
0
    def evaluate_workflow_final_context(self):
        task_execs = wf_utils.find_task_executions_by_spec(self.wf_ex, self._get_target_task_specification())

        # NOTE: For reverse workflow there can't be multiple
        # executions for one task.
        assert len(task_execs) <= 1

        return data_flow.evaluate_task_outbound_context(task_execs[0])
コード例 #4
0
ファイル: task_handler.py プロジェクト: rocky11030/mistral
def defer_task(wf_cmd):
    """Defers a task"""
    ctx = wf_cmd.ctx
    wf_ex = wf_cmd.wf_ex
    task_spec = wf_cmd.task_spec

    if not wf_utils.find_task_executions_by_spec(wf_ex, task_spec):
        _create_task_execution(wf_ex, task_spec, ctx, state=states.WAITING)
コード例 #5
0
    def evaluate_workflow_final_context(self):
        task_execs = wf_utils.find_task_executions_by_spec(
            self.wf_ex, self._get_target_task_specification())

        # NOTE: For reverse workflow there can't be multiple
        # executions for one task.
        assert len(task_execs) <= 1

        return data_flow.evaluate_task_outbound_context(task_execs[0])
コード例 #6
0
ファイル: direct_workflow.py プロジェクト: recio862/mistral
    def _triggers_join(self, join_task_spec, inbound_task_spec):
        in_t_execs = wf_utils.find_task_executions_by_spec(
            self.wf_ex, inbound_task_spec)

        # TODO(rakhmerov): Temporary hack. See the previous comment.
        in_t_ex = in_t_execs[-1] if in_t_execs else None

        if not in_t_ex or not states.is_completed(in_t_ex.state):
            return False

        return list(
            filter(lambda t_name: join_task_spec.get_name() == t_name,
                   self._find_next_task_names(in_t_ex)))
コード例 #7
0
    def _is_satisfied_task(self, task_spec):
        if wf_utils.find_task_executions_by_spec(self.wf_ex, task_spec):
            return False

        if not self.wf_spec.get_task_requires(task_spec):
            return True

        success_t_names = set()

        for t_ex in self.wf_ex.task_executions:
            if t_ex.state == states.SUCCESS:
                success_t_names.add(t_ex.name)

        return not (set(self.wf_spec.get_task_requires(task_spec)) - success_t_names)
コード例 #8
0
    def _is_satisfied_task(self, task_spec):
        if wf_utils.find_task_executions_by_spec(self.wf_ex, task_spec):
            return False

        if not self.wf_spec.get_task_requires(task_spec):
            return True

        success_t_names = set()

        for t_ex in self.wf_ex.task_executions:
            if t_ex.state == states.SUCCESS:
                success_t_names.add(t_ex.name)

        return not (set(self.wf_spec.get_task_requires(task_spec)) -
                    success_t_names)
コード例 #9
0
    def _triggers_join(self, join_task_spec, inbound_task_spec):
        in_t_execs = wf_utils.find_task_executions_by_spec(
            self.wf_ex,
            inbound_task_spec
        )

        # TODO(rakhmerov): Temporary hack. See the previous comment.
        in_t_ex = in_t_execs[-1] if in_t_execs else None

        if not in_t_ex or not states.is_completed(in_t_ex.state):
            return False

        return list(
            filter(
                lambda t_name: join_task_spec.get_name() == t_name,
                self._find_next_task_names(in_t_ex)
            )
        )
コード例 #10
0
    def defer(self):
        """Defers task.

        This methods finds task execution or creates new and puts task
        to a waiting state.
        """

        if not self.task_ex:
            self.task_ex = wf_utils.find_task_executions_by_spec(
                self.wf_ex,
                self.task_spec
            )

        if not self.task_ex:
            self._create_task_execution()

        self.set_state(states.WAITING, 'Task execution is deferred.')

        self.waiting = True