def execute_stop_command(schedule_name, cli_args, print_fn): if not _is_dagster_home_set(): raise click.UsageError(dagster_home_error_message_for_command('dagster schedule stop ...')) handle = handle_for_repo_cli_args(cli_args) repository = handle.build_repository_definition() instance = DagsterInstance.get() schedule_handle = handle.build_scheduler_handle(artifacts_dir=instance.schedules_directory()) if not schedule_handle: print_fn("Scheduler not defined for repository {name}".format(name=repository.name)) return scheduler = schedule_handle.get_scheduler() try: schedule = scheduler.stop_schedule(schedule_name) except DagsterInvariantViolationError as ex: raise click.UsageError(ex) print_fn( "Stopped schedule {schedule_name} with ID {schedule_id}".format( schedule_name=schedule_name, schedule_id=schedule.schedule_id ) )
def execute_up_command(preview, cli_args, print_fn): if not _is_dagster_home_set(): raise click.UsageError( dagster_home_error_message_for_command('dagster schedule up')) handle = handle_for_repo_cli_args(cli_args) repository = handle.build_repository_definition() python_path = sys.executable repository_path = handle.data.repository_yaml instance = DagsterInstance.get() scheduler_handle = handle.build_scheduler_handle( artifacts_dir=instance.schedules_directory()) if not scheduler_handle: print_fn("Scheduler not defined for repository {name}".format( name=repository.name)) return print_changes(scheduler_handle, print_fn, preview=preview) if preview: return try: scheduler_handle.up(python_path, repository_path) except DagsterInvariantViolationError as ex: raise click.UsageError(ex)
def execute_list_command(running_filter, stopped_filter, name_filter, verbose, cli_args, print_fn): if not _is_dagster_home_set(): raise click.UsageError( dagster_home_error_message_for_command( 'dagster schedule list ...')) handle = handle_for_repo_cli_args(cli_args) repository = handle.build_repository_definition() instance = DagsterInstance.get() schedule_handle = handle.build_scheduler_handle( artifacts_dir=instance.schedules_directory()) if not schedule_handle and not name_filter: print_fn("Scheduler not defined for repository {name}".format( name=repository.name)) return scheduler = schedule_handle.get_scheduler() if not name_filter: title = 'Repository {name}'.format(name=repository.name) print_fn(title) print_fn('*' * len(title)) first = True if running_filter: schedules = scheduler.all_schedules(status=ScheduleStatus.RUNNING) elif stopped_filter: schedules = scheduler.all_schedules(status=ScheduleStatus.STOPPED) else: schedules = scheduler.all_schedules() for schedule in schedules: schedule_def = schedule_handle.get_schedule_def_by_name(schedule.name) # If --name filter is present, only print the schedule name if name_filter: print_fn(schedule_def.name) continue flag = "[{status}]".format( status=schedule.status.value) if schedule else "" schedule_title = 'Schedule: {name} {flag}'.format( name=schedule_def.name, flag=flag) if not first: print_fn('*' * len(schedule_title)) first = False print_fn(schedule_title) print_fn('Cron Schedule: {cron_schedule}'.format( cron_schedule=schedule_def.cron_schedule)) if verbose: print_fn('Execution Params: {execution_params}'.format( execution_params=schedule_def.execution_params))
def execute_restart_command(schedule_name, all_running_flag, cli_args, print_fn): if not _is_dagster_home_set(): raise click.UsageError( dagster_home_error_message_for_command('dagster schedule restart ...') ) handle = handle_for_repo_cli_args(cli_args) repository = handle.build_repository_definition() instance = DagsterInstance.get() schedule_handle = handle.build_scheduler_handle(artifacts_dir=instance.schedules_directory()) if not schedule_handle: print_fn("Scheduler not defined for repository {name}".format(name=repository.name)) return scheduler = schedule_handle.get_scheduler() if all_running_flag: for schedule in scheduler.all_schedules(): if schedule.status == ScheduleStatus.RUNNING: try: scheduler.stop_schedule(schedule.name) scheduler.start_schedule(schedule.name) except DagsterInvariantViolationError as ex: raise click.UsageError(ex) print_fn( "Restarted all running schedules for repository {name}".format(name=repository.name) ) else: schedule = scheduler.get_schedule_by_name(schedule_name) if schedule.status != ScheduleStatus.RUNNING: click.UsageError( "Cannot restart a schedule {name} because is not currently running".format( name=schedule.name ) ) try: scheduler.stop_schedule(schedule_name) scheduler.start_schedule(schedule_name) except DagsterInvariantViolationError as ex: raise click.UsageError(ex) print_fn( "Restarted schedule {schedule_name} with ID {schedule_id}".format( schedule_name=schedule_name, schedule_id=schedule.schedule_id ) )