def get_external_schedule_execution_data( self, instance, repository_handle, schedule_name, schedule_execution_data_mode, scheduled_execution_datetime_utc, ): check.inst_param(instance, "instance", DagsterInstance) check.inst_param(repository_handle, "repository_handle", RepositoryHandle) check.str_param(schedule_name, "schedule_name") check.inst_param(schedule_execution_data_mode, "schedule_execution_data_mode", ScheduleExecutionDataMode) check.opt_inst_param(scheduled_execution_datetime_utc, "scheduled_execution_datetime_utc", datetime) return sync_get_external_schedule_execution_data( instance, repository_handle, schedule_name, schedule_execution_data_mode, scheduled_execution_datetime_utc, )
def test_external_partitions_api(): repository_handle = get_bar_repo_handle() with seven.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) execution_data = sync_get_external_schedule_execution_data( instance, repository_handle, 'foo_schedule') assert isinstance(execution_data, ExternalScheduleExecutionData) assert execution_data.run_config is not None
def get_external_schedule_execution_data(self, instance, repository_handle, schedule_name): check.inst_param(instance, 'instance', DagsterInstance) check.inst_param(repository_handle, 'repository_handle', RepositoryHandle) check.str_param(schedule_name, 'schedule_name') return sync_get_external_schedule_execution_data( instance, repository_handle, schedule_name)
def get_schedule_yaml(graphene_info, external_schedule): check.inst_param(external_schedule, 'external_schedule', ExternalSchedule) handle = external_schedule.handle.repository_handle schedule_execution_data = sync_get_external_schedule_execution_data( graphene_info.context.instance, handle, external_schedule.name) if schedule_execution_data.error: return None run_config_yaml = yaml.safe_dump(schedule_execution_data.run_config, default_flow_style=False) return run_config_yaml if run_config_yaml else ''
def test_external_schedule_execution_data_api_preview(schedule_name): repository_handle = get_bar_repo_handle() with seven.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) execution_data = sync_get_external_schedule_execution_data( instance, repository_handle, schedule_name, ScheduleExecutionDataMode.PREVIEW, None, ) assert isinstance(execution_data, ExternalScheduleExecutionData) assert execution_data.run_config == {"fizz": "buzz"} assert execution_data.tags == {"dagster/schedule_name": schedule_name} assert execution_data.should_execute is None
def get_schedule_config(graphene_info, external_schedule): check.inst_param(external_schedule, 'external_schedule', ExternalSchedule) handle = external_schedule.handle.repository_handle result = sync_get_external_schedule_execution_data( graphene_info.context.instance, handle, external_schedule.name) if isinstance(result, ExternalScheduleExecutionData): run_config_yaml = yaml.safe_dump(result.run_config, default_flow_style=False) return graphene_info.schema.type_named('ScheduleRunConfig')( yaml=run_config_yaml if run_config_yaml else '') else: return graphene_info.schema.type_named('PythonError')(result.error)
def get_schedule_yaml(graphene_info, external_schedule): check.inst_param(external_schedule, 'external_schedule', ExternalSchedule) handle = external_schedule.handle.repository_handle result = sync_get_external_schedule_execution_data( graphene_info.context.instance, handle, external_schedule.name) if isinstance(result, ExternalScheduleExecutionData): run_config_yaml = yaml.safe_dump(result.run_config, default_flow_style=False) return run_config_yaml if run_config_yaml else '' else: # TODO: surface user-facing error here, using the serialized error # https://github.com/dagster-io/dagster/issues/2576 return None
def test_external_schedule_execution_data_api_never_execute(): repository_handle = get_bar_repo_handle() with seven.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) execution_data = sync_get_external_schedule_execution_data( instance, repository_handle, "foo_schedule_never_execute", ScheduleExecutionDataMode.LAUNCH_SCHEDULED_EXECUTION, ) assert isinstance(execution_data, ExternalScheduleExecutionData) assert execution_data.run_config == {} assert execution_data.tags == {} assert execution_data.should_execute == False
def test_external_schedule_execution_data_api_launch(): repository_handle = get_bar_repo_handle() with seven.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) execution_data = sync_get_external_schedule_execution_data( instance, repository_handle, 'foo_schedule', ScheduleExecutionDataMode.LAUNCH_SCHEDULED_EXECUTION, ) assert isinstance(execution_data, ExternalScheduleExecutionData) assert execution_data.run_config == {'fizz': 'buzz'} assert execution_data.tags == {'dagster/schedule_name': 'foo_schedule'} assert execution_data.should_execute == True
def test_include_execution_time(): repository_handle = get_bar_repo_handle() execution_time = get_current_datetime_in_utc() with instance_for_test() as instance: execution_data = sync_get_external_schedule_execution_data( instance, repository_handle, "foo_schedule_echo_time", ScheduleExecutionDataMode.LAUNCH_SCHEDULED_EXECUTION, execution_time, ) assert isinstance(execution_data, ExternalScheduleExecutionData) assert execution_data.run_config == {"passed_in_time": execution_time.isoformat()} assert execution_data.tags == {"dagster/schedule_name": "foo_schedule_echo_time"} assert execution_data.should_execute == True