Esempio n. 1
0
def update_datadoc_schedule(id, cron=None, enabled=None, kwargs=None):
    if kwargs is not None:
        kwargs_valid, kwargs_valid_reason = validate_datadoc_schedule_config(
            kwargs)
        api_assert(kwargs_valid, kwargs_valid_reason)
    if cron is not None:
        api_assert(validate_cron(cron), "Invalid cron expression")

    schedule_name = schedule_logic.get_data_doc_schedule_name(id)
    with DBSession() as session:
        assert_can_write(id, session=session)

        schedule = schedule_logic.get_task_schedule_by_name(schedule_name,
                                                            session=session)
        api_assert(schedule, "Schedule does not exist")
        verify_data_doc_permission(id, session=session)

        updated_fields = {}
        if cron is not None:
            updated_fields["cron"] = cron
        if enabled is not None:
            updated_fields["enabled"] = enabled
        if kwargs is not None:
            updated_fields["kwargs"] = {
                **kwargs,
                "user_id": current_user.id,
                "doc_id": id,
            }

        return schedule_logic.update_task_schedule(
            schedule.id,
            session=session,
            **updated_fields,
        )
Esempio n. 2
0
def run_data_doc(id):
    schedule_name = schedule_logic.get_data_doc_schedule_name(id)
    with DBSession() as session:
        assert_can_write(id, session=session)
        verify_data_doc_permission(id, session=session)
        schedule = schedule_logic.get_task_schedule_by_name(schedule_name,
                                                            session=session)
        api_assert(schedule, "Schedule does not exist")
        run_and_log_scheduled_task(schedule.id, session=session)
Esempio n. 3
0
def delete_datadoc_schedule(id):
    schedule_name = schedule_logic.get_data_doc_schedule_name(id)
    with DBSession() as session:
        assert_can_write(id, session=session)
        verify_data_doc_permission(id, session=session)

        schedule = schedule_logic.get_task_schedule_by_name(schedule_name,
                                                            session=session)
        if schedule:
            schedule_logic.delete_task_schedule(schedule.id, session=session)
Esempio n. 4
0
def get_datadoc_schedule(id):
    with DBSession() as session:
        assert_can_read(id, session=session)
        verify_data_doc_permission(id, session=session)

        schedule_name = schedule_logic.get_data_doc_schedule_name(id)
        schedule = schedule_logic.get_task_schedule_by_name(schedule_name,
                                                            session=session)
        if not schedule:
            return None

        schedule_dict = schedule.to_dict()
        schedule_dict["kwargs"] = convert_if_legacy_datadoc_schedule(
            schedule_dict["kwargs"])
        return schedule_dict
Esempio n. 5
0
def sync_metastore_schedule_job(metastore_id, commit=False, session=None):
    metastore = get_query_metastore_by_id(metastore_id, session=session)

    task_schedule_name = get_metastore_schedule_job_name(metastore_id)
    task_schedule = get_task_schedule_by_name(task_schedule_name,
                                              session=session)

    if metastore and metastore.deleted_at is None:
        if not task_schedule:
            create_task_schedule(
                name=task_schedule_name,
                task="tasks.update_metastore.update_metastore",
                cron="0 0 * * *",
                args=[
                    metastore_id,
                ],
                commit=commit,
                session=session,
            )
    elif task_schedule:
        delete_task_schedule(task_schedule.id, commit=commit, session=session)
 def from_entry(cls, name, app=None, **entry):
     task_schedule = get_task_schedule_by_name(name)
     if not task_schedule:
         task_schedule = create_task_schedule(name=name,
                                              **cls._unpack_fields(**entry))
     return cls(model=task_schedule, app=app)