Beispiel #1
0
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
        )
    )
Beispiel #2
0
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)
Beispiel #3
0
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))
Beispiel #4
0
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
            )
        )