Ejemplo n.º 1
0
    def _build_action(self):
        action_name = self.task_spec.get_action_name()
        wf_name = self.task_spec.get_workflow_name()

        # For dynamic workflow evaluation we regenerate the action.
        if wf_name:
            return actions.WorkflowAction(
                wf_name=self._evaluate_expression(wf_name),
                task_ex=self.task_ex)

        # For dynamic action evaluation we just regenerate the name.
        if action_name:
            action_name = self._evaluate_expression(action_name)

        if not action_name:
            action_name = 'std.noop'

        action_def = actions.resolve_action_definition(action_name,
                                                       self.wf_ex.name,
                                                       self.wf_spec.get_name())

        if action_def.spec:
            return actions.AdHocAction(action_def,
                                       task_ex=self.task_ex,
                                       task_ctx=self.ctx,
                                       wf_ctx=self.wf_ex.context)

        return actions.PythonAction(action_def, task_ex=self.task_ex)
Ejemplo n.º 2
0
def _build_action(action_ex):
    if isinstance(action_ex, models.WorkflowExecution):
        return actions.WorkflowAction(wf_name=action_ex.name,
                                      action_ex=action_ex)

    wf_name = None
    wf_spec_name = None

    if action_ex.workflow_name:
        wf_name = action_ex.workflow_name
        wf_spec = spec_parser.get_workflow_spec_by_execution_id(
            action_ex.task_execution.workflow_execution_id)
        wf_spec_name = wf_spec.get_name()

    adhoc_action_name = action_ex.runtime_context.get('adhoc_action_name')

    if adhoc_action_name:
        action_def = actions.resolve_action_definition(adhoc_action_name,
                                                       wf_name, wf_spec_name)

        return actions.AdHocAction(action_def, action_ex=action_ex)

    action_def = actions.resolve_action_definition(action_ex.name, wf_name,
                                                   wf_spec_name)

    return actions.PythonAction(action_def, action_ex=action_ex)
Ejemplo n.º 3
0
def _build_action(action_ex):
    if isinstance(action_ex, models.WorkflowExecution):
        return actions.WorkflowAction(wf_name=action_ex.name,
                                      action_ex=action_ex)

    action_desc = action_service.get_system_action_provider().find(
        action_ex.name, action_ex.workflow_namespace)

    if action_desc is None:
        raise exc.InvalidActionException(
            "Failed to find action [action_name=%s]" % action_ex.name)

    return actions.RegularAction(action_desc, action_ex)
Ejemplo n.º 4
0
    def _build_action(self):
        wf_name = self.task_spec.get_workflow_name()

        # A workflow name can be an expression so we reevaluate it.
        if wf_name:
            return actions.WorkflowAction(wf_name=self.evaluate(wf_name),
                                          task_ex=self.task_ex)

        action_desc = self._get_action_descriptor()

        return actions.RegularAction(action_desc=action_desc,
                                     task_ex=self.task_ex,
                                     task_ctx=self.ctx)
Ejemplo n.º 5
0
def _build_action(action_ex):
    if isinstance(action_ex, models.WorkflowExecution):
        return actions.WorkflowAction(wf_name=action_ex.name,
                                      action_ex=action_ex)

    adhoc_action_name = action_ex.runtime_context.get('adhoc_action_name')

    if adhoc_action_name:
        action_def = actions.resolve_action_definition(adhoc_action_name)

        return actions.AdHocAction(action_def, action_ex=action_ex)

    action_def = actions.resolve_action_definition(action_ex.name)

    return actions.PythonAction(action_def, action_ex=action_ex)
Ejemplo n.º 6
0
    def _build_action(self):
        action_name = self.task_spec.get_action_name()
        wf_name = self.task_spec.get_workflow_name()

        if wf_name:
            return actions.WorkflowAction(wf_name, task_ex=self.task_ex)

        if not action_name:
            action_name = 'std.noop'

        action_def = actions.resolve_action_definition(action_name,
                                                       self.wf_ex.name,
                                                       self.wf_spec.get_name())

        if action_def.spec:
            return actions.AdHocAction(action_def, task_ex=self.task_ex)

        return actions.PythonAction(action_def, task_ex=self.task_ex)
Ejemplo n.º 7
0
    def _build_action(self):
        action_name = self.task_spec.get_action_name()

        # When task do pass operation, use std.echo action replacing
        # default action which specification in yaml file. This action
        # will directly output the input data.
        if hasattr(self, '_task_action') and self._task_action == 'pass':
            action_name = 'std.echo'

        wf_name = self.task_spec.get_workflow_name()

        # For dynamic workflow evaluation we regenerate the action.
        if wf_name:
            return actions.WorkflowAction(
                wf_name=self._evaluate_expression(wf_name),
                task_ex=self.task_ex
            )

        # For dynamic action evaluation we just regenerate the name.
        if action_name:
            action_name = self._evaluate_expression(action_name)

        if not action_name:
            action_name = 'std.noop'

        action_def = actions.resolve_action_definition(
            action_name,
            self.wf_ex.name,
            self.wf_spec.get_name()
        )

        if action_def.spec:
            return actions.AdHocAction(action_def, task_ex=self.task_ex,
                                       task_ctx=self.ctx,
                                       wf_ctx=self.wf_ex.context)

        return actions.PythonAction(action_def, task_ex=self.task_ex)