예제 #1
0
    def resolve_nodes(self, graphene_info):

        pipeline = get_pipeline_reference_or_raise(graphene_info,
                                                   self._pipeline_run.selector)

        if isinstance(pipeline, DauphinPipeline):
            pipeline_def = get_pipeline_def_from_selector(
                graphene_info, self._pipeline_run.selector)
            execution_plan = create_execution_plan(
                pipeline_def,
                self._pipeline_run.environment_dict,
                mode=self._pipeline_run.mode,
                step_keys_to_execute=self._pipeline_run.step_keys_to_execute,
            )
            execution_plan_index = ExecutionPlanIndex.from_plan_and_index(
                execution_plan, pipeline_def.get_pipeline_index())
        else:
            pipeline = None
            execution_plan = None
            execution_plan_index = None

        return [
            from_event_record(graphene_info, log, pipeline,
                              execution_plan_index) for log in
            graphene_info.context.instance.all_logs(self._pipeline_run.run_id)
        ]
예제 #2
0
    def resolve_executionPlan(self, graphene_info):
        if (self._pipeline_run.execution_plan_snapshot_id
                and self._pipeline_run.pipeline_snapshot_id):
            from .execution import DauphinExecutionPlan

            instance = graphene_info.context.instance
            execution_plan_snapshot = instance.get_execution_plan_snapshot(
                self._pipeline_run.execution_plan_snapshot_id)
            pipeline_snapshot = instance.get_pipeline_snapshot(
                self._pipeline_run.pipeline_snapshot_id)
            return (DauphinExecutionPlan(
                ExecutionPlanIndex(
                    execution_plan_snapshot=execution_plan_snapshot,
                    pipeline_index=PipelineIndex(pipeline_snapshot),
                ))
                    # check this in case fetches fail
                    if execution_plan_snapshot and pipeline_snapshot else None)
        else:
            # "legacy" code path for runs created before pipeline and
            # execution plan snapshots.
            pipeline = self.resolve_pipeline(graphene_info)

            if isinstance(pipeline, DauphinPipeline):
                selector = self._pipeline_run.selector
                environment_dict = self._pipeline_run.environment_dict
                mode = self._pipeline_run.mode

                pipeline_def = get_pipeline_def_from_selector(
                    graphene_info, selector)
                if is_config_valid(pipeline_def, environment_dict, mode):
                    return get_execution_plan(graphene_info, selector,
                                              environment_dict, mode)

            return None
예제 #3
0
 def resolve_executionPlan(self, graphene_info):
     pipeline = self.resolve_pipeline(graphene_info)
     if isinstance(pipeline, DauphinPipeline):
         execution_plan = create_execution_plan(
             get_pipeline_def_from_selector(graphene_info, self._pipeline_run.selector),
             self._pipeline_run.environment_dict,
             RunConfig(mode=self._pipeline_run.mode),
         )
         return graphene_info.schema.type_named('ExecutionPlan')(pipeline, execution_plan)
     else:
         return None
예제 #4
0
    def resolve_executionPlan(self, graphene_info):
        pipeline = self.resolve_pipeline(graphene_info)

        if isinstance(pipeline, DauphinPipeline):
            selector = self._pipeline_run.selector
            environment_dict = self._pipeline_run.environment_dict
            mode = self._pipeline_run.mode

            pipeline_def = get_pipeline_def_from_selector(
                graphene_info, selector)
            if is_config_valid(pipeline_def, environment_dict, mode):
                return get_execution_plan(graphene_info, selector,
                                          environment_dict, mode)

        return None
예제 #5
0
    def resolve_nodes(self, graphene_info):

        pipeline = get_pipeline_reference_or_raise(graphene_info, self._pipeline_run.selector)

        if isinstance(pipeline, DauphinPipeline):
            execution_plan = create_execution_plan(
                get_pipeline_def_from_selector(graphene_info, self._pipeline_run.selector),
                self._pipeline_run.environment_dict,
                RunConfig(mode=self._pipeline_run.mode),
            )
        else:
            pipeline = None
            execution_plan = None

        return [
            from_event_record(graphene_info, log, pipeline, execution_plan)
            for log in graphene_info.context.instance.all_logs(self._pipeline_run.run_id)
        ]
예제 #6
0
def create_execution_params(graphene_info, graphql_execution_params):

    preset_name = graphql_execution_params.get('preset')
    if preset_name:
        check.invariant(
            not graphql_execution_params.get('environmentConfigData'),
            'Invalid ExecutionParams. Cannot define environment_dict when using preset',
        )
        check.invariant(
            not graphql_execution_params.get('mode'),
            'Invalid ExecutionParams. Cannot define mode when using preset',
        )

        selector = graphql_execution_params['selector'].to_selector()
        check.invariant(
            not selector.solid_subset,
            'Invalid ExecutionParams. Cannot define selector.solid_subset when using preset',
        )
        pipeline_def = get_pipeline_def_from_selector(graphene_info, selector)

        if not pipeline_def.has_preset(preset_name):
            raise UserFacingGraphQLError(
                graphene_info.schema.type_named('PresetNotFoundError')(
                    preset=preset_name, selector=selector))

        preset = pipeline_def.get_preset(preset_name)

        return ExecutionParams(
            selector=ExecutionSelector(selector.name, preset.solid_subset),
            environment_dict=preset.environment_dict,
            mode=preset.mode,
            execution_metadata=create_execution_metadata(
                graphql_execution_params.get('executionMetadata')),
            step_keys=graphql_execution_params.get('stepKeys'),
            previous_run_id=graphql_execution_params.get('retryRunId'),
        )

    return execution_params_from_graphql(graphql_execution_params)