def test_roundtrip_run(): run = PipelineRun( pipeline_name='pipey_mcpipeface', run_id='8675309', environment_dict={'good': True}, mode='default', selector=ExecutionSelector('pipey_mcpipeface'), step_keys_to_execute=['step_1', 'step_2', 'step_3'], tags={'tag_it': 'bag_it'}, status=PipelineRunStatus.NOT_STARTED, previous_run_id='previousID', ) for field in run: # ensure we have a test value to round trip for each field assert field exec_params = execution_params_from_pipeline_run(run) assert run == pipeline_run_from_execution_params(exec_params) exec_params_gql = execution_params_from_graphql( exec_params.to_graphql_input()) assert exec_params_gql == exec_params assert run == pipeline_run_from_execution_params(exec_params_gql) empty_run = PipelineRun.create_empty_run('foo', 'bar') exec_params = execution_params_from_pipeline_run(empty_run) assert empty_run == pipeline_run_from_execution_params(exec_params) exec_params_gql = execution_params_from_graphql( exec_params.to_graphql_input()) assert exec_params_gql == exec_params assert empty_run == pipeline_run_from_execution_params(exec_params_gql)
def test_roundtrip_run(): run = PipelineRun( pipeline_name='pipey_mcpipeface', run_id='8675309', environment_dict={'good': True}, mode='default', selector=ExecutionSelector('pipey_mcpipeface'), step_keys_to_execute=['step_1', 'step_2', 'step_3'], tags={'tag_it': 'bag_it'}, status=PipelineRunStatus.NOT_STARTED, ) assert run == pipeline_run_from_execution_params( execution_params_from_pipeline_run(run)) empty_run = PipelineRun.create_empty_run('foo', 'bar') assert empty_run == pipeline_run_from_execution_params( execution_params_from_pipeline_run(empty_run))
def test_roundtrip_run(): run_with_snapshot = PipelineRun( pipeline_name='pipey_mcpipeface', run_id='8675309', environment_dict={'good': True}, mode='default', selector=ExecutionSelector('pipey_mcpipeface'), step_keys_to_execute=['step_1', 'step_2', 'step_3'], tags={'tag_it': 'bag_it'}, status=PipelineRunStatus.NOT_STARTED, root_run_id='previousID', parent_run_id='previousID', previous_run_id='previousID', pipeline_snapshot_id='pipey_mcpipeface_snapshot_id', ) for field in run_with_snapshot: # ensure we have a test value to round trip for each field assert field # The invariant that all the execution parameter structs # pipeline run can be constructed from each other is no longer # true. Clients of the GraphQL API cannot know the value of the # pipeline_snapshot_id prior to execution, because it is # constructed on the server. Hence these roundtrip tests # do not include snapshot_id run = run_with_snapshot._replace(pipeline_snapshot_id=None) exec_params = execution_params_from_pipeline_run(run) assert run == pipeline_run_from_execution_params(exec_params) exec_params_gql = execution_params_from_graphql(exec_params.to_graphql_input()) assert exec_params_gql == exec_params assert run == pipeline_run_from_execution_params(exec_params_gql) empty_run = PipelineRun.create_empty_run('foo', 'bar') exec_params = execution_params_from_pipeline_run(empty_run) assert empty_run == pipeline_run_from_execution_params(exec_params) exec_params_gql = execution_params_from_graphql(exec_params.to_graphql_input()) assert exec_params_gql == exec_params assert empty_run == pipeline_run_from_execution_params(exec_params_gql)
def _create_pipeline_run(instance, pipeline, execution_params): step_keys_to_execute = execution_params.step_keys if not execution_params.step_keys and execution_params.previous_run_id: execution_plan = create_execution_plan( pipeline, execution_params.environment_dict, run_config=RunConfig( mode=execution_params.mode, previous_run_id=execution_params.previous_run_id ), ) step_keys_to_execute = get_retry_steps_from_execution_plan(instance, execution_plan) return pipeline_run_from_execution_params(execution_params, step_keys_to_execute)
def start_pipeline_execution(graphene_info, execution_params, reexecution_config): check.inst_param(graphene_info, 'graphene_info', ResolveInfo) check.inst_param(execution_params, 'execution_params', ExecutionParams) check.opt_inst_param(reexecution_config, 'reexecution_config', ReexecutionConfig) instance = graphene_info.context.instance dauphin_pipeline = get_dauphin_pipeline_from_selector_or_raise( graphene_info, execution_params.selector ) get_validated_config( graphene_info, dauphin_pipeline, environment_dict=execution_params.environment_dict, mode=execution_params.mode, ) execution_plan = create_execution_plan( dauphin_pipeline.get_dagster_pipeline(), execution_params.environment_dict, run_config=RunConfig(mode=execution_params.mode), ) _check_start_pipeline_execution_errors( graphene_info, execution_params, execution_plan, reexecution_config ) run = instance.create_run( pipeline_run_from_execution_params(execution_params, reexecution_config) ) graphene_info.context.execution_manager.execute_pipeline( graphene_info.context.get_handle(), dauphin_pipeline.get_dagster_pipeline(), run, instance=instance, ) return graphene_info.schema.type_named('StartPipelineExecutionSuccess')( run=graphene_info.schema.type_named('PipelineRun')(run) )